sdk/v2.42.0
ruvnet/RuVectorsdk/v2.42.0Sep 28, 2026by twenty-pr[bot]
Upgrading?
AI Summary
A specific SDK release focusing on breaking changes in the UI library, API modifications, and the removal of legacy components.
Key Highlights
- UI library refactor: Modal replaced by Dialog, AppTooltip by Tooltip
- react-router upgraded to v7
- File upload API changes (contentType removed)
- Removal of generateApplicationToken mutation
Breaking Changes
- FeatureFlagKey.IS_RECORD_CREATION_FORM_ENABLED removed
- SelectableList preselects first item by default
- IconButton rebuilt on shared Button API
- Modal, AppTooltip, and various Button exports removed
- Code editor moves to new entry point with peer dependencies
- Legacy tab exports removed
- Application tokens restricted to own app's variables
- MenuItemSwitch and MenuItemNavigate removed
- Legacy picker row components removed
- react-router requirement updated to ^7.18.4
- AnimatedButton and FloatingButton removed
- Classify workflow node model choice removed
- generateApplicationToken mutation removed
New Features
- defineHealthCheck export for app configuration status
- defineSettingsMenuItem export for settings pages
- updateManyObjects mutation for bulk metadata updates
- Optional readability field in UpdateObjectPayload
Full Release Notes
<!-- generated-release-notes v1 -->
`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](https://github.com/twentyhq/twenty/pull/25907)) by @thomtrp
- SelectableList now preselects its first item by default; set shouldPreselectFirstItem={false} to restore the previous behavior. ([#26037](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26085)) by @bosiraphael
- Modal is removed from twenty-ui; replace it with the new compound Dialog built on Base UI. ([#26087](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26192)) by @prastoin
- MenuItemSwitch and MenuItemNavigate are removed from twenty-ui; replace them with SettingsRow and ListItem respectively. ([#26200](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26205)) by @martmull
- Legacy single- and multi-select picker row components are removed from twenty-ui; replace them with ListItem compositions. ([#26211](https://github.com/twentyhq/twenty/pull/26211)) by @bosiraphael
- FloatingIconButton and FloatingIconButtonGroup are removed; use IconButton with the elevated variant instead. ([#26213](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26232)) by @charlesBochet
- AnimatedButton and AnimatedLightIconButton are removed; use Button with AnimatedIconCrossfade for edit-action animations. ([#26276](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26291)) by @Bonapara
- FloatingButton, FloatingButtonGroup, and ColorPickerButton are removed from twenty-ui exports with no replacement. ([#26293](https://github.com/twentyhq/twenty/pull/26293)) by @bosiraphael
- CreateNewButton wrapper is removed from twenty-ui; use ListItem for dropdown menu rows. ([#26297](https://github.com/twentyhq/twenty/pull/26297)) by @bosiraphael
- MetadataApiClient.uploadFile now takes { fileBuffer, filename, fieldMetadataUniversalIdentifier }; remove the contentType argument — files upload directly to storage. ([#26305](https://github.com/twentyhq/twenty/pull/26305)) by @martmull
- The workflow 'AI Agent' action type is renamed to 'Agent'; update any code referencing this action label or type string. ([#26363](https://github.com/twentyhq/twenty/pull/26363)) by @thomtrp
- The generateApplicationToken GraphQL mutation is removed; delete any calls to it — the server now computes the application-scoped schema internally. ([#26439](https://github.com/twentyhq/twenty/pull/26439)) by @prastoin
## 🌟 Highlights
- `generateApplicationToken` is removed; the server now computes the application-scoped schema internally — delete any calls to this mutation. ([#26439](https://github.com/twentyhq/twenty/pull/26439))
- `MetadataApiClient.uploadFile` now takes `{ fileBuffer, filename, fieldMetadataUniversalIdentifier }` — remove the `contentType` argument; files upload directly to storage. ([#26305](https://github.com/twentyhq/twenty/pull/26305))
- `Modal` is removed from `twenty-ui`; replace it with the new compound `Dialog` built on Base UI. ([#26087](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26277))
## ✨ New features
- New updateManyObjects mutation lets you update multiple object metadata entries in a single workspace migration instead of N separate calls. ([#26105](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26277)) by @martmull
- New defineSettingsMenuItem lets apps declare multiple settings pages that appear in the Twenty settings navigation. ([#26302](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26427)) by @martmull
## 💅 Improvements & UX
- twenty-ui now formally separates 43 primitives from 31 shared components; public import paths are unchanged. ([#26207](https://github.com/twentyhq/twenty/pull/26207)) by @bosiraphael
## 🐛 Bug fixes
- Banner button borders and hover/pressed colors are restored after the button migration stripped them. ([#26135](https://github.com/twentyhq/twenty/pull/26135)) by @bosiraphael
- fix(client-sdk): externalize all Node builtins in Vite lib build ([#26234](https://github.com/twentyhq/twenty/pull/26234)) by @AyeshaWaseemAhmad
- isSafeUrl in twenty-shared now rejects backslash-based scheme-relative URLs like /\evil.com that previously returned true. ([#26397](https://github.com/twentyhq/twenty/pull/26397)) by @Belkouche
## 🔧 Developer & API
- Missing dependency added to create-twenty-app; scaffolded projects no longer fail on install. ([#26133](https://github.com/twentyhq/twenty/pull/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](https://github.com/twentyhq/twenty/pull/26288)) by @Weiko
- twenty app deploy now uploads tarballs directly to file storage, removing the 100 MB in-process buffer that previously applied. ([#26314](https://github.com/twentyhq/twenty/pull/26314)) by @martmull
<details>
<summary>🏗️ Internal changes (19)</summary>
- Add async CSV export server behind a workspace flag ([#25987](https://github.com/twentyhq/twenty/pull/25987)) by @Weiko
- Hard-delete views and their children instead of soft-deleting them ([#26002](https://github.com/twentyhq/twenty/pull/26002)) by @Weiko
- [forms 2/3] Improve record form field presentation ([#26031](https://github.com/twentyhq/twenty/pull/26031)) by @Bonapara
- feat(usage-limit): cap workspace file storage with a stock limit kind ([#26042](https://github.com/twentyhq/twenty/pull/26042)) by @etiennejouan
- Bind CSV export downloads to their requesting session ([#26052](https://github.com/twentyhq/twenty/pull/26052)) by @Weiko
- feat: migrate workflow editor and actions to core IDs ([#26116](https://github.com/twentyhq/twenty/pull/26116)) by @thomtrp
- feat(usage-limit): cap workspace records with a stock limit ([#26147](https://github.com/twentyhq/twenty/pull/26147)) by @etiennejouan
- feat(workflow): make core workflow and workflow version syncable so definition changes broadcast ([#26158](https://github.com/twentyhq/twenty/pull/26158)) by @thomtrp
- chore(usage-limit): remove the API rate limit v2 feature flag ([#26169](https://github.com/twentyhq/twenty/pull/26169)) by @etiennejouan
- chore(usage-limit): remove the quota engine credit bound feature flag ([#26174](https://github.com/twentyhq/twenty/pull/26174)) by @etiennejouan
- AI chat: tool calls render as widgets named by the tool ([#26179](https://github.com/twentyhq/twenty/pull/26179)) by @FelixMalfait
- Only write audit log events for workspaces entitled to audit logs ([#26182](https://github.com/twentyhq/twenty/pull/26182)) by @neo773
- Defer slow workspace migration actions to a worker job ([#26222](https://github.com/twentyhq/twenty/pull/26222)) by @charlesBochet
- feat(ai): add evaluation models and a Classify workflow node ([#26225](https://github.com/twentyhq/twenty/pull/26225)) by @FelixMalfait
- feat(usage-limit): gate workflow node runs and logic function executions ([#26283](https://github.com/twentyhq/twenty/pull/26283)) by @etiennejouan
- Secure front component media capture ([#26303](https://github.com/twentyhq/twenty/pull/26303)) by @bosiraphael
- Give message campaigns their own send rate limit counters ([#26331](https://github.com/twentyhq/twenty/pull/26331)) by @neo773
- fix: separate connected account disconnect from deletion ([#26347](https://github.com/twentyhq/twenty/pull/26347)) by @neo773
- Load limits on view groups ([#26349](https://github.com/twentyhq/twenty/pull/26349)) by @Bonapara
</details>
## 🎉 New contributors
- @Maharsh17 made their first contribution in https://github.com/twentyhq/twenty/pull/26118
- @mdminhazulhaque made their first contribution in https://github.com/twentyhq/twenty/pull/26097
- @Atharva0222 made their first contribution in https://github.com/twentyhq/twenty/pull/25989
- @minnibaevB made their first contribution in https://github.com/twentyhq/twenty/pull/25991
- @alamin284 made their first contribution in https://github.com/twentyhq/twenty/pull/24327
- @longshaww made their first contribution in https://github.com/twentyhq/twenty/pull/24349
- @mini0n-ai made their first contribution in https://github.com/twentyhq/twenty/pull/25809
<details>
<summary>Full changelog (54 PRs)</summary>
- feat(record-form): make the record creation form the default path ([#25907](https://github.com/twentyhq/twenty/pull/25907)) by @thomtrp
- Add async CSV export server behind a workspace flag ([#25987](https://github.com/twentyhq/twenty/pull/25987)) by @Weiko
- Hard-delete views and their children instead of soft-deleting them ([#26002](https://github.com/twentyhq/twenty/pull/26002)) by @Weiko
- [forms 2/3] Improve record form field presentation ([#26031](https://github.com/twentyhq/twenty/pull/26031)) by @Bonapara
- [2/2 Sidebar] New customization experience ([#26037](https://github.com/twentyhq/twenty/pull/26037)) by @Bonapara
- feat(usage-limit): cap workspace file storage with a stock limit kind ([#26042](https://github.com/twentyhq/twenty/pull/26042)) by @etiennejouan
- Bind CSV export downloads to their requesting session ([#26052](https://github.com/twentyhq/twenty/pull/26052)) by @Weiko
- Unify Twenty UI icon buttons ([#26071](https://github.com/twentyhq/twenty/pull/26071)) by @bosiraphael
- Migrate Twenty UI headings ([#26085](https://github.com/twentyhq/twenty/pull/26085)) by @bosiraphael
- Replace Twenty UI Modal with Dialog ([#26087](https://github.com/twentyhq/twenty/pull/26087)) by @bosiraphael
- Migrate tooltips to Base UI ([#26088](https://github.com/twentyhq/twenty/pull/26088)) by @bosiraphael
- chore: bump version to 2.42.0 ([#26100](https://github.com/twentyhq/twenty/pull/26100)) by @twenty-pr
- [3/3 Sidebar] Bulk object metadata updates ([#26105](https://github.com/twentyhq/twenty/pull/26105)) by @Bonapara
- feat: migrate workflow editor and actions to core IDs ([#26116](https://github.com/twentyhq/twenty/pull/26116)) by @thomtrp
- Import missing dependency in create-twenty-app ([#26133](https://github.com/twentyhq/twenty/pull/26133)) by @martmull
- Fix UI builds without Monaco ([#26134](https://github.com/twentyhq/twenty/pull/26134)) by @bosiraphael
- Restore banner button colors ([#26135](https://github.com/twentyhq/twenty/pull/26135)) by @bosiraphael
- Migrate Twenty UI tab navigation ([#26142](https://github.com/twentyhq/twenty/pull/26142)) by @bosiraphael
- Migrate light icon buttons and groups ([#26144](https://github.com/twentyhq/twenty/pull/26144)) by @bosiraphael
- feat(usage-limit): cap workspace records with a stock limit ([#26147](https://github.com/twentyhq/twenty/pull/26147)) by @etiennejouan
- feat(workflow): make core workflow and workflow version syncable so definition changes broadcast ([#26158](https://github.com/twentyhq/twenty/pull/26158)) by @thomtrp
- chore(usage-limit): remove the API rate limit v2 feature flag ([#26169](https://github.com/twentyhq/twenty/pull/26169)) by @etiennejouan
- chore(usage-limit): remove the quota engine credit bound feature flag ([#26174](https://github.com/twentyhq/twenty/pull/26174)) by @etiennejouan
- AI chat: tool calls render as widgets named by the tool ([#26179](https://github.com/twentyhq/twenty/pull/26179)) by @FelixMalfait
- Only write audit log events for workspaces entitled to audit logs ([#26182](https://github.com/twentyhq/twenty/pull/26182)) by @neo773
- Scope application variable reads and updates to the calling application and workspace ([#26192](https://github.com/twentyhq/twenty/pull/26192)) by @prastoin
- Add SettingsRow and migrate legacy rows ([#26200](https://github.com/twentyhq/twenty/pull/26200)) by @bosiraphael
- chore: remove IS_APP_CLAIMING_ENABLED feature flag ([#26205](https://github.com/twentyhq/twenty/pull/26205)) by @martmull
- Separate Twenty UI primitives and components ([#26207](https://github.com/twentyhq/twenty/pull/26207)) by @bosiraphael
- Migrate picker rows to ListItem ([#26211](https://github.com/twentyhq/twenty/pull/26211)) by @bosiraphael
- Unify icon buttons with elevated styling ([#26213](https://github.com/twentyhq/twenty/pull/26213)) by @bosiraphael
- Defer slow workspace migration actions to a worker job ([#26222](https://github.com/twentyhq/twenty/pull/26222)) by @charlesBochet
- feat(ai): add evaluation models and a Classify workflow node ([#26225](https://github.com/twentyhq/twenty/pull/26225)) by @FelixMalfait
- Upgrade react-router to 7.18.4 ([#26232](https://github.com/twentyhq/twenty/pull/26232)) by @charlesBochet
- fix(client-sdk): externalize all Node builtins in Vite lib build ([#26234](https://github.com/twentyhq/twenty/pull/26234)) by @AyeshaWaseemAhmad
- Flag missing required application variables on the app settings page ([#26270](https://github.com/twentyhq/twenty/pull/26270)) by @martmull
- Consolidate animated buttons ([#26276](https://github.com/twentyhq/twenty/pull/26276)) by @bosiraphael
- Let apps report their own configuration state with defineHealthCheck ([#26277](https://github.com/twentyhq/twenty/pull/26277)) by @martmull
- feat(usage-limit): gate workflow node runs and logic function executions ([#26283](https://github.com/twentyhq/twenty/pull/26283)) by @etiennejouan
- Print export reasons in the pull report ([#26288](https://github.com/twentyhq/twenty/pull/26288)) by @Weiko
- [2/5 workflows] Improve workflow classifier configuration ([#26291](https://github.com/twentyhq/twenty/pull/26291)) by @Bonapara
- Remove unused Twenty UI buttons ([#26293](https://github.com/twentyhq/twenty/pull/26293)) by @bosiraphael
- Migrate dropdown menu rows to ListItem ([#26297](https://github.com/twentyhq/twenty/pull/26297)) by @bosiraphael
- Let apps declare several settings menu items with defineSettingsMenuItem ([#26302](https://github.com/twentyhq/twenty/pull/26302)) by @martmull
- Secure front component media capture ([#26303](https://github.com/twentyhq/twenty/pull/26303)) by @bosiraphael
- feat(client-sdk): upload files straight to storage from uploadFile ([#26305](https://github.com/twentyhq/twenty/pull/26305)) by @martmull
- feat(application): deploy app tarballs straight to file storage ([#26314](https://github.com/twentyhq/twenty/pull/26314)) by @martmull
- Give message campaigns their own send rate limit counters ([#26331](https://github.com/twentyhq/twenty/pull/26331)) by @neo773
- fix: separate connected account disconnect from deletion ([#26347](https://github.com/twentyhq/twenty/pull/26347)) by @neo773
- Load limits on view groups ([#26349](https://github.com/twentyhq/twenty/pull/26349)) by @Bonapara
- Rename workflow AI Agent to Agent and align node presentation ([#26363](https://github.com/twentyhq/twenty/pull/26363)) by @thomtrp
- fix(shared): reject scheme-relative backslash urls in isSafeUrl ([#26397](https://github.com/twentyhq/twenty/pull/26397)) by @Belkouche
- feat(object-metadata): allow updating readability through the metadata API ([#26427](https://github.com/twentyhq/twenty/pull/26427)) by @martmull
- [BREAKING_CHANGE] refactor(server): compute the application-scoped core schema server-side ([#26439](https://github.com/twentyhq/twenty/pull/26439)) by @prastoin
</details>
**Full Changelog**: https://github.com/twentyhq/twenty/compare/sdk/v2.41.0...sdk/v2.42.0
Related Repositories
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one