github twentyhq/twenty sdk/v2.42.0

2 hours ago

twenty-ui ships a concentrated wave of breaking removals this release. Modal is replaced by a compound Dialog built on Base UI. AppTooltip gives way to the Base UI Tooltip API. Several button exports — FloatingButton, AnimatedButton, FloatingIconButton, and MenuItemSwitch among them — are deleted. The code editor moves to a new entry point and Monaco becomes an optional peer dependency. react-router jumps from v6 to v7 across twenty-ui and twenty-shared.

Two client-facing API calls change shape. MetadataApiClient.uploadFile drops contentType and takes a single object parameter; files go straight to storage. The generateApplicationToken mutation is removed.

Two new twenty-sdk exports land: defineHealthCheck reports app configuration health with a status and action link, and defineSettingsMenuItem registers settings pages in the Twenty navigation.

⚠️ Breaking changes

  • FeatureFlagKey.IS_RECORD_CREATION_FORM_ENABLED is removed from generated enums; delete any references to this flag in your code. (#25907) by @thomtrp
  • SelectableList now preselects its first item by default; set shouldPreselectFirstItem={false} to restore the previous behavior. (#26037) by @Bonapara
  • IconButton is rebuilt on the shared Button API with tooltip support built in; update any imports that relied on the previous standalone version. (#26071) by @bosiraphael
  • H1Title, H2Title, and H3Title are removed; use Heading from twenty-ui and its composed variants. Section.Root, Section.Header, and Dialog.Title are now exported. (#26085) by @bosiraphael
  • Modal is removed from twenty-ui; replace it with the new compound Dialog built on Base UI. (#26087) by @bosiraphael
  • AppTooltip is removed; replace it with the Base UI Tooltip API from twenty-ui. SDK and Preact sandbox fixes are deferred to a follow-up. (#26088) by @bosiraphael
  • Code editor moves to twenty-ui/components/code-editor; CoreEditorHeader is renamed CodeEditorHeader; add @monaco-editor/react and monaco-editor as explicit peer dependencies. (#26134) by @bosiraphael
  • Legacy tab exports are removed; replace them with Tabs for in-page selection and TabButton for links and actions from twenty-ui. (#26142) by @bosiraphael
  • Descriptor types and the icon-button menu adapter are removed; pass iconButtons as JSX directly and replace IconButtonGroup with ButtonGroup (frame is now an optional prop). (#26144) by @bosiraphael
  • Application tokens now only access their own app's variables; calls passing another app's applicationId to updateOneApplicationVariable, findOneApplication, or applicationVariables are refused. (#26192) by @prastoin
  • MenuItemSwitch and MenuItemNavigate are removed from twenty-ui; replace them with SettingsRow and ListItem respectively. (#26200) by @bosiraphael
  • FeatureFlagKey.IS_APP_CLAIMING_ENABLED is removed from the client SDK metadata schema and generated enums; delete any code that checks for this flag. (#26205) by @martmull
  • Legacy single- and multi-select picker row components are removed from twenty-ui; replace them with ListItem compositions. (#26211) by @bosiraphael
  • FloatingIconButton and FloatingIconButtonGroup are removed; use IconButton with the elevated variant instead. (#26213) by @bosiraphael
  • twenty-ui and twenty-shared now require react-router@^7.18.4; upgrade your own react-router-dom and remove any @remix-run/router dependency. (#26232) by @charlesBochet
  • AnimatedButton and AnimatedLightIconButton are removed; use Button with AnimatedIconCrossfade for edit-action animations. (#26276) by @bosiraphael
  • The Classify workflow node no longer accepts a model choice; Jev is the only evaluation model, and per-step and per-workspace model selectors are removed. (#26291) by @Bonapara
  • FloatingButton, FloatingButtonGroup, and ColorPickerButton are removed from twenty-ui exports with no replacement. (#26293) by @bosiraphael
  • CreateNewButton wrapper is removed from twenty-ui; use ListItem for dropdown menu rows. (#26297) by @bosiraphael
  • MetadataApiClient.uploadFile now takes { fileBuffer, filename, fieldMetadataUniversalIdentifier }; remove the contentType argument — files upload directly to storage. (#26305) by @martmull
  • The workflow 'AI Agent' action type is renamed to 'Agent'; update any code referencing this action label or type string. (#26363) by @thomtrp
  • The generateApplicationToken GraphQL mutation is removed; delete any calls to it — the server now computes the application-scoped schema internally. (#26439) by @prastoin

🌟 Highlights

  • generateApplicationToken is removed; the server now computes the application-scoped schema internally — delete any calls to this mutation. (#26439)
  • MetadataApiClient.uploadFile now takes { fileBuffer, filename, fieldMetadataUniversalIdentifier } — remove the contentType argument; files upload directly to storage. (#26305)
  • Modal is removed from twenty-ui; replace it with the new compound Dialog built on Base UI. (#26087)
  • The code editor moves to twenty-ui/components/code-editor; CoreEditorHeader is renamed CodeEditorHeader; add @monaco-editor/react and monaco-editor as peer dependencies. (#26134)
  • twenty-ui and twenty-shared now require react-router@^7.18.4; upgrade your own react-router-dom and remove any @remix-run/router dependency. (#26232)
  • New defineHealthCheck in twenty-sdk/define lets apps return a configuration status, title, and action link that Twenty surfaces on their settings page. (#26277)

✨ New features

  • New updateManyObjects mutation lets you update multiple object metadata entries in a single workspace migration instead of N separate calls. (#26105) by @Bonapara
  • Apps can mark applicationVariables entries as isRequired: true in their manifest; Twenty surfaces unset required variables in a banner on the app's settings page. (#26270) by @martmull
  • New defineHealthCheck export from twenty-sdk/define lets apps return a status, title, description, and optional action link that Twenty shows on their settings page. (#26277) by @martmull
  • New defineSettingsMenuItem lets apps declare multiple settings pages that appear in the Twenty settings navigation. (#26302) by @martmull
  • UpdateObjectPayload in the metadata API now accepts an optional readability field (OPEN or PRIVATE), so you can change object visibility without a manifest update. (#26427) by @martmull

💅 Improvements & UX

  • twenty-ui now formally separates 43 primitives from 31 shared components; public import paths are unchanged. (#26207) by @bosiraphael

🐛 Bug fixes

  • Banner button borders and hover/pressed colors are restored after the button migration stripped them. (#26135) by @bosiraphael
  • fix(client-sdk): externalize all Node builtins in Vite lib build (#26234) by @AyeshaWaseemAhmad
  • isSafeUrl in twenty-shared now rejects backslash-based scheme-relative URLs like /\evil.com that previously returned true. (#26397) by @Belkouche

🔧 Developer & API

  • Missing dependency added to create-twenty-app; scaffolded projects no longer fail on install. (#26133) by @martmull
  • yarn twenty pull now prints the export reason for each row, including warnings when a workspace override was not included in the export. (#26288) by @Weiko
  • twenty app deploy now uploads tarballs directly to file storage, removing the 100 MB in-process buffer that previously applied. (#26314) by @martmull
🏗️ Internal changes (19)
  • Add async CSV export server behind a workspace flag (#25987) by @Weiko
  • Hard-delete views and their children instead of soft-deleting them (#26002) by @Weiko
  • [forms 2/3] Improve record form field presentation (#26031) by @Bonapara
  • feat(usage-limit): cap workspace file storage with a stock limit kind (#26042) by @etiennejouan
  • Bind CSV export downloads to their requesting session (#26052) by @Weiko
  • feat: migrate workflow editor and actions to core IDs (#26116) by @thomtrp
  • feat(usage-limit): cap workspace records with a stock limit (#26147) by @etiennejouan
  • feat(workflow): make core workflow and workflow version syncable so definition changes broadcast (#26158) by @thomtrp
  • chore(usage-limit): remove the API rate limit v2 feature flag (#26169) by @etiennejouan
  • chore(usage-limit): remove the quota engine credit bound feature flag (#26174) by @etiennejouan
  • AI chat: tool calls render as widgets named by the tool (#26179) by @FelixMalfait
  • Only write audit log events for workspaces entitled to audit logs (#26182) by @neo773
  • Defer slow workspace migration actions to a worker job (#26222) by @charlesBochet
  • feat(ai): add evaluation models and a Classify workflow node (#26225) by @FelixMalfait
  • feat(usage-limit): gate workflow node runs and logic function executions (#26283) by @etiennejouan
  • Secure front component media capture (#26303) by @bosiraphael
  • Give message campaigns their own send rate limit counters (#26331) by @neo773
  • fix: separate connected account disconnect from deletion (#26347) by @neo773
  • Load limits on view groups (#26349) by @Bonapara

🎉 New contributors

Full changelog (54 PRs)

Full Changelog: sdk/v2.41.0...sdk/v2.42.0

Don't miss a new twenty release

NewReleases is sending notifications on new releases.