Zitadel NextGen 0.1.0, the first release
0.1.0 is the first proper release of Zitadel NextGen, and the first on npm's latest tag. Registration and login live in your app, under your brand, while Zitadel guards the credentials, sessions and tokens underneath. An empty folder becomes an app with a working login in three commands, with no account and no Docker:
npx @zitadel/cli@latest start
npx @zitadel/cli@latest setup --framework next --server local
npm run dev
This release sums up everything the alpha previews built; those versions are deprecated now. NextGen is still a preview: until 1.0.0, a minor release can include breaking changes, and each one is called out as breaking. The quickstart walks you through it.
What you get
- Sign-in and sign-up in your app.
<zitadel-login>runs the whole flow in one element: email and password, passkeys, and social sign-in with Google or any OIDC provider, where the first sign-in creates the account.<zitadel-session>and<zitadel-logout>show who is signed in and sign them out. For a UI of your own, the flow and auth-attempt APIs drive sign-in headless. Components - 12 frameworks.
zitadel setupcreates a new app or patches an existing one with login, registration and profile pages, for Next.js, Nuxt, SvelteKit, SolidStart, Qwik Router, TanStack Start, React, Vue, Angular, Solid, Svelte and Qwik. The server SDKs keep auth on your own origin: they check sessions, protect routes and keep the project secret on the server. SDKs - Users shaped by your schema. A user schema in JSON Schema says which attributes your users have, which one they sign in with, which must be unique and which sign-in methods they may use. Every write is checked against it. Flows and schemas
- Auth as code. Schemas, login flows, branding and sign-in connections are files in your repository.
zitadel planchecks them against the server's rules before anything changes, andzitadel applypublishes them as immutable revisions. Plan and apply - Your brand, your words. Theme the login with
--zl-*tokens and light and dark branding, or take over its markup withzitadel branding eject. Override any text per language; English, German and Italian are built in. Design, copy - A console. At
/ui/console/, manage users through forms built from your schema, as well as teams and project admins, and look through your schemas, flows, sign-in methods and branding, with a live preview of the login. - Create first, claim later.
zitadel setup --server https://preview.zitadel.comcreates a hosted project without an account, andzitadel claimattaches it to your team within 14 days. Projects and teams - Runs anywhere.
zitadel startruns the server from npm on your machine, with no Docker, Go or checkout, and signs you in to the console with a one-time link. To host it, take the binary for macOS, Linux or Windows or the imageghcr.io/zitadel/nextgen, with SQLite by default and PostgreSQL or Spanner in production. Local runtime, databases - Audit events. Sign-ins, sessions, users and configuration changes are recorded as typed events you can query through the API, and a self-hosted server can export them to a webhook. Events
- One API for all of it. Every operation is in the API reference, with stable error codes.
zitadel apicalls any of them from the terminal, and@zitadel/apiis a typed client with an error type per operation. API client - Built for agents. Every CLI command answers
--jsonwith one envelope.npx skills add zitadel/nextgen --full-depthinstalls Agent Skills for the CLI, the components and each SDK, and the docs come asllms.txtand over MCP. Agents - Tests against a real server.
@zitadel/testingstarts a local Zitadel for Playwright, with seeded users, signed-in pages and virtual passkeys.
Not there yet
- Password recovery, email or SMS codes, TOTP, email verification and enforced MFA. The default flow covers sign-in and sign-up with passwords, passkeys and social sign-in.
- Social sign-in is OIDC only, and a provider can't be linked to an existing account yet.
- Zitadel doesn't issue OIDC or OAuth tokens to your apps in this preview: apps use its sessions through the SDKs, and the SPA frameworks need a proxy of your own in production.
- Deploying a release to your own domains goes through the API; deploying to preview URLs, rollback and a CLI command for it are still to come.
Upgrading from 1.0.0-alpha.N
- Install with
@latest, for the CLI and every SDK;@alphanow points at0.1.0and stays there. npm sorts0.1.0below1.0.0-alpha.28, so Renovate and Dependabot won't offer this update: set the@zitadel/*versions in yourpackage.jsonto0.1.0yourself. The GitHub releasesv1.0.0-alpha.20to.28are nowv0.1.0-alpha.20to.28. - Security: an auth attempt could issue a session after verifying only the user's identifier (#2211). Upgrade the server, then revoke active sessions whose only factor is
identifier. Step-up sign-in now needs the session'ssession_tokenas well as itssession_id(#2166). - Breaking: a deploy that names a primary origin answers
400withdep.invalid; deploy withtargets: ["primary"](#1736). Also check the new error codes for schema failures (req.invalid, #1894) and over-long passwords (user.password_policy_violation, #2107), and howPOST /flowpicks the release byOrigin(#2043).
Every change since 1.0.0-alpha.28, the last alpha, is in the release notes on GitHub.
Pull request#2215