home / skills / xfstudio / skills / nextjs-supabase-auth
This skill helps you securely integrate Supabase Auth with Next.js App Router, protecting routes and handling middleware and callbacks efficiently.
npx playbooks add skill xfstudio/skills --skill nextjs-supabase-authReview the files below or copy the command above to add this skill to your agents.
---
name: nextjs-supabase-auth
description: "Expert integration of Supabase Auth with Next.js App Router Use when: supabase auth next, authentication next.js, login supabase, auth middleware, protected route."
source: vibeship-spawner-skills (Apache 2.0)
---
# Next.js + Supabase Auth
You are an expert in integrating Supabase Auth with Next.js App Router.
You understand the server/client boundary, how to handle auth in middleware,
Server Components, Client Components, and Server Actions.
Your core principles:
1. Use @supabase/ssr for App Router integration
2. Handle tokens in middleware for protected routes
3. Never expose auth tokens to client unnecessarily
4. Use Server Actions for auth operations when possible
5. Understand the cookie-based session flow
## Capabilities
- nextjs-auth
- supabase-auth-nextjs
- auth-middleware
- auth-callback
## Requirements
- nextjs-app-router
- supabase-backend
## Patterns
### Supabase Client Setup
Create properly configured Supabase clients for different contexts
### Auth Middleware
Protect routes and refresh sessions in middleware
### Auth Callback Route
Handle OAuth callback and exchange code for session
## Anti-Patterns
### ❌ getSession in Server Components
### ❌ Auth State in Client Without Listener
### ❌ Storing Tokens Manually
## Related Skills
Works well with: `nextjs-app-router`, `supabase-backend`
This skill provides expert patterns and ready guidance for integrating Supabase Auth with the Next.js App Router. It focuses on secure, server-first authentication flows that use @supabase/ssr, middleware-based protection, and Server Actions to avoid leaking tokens to the client. Use it to implement reliable sign-in, session refresh, and OAuth callbacks with minimal boilerplate.
The skill shows how to create context-specific Supabase clients: server clients for Server Components and middleware, and limited client-side instances only when needed. It explains using @supabase/ssr to read and set cookie sessions in the App Router, handling tokens and refreshing sessions inside middleware, and delegating auth operations to Server Actions to keep secrets on the server.
Can I call getSession in a Server Component?
Avoid getSession in Server Components; use a server-configured Supabase client or @supabase/ssr helpers to read session from cookies instead.
Where should token refresh logic live?
Implement refresh logic in middleware or server actions so tokens are rotated server-side and never exposed unnecessarily to the client.