github twentyhq/twenty sdk/v2.33.0

latest releases: twenty/v2.36.0, twenty/v2.32.0
4 hours ago

Three breaking changes require action. LogicFunctionExecutionContext gains workspace and user identity; caller authority is now per call site. Catalog keys are role-scoped — existing translations must be re-keyed. The write API separates rename from translate.

Front components gain localStorage, sessionStorage, and recording APIs (getUserMedia, MediaRecorder), backed by the host page with per-app scoping. Declare frontComponentSharedDependencies in package.json to cut component output from ~190 KB to ~1.6 KB.

Manifest authoring expands. Throw RetryableLogicFunctionError for queue retries with backoff. Set isDeprecated: true to retire a variable without data loss. Add writability to restrict writes by layer. Add httpMethods for GET webhook challenges.

⚠️ Breaking changes

  • The default record-page stack (view fields, groups, layout, tabs, widgets) now uses deterministic universal identifiers; object renames no longer break view field or widget references. (#23651) by @prastoin
  • SidePanelExpandTarget.expand changed from a route descriptor to an opaque callback; any code that constructed this type must be updated. (#23965) by @FelixMalfait
  • Manifest catalog entries are now keyed per metadata role (object name, field label, tab title, etc.); existing app translation catalogs must be re-keyed to the new role-scoped format. (#24360) by @FelixMalfait
  • Rename and translate are now separate write operations; the metadataTranslations query returns provenance-aware rows — update any code that reads or writes metadata display names. (#24374) by @FelixMalfait
  • LogicFunctionExecutionContext now includes workspaceId, userId, triggerType, and retryCount; caller authority is declared at each call site with a new second argument — update every handler signature. (#24493) by @FelixMalfait

🌟 Highlights

  • LogicFunctionExecutionContext is expanded with workspace and user identity; caller authority is now set per call site — every logic function handler must update its signature. (#24493)
  • Metadata catalog entries are now keyed per role; any app with published translations must re-key its catalog to the new role-scoped format. (#24360)
  • localStorage and sessionStorage now work in front components, backed by the host page's storage with per-app and per-user key scoping. (#23761)
  • Declare frontComponentSharedDependencies in package.json to build one shared library bundle across all front components, cutting per-component size from ~190 KB to ~1.6 KB. (#23773)
  • Throw RetryableLogicFunctionError (from twenty-sdk/logic-function) to signal a transient failure and trigger automatic queue retries with fixed or exponential backoff. (#24317)

✨ New features

  • window.localStorage and window.sessionStorage now work inside front components, backed by the host page with per-app and per-user key scoping. (#23761) by @bosiraphael
  • Add frontComponentSharedDependencies to package.json to build one shared library bundle for all front components, cutting per-component output from ~190 KB to ~1.6 KB. (#23773) by @bosiraphael
  • Set isDeprecated: true on a serverVariables entry to retire it without losing the stored value; the variable stays injected so the app can fall back with process.env.NEW_KEY ?? process.env.OLD_KEY. (#23868) by @bosiraphael
  • navigator.mediaDevices.getUserMedia and MediaRecorder now work inside front components via polyfills bridged to the host page. (#24203) by @FelixMalfait
  • Add writability?: MetadataWritability to any object or field entry in your manifest to restrict writes to OPEN, APPLICATION, or SYSTEM level. (#24255) by @abdulrahmancodes
  • Throw RetryableLogicFunctionError (imported from twenty-sdk/logic-function) to signal a transient failure and trigger automatic queue retries with fixed or exponential backoff. (#24317) by @ehconitin
  • Add httpMethods: ['GET', 'POST'] to serverRouteTriggerSettings to accept GET challenge requests from webhook providers; undeclared methods return 405. (#24401) by @emmanuelhb56

💅 Improvements & UX

  • Translation catalogs now use message IDs at runtime in both the server and the front-component worker, resolving the previous mismatch between build-time and runtime key shapes. (#24325) by @FelixMalfait
  • Manifest placeholder syntax is unified; ${...} expressions that were previously untranslatable are migrated to the extractable format so those strings can now be localized. (#24326) by @FelixMalfait
  • timelineActivity.name is deprecated in favor of timelineActivityType; new code should read the type first and fall back to name — physical column removal is planned for a future release. (#24568) by @FelixMalfait

🐛 Bug fixes

  • Page layout names (e.g. 'Default Company Layout') are now extracted for translation and resolved per locale, matching other metadata display names. (#24315) by @FelixMalfait
  • twenty apply and twenty dev no longer delete stored locale rows when the local manifest omits a translations block. (#24408) by @FelixMalfait
  • twenty dev now schedules exactly one follow-up sync when a file change arrives mid-sync, preventing dropped changes and duplicate concurrent runs. (#24514) by @FelixMalfait

🔧 Developer & API

  • Packages temporarily published as 2.31.0-alpha.1; apps scaffolded with create-twenty-app automatically pinned to this prerelease. (#24011) by @prastoin
  • Alpha suffix removed; all three packages published at the release version. (#24059) by @prastoin
🏗️ Internal changes (12)
  • Allow going back to the previous onboarding step (#23716) by @bosiraphael
  • Add native call recording transcript tab to the calendar event record page (#23909) by @ehconitin
  • Enrich the onboarding chat kickoff with person and workspace context (#23970) by @bosiraphael
  • feat(billing): replace the credit balance column with a credit grant ledger (#23973) by @FelixMalfait
  • perf(server): remove the compact-storage flag, slice cache demotion, use a plain LIMIT on find-many (#23980) by @charlesBochet
  • feat(server): ORM v2, a TypeORM-free workspace read path behind a flag (#23991) by @charlesBochet
  • Send file attachments when answering an AI chat question (#24017) by @bosiraphael
  • Interface scale preference via root CSS zoom (#24209) by @FelixMalfait
  • refactor(i18n) - share the message-id hash and the translatable registry [1/6] (#24300) by @FelixMalfait
  • Move in-product explainer videos from feature flagged to GA (#24337) by @Bredo
  • feat(workflow): add core-backed workflows index page behind a flag (#24350) by @thomtrp
  • Reduce non-AI Sentry trace sampling (#24511) by @bosiraphael

🎉 New contributors

Full changelog (35 PRs)

Full Changelog: sdk/v2.30.0...sdk/v2.33.0

Don't miss a new twenty release

NewReleases is sending notifications on new releases.