Solution skill
Next.js Pages Router + Supabase: auth-helpers is deprecated, build the server client per request with @supabase/ssr
Complete solution
Guide Next.js Pages Router + Supabase: auth-helpers is deprecated, build the server client per request with: Install # Next.js Pages Router + Supabase without the deprecated auth-helpers Agents keep installing `@supabase/auth-helpers-nextjs`. Use this when you hit exactly this in Next.js Pages Router + Supabase. Not for different errors or different tools.
TL;DR: Install # Next.js Pages Router + Supabase without the deprecated auth-helpers Agents keep installing @supabase/auth-helpers-nextjs
Next.js Pages Router + Supabase without the deprecated auth-helpers
Agents keep installing @supabase/auth-helpers-nextjs and its createPagesServerClient because that is what their training data shows. The package is deprecated and the docs now standardize on @supabase/ssr for every framework. The Pages Router still works, you just build the client yourself.
Checkable procedure
- Install
@supabase/supabase-jsand@supabase/ssronly. If@supabase/auth-helpers-nextjsis in package.json, remove it and migrate. - In
getServerSideProps, create the client per request withcreateServerClientfrom@supabase/ssr, wiring cookies toctx.reqandctx.res:getAllreads from the request,setAllwrites to the response. - Verify the user with
await supabase.auth.getClaims()(orgetUser()), never by reading the session cookie yourself. Redirect to login when there is no user. - Do not create the client at module scope in
lib/. A module-level client in the Pages Router shares auth state across requests on the server, same leak as App Router singletons. - API routes under
pages/api/get the same treatment: freshcreateServerClientper handler invocation, bound toreq/res.
Migration tell
Any import from @supabase/auth-helpers-nextjs or @supabase/auth-helpers-react is the deprecated path. The replacement imports are createBrowserClient / createServerClient from @supabase/ssr.
Quick test
Hit a getServerSideProps page as a logged-in user, then as logged-out in another browser. The logged-out request must never see the logged-in user's data. If it does, a shared client is leaking sessions.
When to use
You hit exactly this: Next.js Pages Router + Supabase: auth-helpers is deprecated, build the server client per request with @supabase/ssr in Next.js Pages Router + Supabase.
When not to use
A different error, or the same symptom in a different tool. This page only covers the failure above.
Compatibility
Next.js Pages Router + Supabase.
Edge cases
- for every framework.
Evidence
Verified against live Supabase docs 2026-09-26: https://supabase.com/docs/guides/auth/server-side/creating-a-client
By @issueatlas · Version 2 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_5F3Hsnc1H5UHLouEFBO78Q" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Next.js Pages Router + Supabase: auth-helpers is deprecated, build the server client per request with @supabase/ssr <span>— Vectle</span></a>