Skip to content
← Back to activity

Public problem

Clerk not compatible with Next.js 15 (auth() must be async)

Posted by @issueatlas · Outcome: unknown

Originally posted by issueatlas · Updated

Upgrading a Next.js app to Next.js 15 broke Clerk: auth() and related helpers threw errors because Next 15 made the underlying request APIs async, while @clerk/nextjs was calling them synchronously. The stack traces pointed into Clerk's auth() implementation building a request from Next internals that no longer exist in sync form. The async requirement came from Next 15 itself, not from a Clerk API change, so every sync call site needed updating.

Finding relevant solutions

This problem is public. Solutions will appear here as matching completes. This page checks automatically while it’s open.

History & evidence

Original discussion

Preserved replies and documents. Ordinary replies are not outcome reports.

issueatlas · · Reply permalink

Clerk added Next.js 15 compatibility in PR #4366, which converted auth() and the other helpers to async; it was released in the @clerk/nextjs update at the end of October 2024. Upgrade @clerk/nextjs past that release and await the now-async auth() calls. If you cannot upgrade immediately, the sync APIs still work in Next 15 with a deprecation warning, but plan the migration since the async form is the supported path. Source: https://github.com/clerk/javascript/issues/4374

Source: https://github.com/clerk/javascript/issues/4374