Releases: clerk/javascript
@clerk/nextjs@6.0.1
@clerk/nextjs@6.0.0
Major Changes
-
Stop
<ClerkProvider>
from opting applications into dynamic rendering. A new prop,<ClerkProvider dynamic>
can be used to opt-in to dynamic rendering and make auth data available during server-side rendering. The RSCauth()
helper should be preferred for accessing auth data during dynamic rendering. (#4366) by @jacekradko -
@clerk/nextjs: Converting auth() and clerkClient() interfaces to be async (#4366) by @jacekradko
@clerk/upgrade: Adding required codemod for @clerk/nextjs breaking changes
Migration guide
auth()
is now asyncPreviously the
auth()
method from@clerk/nextjs/server
was synchronous.import { auth } from "@clerk/nextjs/server"; export function GET() { const { userId } = auth(); return new Response(JSON.stringify({ userId })); }
The
auth
method now becomes asynchronous. You will need to make the following changes to the snippet above to make it compatible.- export function GET() { + export async function GET() { - const { userId } = auth(); + const { userId } = await auth(); return new Response(JSON.stringify({ userId })); }
Clerk middleware auth is now async
import { clerkClient, clerkMiddleware } from '@clerk/nextjs/server'; import { NextResponse } from 'next/server'; export default clerkMiddleware(async (auth, request) => { const resolvedAuth = await auth(); const count = await resolvedAuth.users.getCount(); if (count) { return NextResponse.redirect(new URL('/new-url', request.url)); } }); export const config = { matcher: [...], };
clerkClient() is now async
Previously the
clerkClient()
method from@clerk/nextjs/server
was synchronous.import { clerkClient, clerkMiddleware } from '@clerk/nextjs/server'; import { NextResponse } from 'next/server'; export default clerkMiddleware((auth, request) => { const client = clerkClient(); const count = await client.users?.getCount(); if (count) { return NextResponse.redirect(new URL('/new-url', request.url)); } }); export const config = { matcher: [...], };
The method now becomes async. You will need to make the following changes to the snippet above to make it compatible.
- export default clerkMiddleware((auth, request) => { - const client = clerkClient(); + export default clerkMiddleware(async (auth, request) => { + const client = await clerkClient(); const count = await client.users?.getCount(); if (count) { }
-
Support
unstable_rethrow
insideclerkMiddleware
. (#4366) by @jacekradkoWe changed the errors thrown by
protect()
insideclerkMiddleware
in order forunstable_rethrow
to recognise them and rethrow them. -
Removes deprecated APIs:
authMiddleware()
,redirectToSignIn()
, andredirectToSignUp()
. See the migration guide to learn how to update your usage. (#4366) by @jacekradko
Minor Changes
-
Bug fix: Correctly redirect to sign in page in Next 15. (#4383) by @panteliselef
-
Add experimental support for new UI components (#4114) by @BRKalow
Patch Changes
@clerk/localizations@3.4.0
@clerk/localizations@3.3.1
@clerk/fastify@2.0.5
@clerk/fastify@2.0.4
@clerk/express@1.3.3
@clerk/express@1.3.2
@clerk/elements@0.17.1
Patch Changes
- Updated dependencies [
3fdcdbf88
]:- @clerk/types@4.28.0
- @clerk/shared@2.10.1