Files
twenty/packages/create-twenty-app
Charles Bochet 53065f241f Exchange clientSecret for tokens after app registration + bump canary (#19582)
## Summary

- **Fix `createApplicationRegistration` flow**: The server's
`createApplicationRegistration` mutation returns a `clientSecret`, not
`accessToken`/`refreshToken` directly. The SDK now correctly requests
`clientSecret` and immediately performs an OAuth `client_credentials`
exchange to obtain `appAccessToken` and `appRefreshToken`, then stores
them in config.
- **New `exchangeCredentialsForTokens` helper**: Shared by both `dev`
and `dev --once` flows. Takes `clientId` + `clientSecret`, calls
`/oauth/token` with `client_credentials` grant, and persists the
resulting tokens.
- **Bump `twenty-sdk`, `twenty-client-sdk`, `create-twenty-app` to
`1.22.0-canary.2`**

## Context

The `1.22.0-canary.1` SDK release expected
`createApplicationRegistration` to return `accessToken`/`refreshToken`
directly, but the `v1.22.0` server returns `clientSecret`. This caused
`yarn twenty dev` and `yarn twenty dev --once` to fail with "No
registration found" errors.
2026-04-11 12:26:18 +02:00
..
2026-04-03 12:44:03 +00:00
2026-04-03 12:44:03 +00:00
2026-04-03 12:44:03 +00:00
2026-04-03 12:44:03 +00:00

Twenty logo

Create Twenty App

NPM version License Join the community on Discord

The official scaffolding CLI for building apps on top of Twenty CRM. Sets up a ready-to-run project with twenty-sdk.

Quick start

npx create-twenty-app@latest my-twenty-app
cd my-twenty-app
yarn twenty dev

The scaffolder will:

  1. Create a new project with TypeScript, linting, tests, and a preconfigured twenty CLI
  2. Optionally start a local Twenty server (Docker)
  3. Open the browser for OAuth authentication

Options

Flag Description
--example <name> Initialize from an example
--name <name> Set the app name (skips the prompt)
--display-name <displayName> Set the display name (skips the prompt)
--description <description> Set the description (skips the prompt)
--skip-local-instance Skip the local server setup prompt

By default (no flags), a minimal app is generated with core files and an integration test. Use --example to start from a richer example:

npx create-twenty-app@latest my-twenty-app --example hello-world

Examples are sourced from twentyhq/twenty/packages/twenty-apps/examples.

Documentation

Full documentation is available at docs.twenty.com/developers/extend/apps:

Troubleshooting

  • Server not starting: check Docker is running (docker info), then try yarn twenty server logs.
  • Auth not working: make sure you are logged in to Twenty in the browser, then run yarn twenty remote add.
  • Types not generated: ensure yarn twenty dev is running — it auto-generates the typed client.

Contributing