






















We're excited to announce the latest major release of Clerk's SDKs, Core 3. With the release, we're investing in better customization primitives and agent-friendly APIs. Highlights include:
We've built an upgrade CLI that scans your codebase and applies codemods for most breaking changes. If you've used our upgrade tool before, the process is the same.
Core 3 requires Node.js 20.9.0+. For the full list of changes, upgrade prompts, and step-by-step instructions, see the Core 3 upgrade guide.
We've redesigned the APIs for the useSignIn, useSignUp and useCheckout hooks, and introduced a new useWaitlist hook. These refreshed APIs make building custom auth UIs easier for humans and agents.
Previously, you needed to maintain your own state for attempt status, loading states, and error parsing. Now, it's all exposed from the hooks:
The same structure applies whether you're building a sign up form, a waitlist, or a checkout flow, so you don't need to learn a different API for each one. The hooks are designed to work with any component library, whether you're using shadcn/ui, Radix, or your own components.
We've also rewritten all of our custom flow documentation to use the new hooks.
We've launched a theme editor that lets you visually customize Clerk's prebuilt components and copy the resulting appearance prop configuration into your app. You can adjust colors, spacing, typography, and borders, and see the changes in real time. Give it a whirl and share your custom themes with us!
Our component documentation is now interactive too. You can tweak props, see live previews, and copy working code directly from the docs.
Keyless mode, the ability to try Clerk without creating an account or configuring API keys, now works with TanStack Start, Astro, and React Router. You can go from pnpm install to a working auth setup without leaving your editor. Great for agents!
Clerk now works correctly when your app is using React's concurrent features, including transitions, Suspense, and streaming SSR. Previously, Clerk's auth state synchronization could conflict with concurrent rendering, leading to stale state during useTransition navigations or hydration mismatches with streaming. Core 3 reworks how Clerk manages auth state internally to resolve these issues. No code changes are needed on your end.
react + react-dom) for apps using components and framework-specific packages like @clerk/nextjs or @clerk/tanstack-react-start.satelliteAutoSync option (defaults to false) that skips the redirect when no session cookies exist. The handshake now only fires after an explicit sign in action, eliminating the unnecessary redirect for most satellite traffic.getToken() previously returned null both when the user was signed out and when the device was offline. The latter was unintentional. It now throws a ClerkOfflineError when the network is unavailable, so you can more reliably handle being offline in your application.getToken() now proactively refreshes session tokens in the background before they expire, so your app never has to wait for a token refresh mid-request. This eliminates intermittent blocking delays in apps that make frequent API calls, like AI chat apps with sequential requests.@clerk/clerk-react is now @clerk/react. @clerk/clerk-expo is now @clerk/expo. The upgrade CLI handles the rename.<Show> component: <Protect>, <SignedIn>, and <SignedOut> are replaced by a single <Show> component. Use when="signed-in", when="signed-out", or pass a condition callback for authorization checks. In certain scenarios, these components still expose the content they are wrapping in your source code. We picked Show as the new name to make it clear that this utility should be only be used to control visibility. Learn more.VITE_CLERK_PUBLISHABLE_KEY. Learn more.UNSAFE_PortalProvider component lets you specify a custom container for Clerk's portaled UI elements (popovers, modals, tooltips). This solves a common issue when using Clerk components inside libraries like Radix Dialog or React Aria, where portaled elements would render to document.body and end up behind the dialog. Learn more.clerkMiddleware in Next.js and Express now supports proxying requests to Clerk's Frontend API. Previously, you had to implement this yourself following the guide in our docs. Enable it with frontendApiProxy: { enabled: true } in your middleware config. Learn more.import type { UserResource } from '@clerk/react/types') instead of installing the separate @clerk/types package. @clerk/types has been deprecated.ClerkProvider should be placed inside <body> rather than wrapping <html>.@clerk/types: As mentioned above, the dedicated types package has been deprecated in favor of exposing types through existing SDKs.If you run into issues upgrading, reach out on Discord or contact support. We're here to help. Happy building!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。