v2.4.0
twentyhq/twentyv2.4.0May 14, 2026by charlesBochet
AI Summary
This release focuses on billing improvements with migration from Stripe metering and adds email forwarding capabilities. It also introduces public domain binding to apps and enhances the app SDK with generic OAuth provider support.
Key Highlights
- Billing migration from Stripe metering to usage-based
- Email forwarding message channel
- Public domain binding to apps + settings reorganization
- Generic OAuth provider support for app SDK
- Add defineApplicationRole method for apps
New Features
- Email forwarding message channel
- Public domain binding to apps
- Generic OAuth provider support
- Application role definition method
- Resend app improvements
Full Release Notes
## What's Changed * chore(front): move mocked-metadata helpers under src/testing by @charlesBochet in https://github.com/twentyhq/twenty/pull/20341 * Add description to oAuth_only app created by @martmull in https://github.com/twentyhq/twenty/pull/20336 * Fix plan-required modal issue by @etiennejouan in https://github.com/twentyhq/twenty/pull/20346 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20347 * chore: bump version to 2.4.0 by @twenty-pr[bot] in https://github.com/twentyhq/twenty/pull/20345 * Oxlint ignore twenty-version constant by @prastoin in https://github.com/twentyhq/twenty/pull/20350 * Improved create-twenty-app documentation for AI coding agents by @Bredo in https://github.com/twentyhq/twenty/pull/20325 * fix: workspace member "me" filters now work in dashboard widgets by @QuantumByteMaster in https://github.com/twentyhq/twenty/pull/20266 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20353 * External contributor auto-draft and dispatch pr-review event type by @prastoin in https://github.com/twentyhq/twenty/pull/20329 * Fix auto draft workflow by @prastoin in https://github.com/twentyhq/twenty/pull/20357 * Billing - Migrate from Stripe metering by @etiennejouan in https://github.com/twentyhq/twenty/pull/20298 * Fix docs apps navigation by @dev111-actor in https://github.com/twentyhq/twenty/pull/20359 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20362 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20366 * Billing - remove default feature flag by @etiennejouan in https://github.com/twentyhq/twenty/pull/20365 * fix: Use settings table rows and detail page for app connections by @bitloi in https://github.com/twentyhq/twenty/pull/20257 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20372 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20373 * Add defineApplicationRole method by @abdulrahmancodes in https://github.com/twentyhq/twenty/pull/20314 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20375 * Detail steps during create twenty app by @martmull in https://github.com/twentyhq/twenty/pull/20374 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20378 * [Website] Reintroduce the product page. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20349 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20385 * chore: sync AI model catalog from models.dev by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20392 * i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20384 * fix: handle widgets with missing universalConfiguration in 2.3 delete-gauge-widgets command by @charlesBochet in https://github.com/twentyhq/twenty/pull/20393 * fix: validate enum values before opening transaction in alterEnumValues by @Weiko in https://github.com/twentyhq/twenty/pull/20376 * fix: basic-ftp has FTP Command injection via CRLF by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20396 * Protect sendEmail endpoint and thread user context through logic function executor by @martmull in https://github.com/twentyhq/twenty/pull/20369 * Simplify dispatch pr review by @prastoin in https://github.com/twentyhq/twenty/pull/20397 * feat(sdk): warn when local server image is behind latest by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20352 * Isolate twenty apps from nx project by @martmull in https://github.com/twentyhq/twenty/pull/20406 * refactor: scope ApplicationRegistrationService findOneById to tenant rows by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20408 * feat: add email forwarding message channel by @FelixMalfait in https://github.com/twentyhq/twenty/pull/19535 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20411 * Prevent non-admin users from impersonating admin users by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20412 * [Website] Codebase cleanup and SEO improvements. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20415 * fix: scroll AI chat to bottom on side panel reopen by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20413 * Reserve inbound subdomain for SES by @neo773 in https://github.com/twentyhq/twenty/pull/20414 * i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20418 * fix(messaging): reset sync state when IMAP/SMTP/CalDAV credentials are updated by @fucx in https://github.com/twentyhq/twenty/pull/20405 * feat(public-domain): bind public domains to apps + reorganize settings by @FelixMalfait in https://github.com/twentyhq/twenty/pull/20360 * i18n - translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20428 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20429 * i18n - docs translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20431 * [Website] Extract HomeVisual into shared AppPreview section. by @mabdullahabaid in https://github.com/twentyhq/twenty/pull/20432 * i18n - website translations by @github-actions[bot] in https://github.com/twentyhq/twenty/pull/20434 ## New Contributors * @Bredo made their first contribution in https://github.com/twentyhq/twenty/pull/20325 * @dev111-actor made their first contribution in https://github.com/twentyhq/twenty/pull/20359 * @fucx made their first contribution in https://github.com/twentyhq/twenty/pull/20405 **Full Changelog**: https://github.com/twentyhq/twenty/compare/v2.3.0...v2.4.0