A debugging utility for identifying silent failures in Next.js server-side functions like getServerSideProps and API routes.
Install
mkdir -p .claude/skills/nextjs-server-side-error-debugging && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6867" && unzip -o skill.zip -d .claude/skills/nextjs-server-side-error-debugging && rm skill.zipInstalls to .claude/skills/nextjs-server-side-error-debugging
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Debug getServerSideProps and getStaticProps errors in Next.js. Use when:
(1) Page shows generic error but browser console is empty, (2) API routes
return 500 with no details, (3) Server-side code fails silently, (4) Error
only occurs on refresh not client navigation. Check terminal/server logs
instead of browser for actual error messages.Key capabilities
- →Isolate server-side vs client-side failure points
- →Trace silent 500 errors to terminal logs
- →Implement try-catch wrappers for server logic
- →Capture stack traces during page hydration
How it works
Directs the developer to redirect inspection from browser consoles to backend/dev-server terminal output and suggests error-handling patterns.
Inputs & outputs
When to use nextjs-server-side-error-debugging
- →Troubleshoot generic 500 errors in Next.js
- →Debug silent failures in getServerSideProps
- →Trace issues occurring only on page refresh
About this skill
Next.js Server-Side Error Debugging
Problem
Server-side errors in Next.js don't appear in the browser console, making debugging frustrating when you're looking in the wrong place. The browser shows a generic error page or 500 status, but no stack trace or useful error information appears in DevTools.
Context / Trigger Conditions
This skill applies when:
- Page displays "Internal Server Error" or custom error page
- Browser console shows no errors, or only a generic fetch failure
- You're using
getServerSideProps,getStaticProps, or API routes - Error only occurs on page refresh or direct navigation (not client-side transitions)
- The error is intermittent and hard to reproduce in the browser
Common misleading symptoms:
- "Unhandled Runtime Error" modal that doesn't show the real cause
- Network tab shows 500 but response body is empty or generic
- Error disappears when you add console.log (timing issue)
Solution
Step 1: Check the Terminal
The actual error with full stack trace appears in the terminal where npm run dev
or next dev is running. This is the first place to look.
# If you don't see the terminal, find the process
ps aux | grep next
# Or restart with visible output
npm run dev
Step 2: Add Explicit Error Handling
For persistent debugging, wrap server-side code with try-catch:
export async function getServerSideProps(context) {
try {
const data = await fetchSomething();
return { props: { data } };
} catch (error) {
console.error('getServerSideProps error:', error);
// Return error state instead of throwing
return { props: { error: error.message } };
}
}
Step 3: For Production Errors
Check your hosting provider's logs:
- Vercel: Dashboard → Project → Logs (Functions tab)
- AWS: CloudWatch Logs
- Netlify: Functions tab in dashboard
- Self-hosted: Check your Node.js process logs
Step 4: Common Causes
- Environment variables: Missing in production but present locally
- Database connections: Connection string issues, cold starts
- Import errors: Server-only code accidentally imported on client
- Async/await: Missing await on async operations
- JSON serialization: Objects that can't be serialized (dates, functions)
Verification
After checking the terminal, you should see:
- Full stack trace with file name and line number
- The actual error message (not generic 500)
- Variable values if you added console.log statements
Example
Symptom: User reports page shows "Internal Server Error" after clicking a link.
Investigation:
- Open browser DevTools → Console: Empty
- Network tab shows:
GET /dashboard → 500 - Check terminal running
npm run dev:
Error: Cannot read property 'id' of undefined
at getServerSideProps (/app/pages/dashboard.tsx:15:25)
at renderToHTML (/app/node_modules/next/dist/server/render.js:428:22)
Cause found: Database query returned null instead of user object.
Notes
- In development, Next.js sometimes shows an error overlay, but it often has less detail than the terminal output
reactStrictMode: trueinnext.config.jscauses double-execution of server functions in development, which can make debugging confusing- For API routes, the error appears in the same terminal as page errors
- Client-side errors (in useEffect, event handlers) DO appear in browser console— this skill only applies to server-side code
- If using
next start(production mode locally), errors may be less verbose; checkNODE_ENVand consider adding custom error logging
When not to use it
- →Debugging client-side React hooks errors
- →Investigating CSS or frontend layout issues
Prerequisites
Limitations
- →Does not automatically fix the underlying code
- →Requires access to the machine running the Next.js process
How it compares
Focuses on the discrepancy between terminal logs and browser DevTools, which is the root cause of many 'silent' Next.js crashes.
Compared to similar skills
nextjs-server-side-error-debugging side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| nextjs-server-side-error-debugging (this skill) | 1 | 6mo | Review | Intermediate |
| agentation | 6 | 5mo | Review | Beginner |
| route-handlers | 1 | 7mo | Review | Intermediate |
| middleware-protection | 1 | 6mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by blader
View all by blader →You might also like
agentation
benjitaylor
Add Agentation visual feedback toolbar to a Next.js project
route-handlers
davepoon
This skill should be used when the user asks to "create an API route", "add an endpoint", "build a REST API", "handle POST requests", "create route handlers", "stream responses", or needs guidance on Next.js API development in the App Router.
middleware-protection
dadbodgeoff
Protect routes with Next.js middleware. Check authentication once, protect routes declaratively. Supports public routes, protected routes, and role-based access.
reviewing-nextjs-16-patterns
djankies
Review code for Next.js 16 compliance - security patterns, caching, breaking changes. Use when reviewing Next.js code, preparing for migration, or auditing for violations.
better-auth
mrgoonie
Implement authentication and authorization with Better Auth - a framework-agnostic TypeScript authentication framework. Features include email/password authentication with verification, OAuth providers (Google, GitHub, Discord, etc.), two-factor authentication (TOTP, SMS), passkeys/WebAuthn support, session management, role-based access control (RBAC), rate limiting, and database adapters. Use when adding authentication to applications, implementing OAuth flows, setting up 2FA/MFA, managing user sessions, configuring authorization rules, or building secure authentication systems for web applications.
auth-patterns
davepoon
This skill should be used when the user asks about "authentication in Next.js", "NextAuth", "Auth.js", "middleware auth", "protected routes", "session management", "JWT", "login flow", or needs guidance on implementing authentication and authorization in Next.js applications.