sdk/v2.42.0
microsoft/graphragsdk/v2.42.0Sep 28, 2026by twenty-pr[bot]
Upgrading?
AI Summary
A major UI overhaul involving the removal of legacy components and a shift to Base UI, alongside React Router v7 and API changes.
Key Highlights
- Modal is replaced by a compound Dialog built on Base UI
- IconButtons are rebuilt with tooltip support
- Code editor moves to a new entry point with Monaco as optional
- React Router jumps from v6 to v7
Breaking Changes
- FeatureFlagKey.IS_RECORD_CREATION_FORM_ENABLED is removed
- Modal is removed; replace it with the new compound Dialog
- AppTooltip is removed; replace it with the Base UI Tooltip API
- Code editor moves to twenty-ui/components/code-editor
- Legacy tab exports are removed
- Application tokens now only access their own app's variables
- Legacy picker row components are removed
- FloatingButton and FloatingIconButton are removed
- react-router now requires v7.18.4
- AnimatedButton is removed
- The Classify workflow node no longer accepts a model choice
- generateApplicationToken mutation is removed
New Features
- New defineHealthCheck export for app configuration status
- New defineSettingsMenuItem for declaring settings pages
- New updateManyObjects mutation for bulk metadata updates
- Application variables can be marked as required in manifest
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
public-apis/public-apis★ 491,138
A collective list of free APIs
NousResearch/hermes-agent★ 255,975
The agent that grows with you
yt-dlp/yt-dlp★ 200,069
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,494
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,704
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.