Repository navigation
ci(repo): Version Packages - #546
Open
github-actions[bot] wants to merge 1 commit into
Open
github-actions[bot] wants to merge 1 commit into
github-actions[bot] wants to merge 1 commit into
Conversation
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
github-actions
Bot
force-pushed
the
changeset-release/main
branch
10 times, most recently
from
October 22, 2026 19:51
c2414bd to
267ae93
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
4 times, most recently
from
October 26, 2026 19:38
75f7bd4 to
869b498
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 27, 2026 16:36
869b498 to
d947489
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
clerk@4.1.0
Minor Changes
Sign in from a machine without a browser:
clerk auth loginnow accepts the URL your browser lands on after signing in on another device, pasted back into the terminal. (#513) by @wyattjohLet AI agents take a Clerk application to production. (#550) by @shane-kercheval
clerk deploy --domain <domain>in agent mode creates the production instance (or resumes the existing one) without prompting and prints the deploy report. Without--domainit stays read-only. In the wizard,--domainskips the domain prompt and--yesskips the confirmations.clerk deploy --domainrefuses a domain it can't apply: with an existing production instance on another domain it fails withproduction_instance_exists, and while Clerk hasn't returned the existing instance's domain yet it fails with the newdeploy_domain_unchecked, in agent mode and the wizard alike. A wizard run whose typed domain loses a create race to another run's instance stops the same way, rather than carrying on into that instance's setup.clerk deployrefuses more hosting providers' domains, both in--domainand at the wizard's domain prompt:*.replit.app,*.replit.dev,*.onrender.com,*.railway.app,*.emergent.host,*.emergentagent.com,*.web.app,*.firebaseapp.com,*.hosted.app,*.workers.dev,*.github.io,*.lovable.app,*.bolt.host, and*.base44.app, alongside*.vercel.appand the others it already refused.clerk deployneeds a domain whose DNS records you can add.clerk deploy,clerk deploy status, or the wizard's DNS polling, now fails withdeploy_instance_unresolvedinstead ofnot_linkedand its advice to re-link the directory. Unless the run just created the instance, the message adds that if the production instance was deleted,clerk deploy statusreportsnot_startedonce Clerk stops listing it, and to runclerk deploy --domainthen.oauth.setup: for each provider missing production credentials, the redirect URI, authorized origins, fields, and theclerk config patchpayload and command that save them.nextActionnow names the command to run instead of handing off to a human terminal, except for Apple's private key and, when the app uses native-only Sign in with Apple, Apple web credentials, which still go throughclerk deployin a terminal. OAuth secrets go into a file outside the project that the user fills in and that is removed afterward. When native-only Sign in with Apple isn't ready in production, Apple is left out ofoauth.setupso the native fix innextActionisn't buried. Once Clerk's side is complete,nextActionsays to pipe the production keys into the host's CLI without reading them, and the newhostSetupfield holds the command for Vercel (withhost,label,shells, andcommand), so an agent copies it verbatim from the field instead of out of the sentence. On macOS and Linux, that command and eachoauth.setupcommand start withclerkonly when theclerkon PATH resolves to the running binary itself, and otherwise with the running CLI's quoted absolute path (an npm or bun global install puts npm's launcher script on PATH, so it gets the binary's path), so they work when the CLI was started withnpx. On Windows they keepclerk.hostSetupis[]in every other state.clerk env pull --printprintsKEY=valuelines to stdout instead of writing an env file, for sending production keys to a hosting provider. It fails without printing anything when Clerk returns no secret key. For an unclaimed accountless app, whose keys exist only on this machine, it prints the secret key alone, with a warning, when no publishable key is found locally.clerk config patchandclerk config putprint[REDACTED]in place of the value of any key whose name containssecretorprivate_key(in any case), in the diff they show before writing and in the response they print after (dry runs included). Values under other keys are printed as before. Both refuse a payload that still holds[REDACTED]under such a key, naming each field, so their own output can't be saved over a real secret. Error bodies logged under--verboseare not redacted.clerk config patchandclerk config putrefuse a payload that still holds anoauth.setupplaceholder (<client_secret>underclient_secret), naming each such field, andclerk deploy statusno longer counts such a value as a saved credential.clerk init --template <name>now implies--accountless, so it creates a pre-configured accountless application even when you're signed in or the project is linked, instead of exiting with an error. It still errors with--login,--app, or a framework without accountless support. (#572) by @manovotnyclerk doctorchecks an iOS or macOS app's Release build against the production instance: that Release's Bundle ID is registered there with Native API enabled, that its entitlements list the production Associated Domain, and that it configures Clerk with the production publishable key when the key is loaded in a way that can be read without building (otherwise it reports the key as not verified). Without a production instance this is a single note. Run in an Xcode project,clerk deployandclerk deploy statusnow point toclerk doctorfor this check. (#548) by @seanperez29Create a new iOS or macOS app with
clerk init --starter: pick iOS (SwiftUI) or macOS (SwiftUI) on a Mac with Xcode, and init writes a SwiftUI Xcode project, then sets up Clerk, the sign-in screen, and native registration. Use--framework iosor--framework macoswith--name,--bundle-id, and the new--team-idto skip the prompts. (#547) by @seanperez29Add
clerk migrate export auth0, and letclerk migrate importread Auth0 exports, including the NDJSON file from Auth0's bulk export job.clerk migrateis still experimental and needsCLERK_EXPERIMENTAL=migrate. (#526) by @royangerAdd
clerk migrate export authjs, and letclerk migrate importread Auth.js exports. The export reads an Auth.js database over--db-url(Postgres, MySQL, libsql/Turso or SQLite), finding the user table whether Prisma or Drizzle named it. Auth.js stores no passwords, so imported users sign in with OAuth or an email link, or set a password. The export reads each user's OAuth providers, so the import can offer to turn them on, and warns that Auth.js leaves OAuth users' emails unverified;--trust-oauth-emailsmarks them verified.clerk migrateis still experimental and needsCLERK_EXPERIMENTAL=migrate. (#529) by @royangerAdd
clerk migrate export betterauth, and letclerk migrate importread Better Auth exports. The export reads a Better Auth database over--db-url(Postgres, MySQL, libsql/Turso or SQLite), including schemas Drizzle generated with snake_case columns or plural tables, and detects plugin columns. Better Auth's scrypt, bcrypt and argon2 passwords carry across when Clerk can verify them; any other is dropped, and that user resets it. Anonymous users are skipped. A user that a source skips, such as Supabase's soft-deleted users, no longer stops the import: it's recorded as skipped, and--allow-partialis only for real rejects.clerk migrateis still experimental and needsCLERK_EXPERIMENTAL=migrate. (#528) by @royangerAdd
clerk migrate export clerkandclerk migrate export supabase, and letclerk migrate importtake the export's run ID in place of a file and--source.clerk migrateis still experimental and needsCLERK_EXPERIMENTAL=migrate. (#524) by @royangerAdd
clerk migrate export firebase, and letclerk migrate importread Firebase exports with their password hashes. The project's hash parameters come from the export, the--firebase-*flags, orCLERK_FIREBASE_SIGNER_KEY,CLERK_FIREBASE_SALT_SEPARATOR,CLERK_FIREBASE_ROUNDSandCLERK_FIREBASE_MEM_COST.clerk migrateis still experimental and needsCLERK_EXPERIMENTAL=migrate. (#525) by @royangerAdd
clerk migrate runsandclerk migrate undo, and let a re-run ofclerk migrate importcontinue where a stopped one left off.clerk migrateis still experimental and needsCLERK_EXPERIMENTAL=migrate. (#515) by @royangerEvery user an import creates now carries
clerkMigrateRun(the run's ID) in itsprivate_metadata, replacing any value the source had under that key. A re-run reads it to adopt a user whose create was cut off. Nothing removes it afterwards, and your backend can read it.Add
clerk migrate export workos, and letclerk migrate importread WorkOS exports. WorkOS returns no password hashes, so imported users reset their password or sign in with SSO.clerk initnow also flags a WorkOS install and links the migration guide.clerk migrateis still experimental and needsCLERK_EXPERIMENTAL=migrate. (#527) by @royangerAdd
clerk security:auditgrades an instance against Clerk's security recommendations,fixapplies them as one config patch, andcheckslists the catalog. Agent mode gets the report as JSON with the exact patch per finding. (#478) by @dominic-clerkAgents can create iOS and macOS apps end to end with JSON.
clerk init --starter --framework ios --json(ormacos) runs non-interactively and reports a missing name, an existing folder, a Bundle ID, or a team as aninput-requiredstatus before anything is written. Every status after the app is written names it and the command that finishes it, and setup that stops after writing reportssetup-interruptedinstead of leaving an agent to retry--starter. A new app that would otherwise inherit a parent's or repository's link asks which application to use. (#583) by @seanperez29Patch Changes
Wrap the sign-in and sign-up pages that
clerk initcreates for Next.js App Router apps in<Suspense>, so they no longer failnext buildwhen Cache Components is enabled, as it is in newcreate-next-appprojects. (#560) by @manovotnyIn agent mode,
clerk init --appno longer silently replaces a link to a different application. Inside a Git repository that link is shared by every project there, so relinking one folder switched them all.clerk initnow stops, explains what would switch, and asks for--relink; with--json, it reports aninput-requiredstatus. (#582) by @seanperez29Skip creating sign-in and sign-up pages in
clerk initfor Next.js App Router apps that already have them inside a route group, such asapp/(marketing)/sign-in/[[...sign-in]]/page.tsx, instead of adding a second page for the same URL. (#571) by @manovotnyWrap the auth header that
clerk init --starteradds to Next.js App Router layouts in<Suspense>, so new apps no longer failnext buildwhen Cache Components is enabled, as it is in newcreate-next-appprojects. (#567) by @manovotnyPrint plain text without terminal color codes in agent mode, so AI agents no longer see escape sequences in command output when they run without
--json. Pass--mode humanor setCLERK_MODE=humanto keep colors. Status messages now also honorNO_COLOR. (#534) by @royanger