nextjs-senior-dev

Next.js Senior Developer

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "nextjs-senior-dev" with this command: npx skills add georgekhananaev/claude-skills-vault/georgekhananaev-claude-skills-vault-nextjs-senior-dev

Next.js Senior Developer

Transform into Senior Next.js 15+/16 Engineer for production-ready App Router applications.

When to Use

  • Scaffolding new Next.js App Router projects

  • RSC vs Client Component decisions

  • Server Actions and data fetching patterns

  • Performance optimization (CWV, bundle, caching)

  • Middleware and authentication setup

  • Next.js 15/16 migration or audit

Version Notes

Version Key Changes

Next.js 16 middleware.ts → proxy.ts , Node.js runtime only, Cache Components

Next.js 15 fetch uncached by default, React 19, Turbopack stable

Triggers

Command Purpose

/next-init

Scaffold new App Router project

/next-route

Generate route folder (page, layout, loading, error)

/next-audit

Audit codebase for patterns, security, performance

/next-opt

Optimize bundle, images, fonts, caching

Reference Files (23 Total)

Load based on task context:

Core References

Category Reference When

Routing references/app_router.md

Route groups, parallel, intercepting

Components references/components.md

RSC vs Client decision, patterns

Data references/data_fetching.md

fetch, cache, revalidation, streaming

Security references/security.md

Server Actions, auth, OWASP

Performance references/performance.md

CWV, images, fonts, bundle, memory

Middleware references/middleware.md

Auth, redirects, Edge vs Node

Architecture & Quality

Category Reference When

Architecture references/architecture.md

File structure, feature-sliced design

Shared Components references/shared_components.md

DRY patterns, composition, reusability

Code Quality references/code_quality.md

Error handling, testing, accessibility

Features & Integrations

Category Reference When

SEO & Metadata references/seo_metadata.md

generateMetadata, sitemap, OpenGraph

Database references/database.md

Prisma, Drizzle, queries, migrations

Authentication references/authentication.md

Auth.js, sessions, RBAC

Forms references/forms.md

React Hook Form, Zod, file uploads

i18n references/i18n.md

next-intl, routing, RTL support

Real-Time references/realtime.md

SSE, WebSockets, polling, Pusher

API Design references/api_design.md

REST, tRPC, webhooks, versioning

DevOps & Migration

Category Reference When

Deployment references/deployment.md

Vercel, Docker, CI/CD, env management

Monorepo references/monorepo.md

Turborepo, shared packages, workspaces

Migration references/migration.md

Pages→App Router, version upgrades

Debugging references/debugging.md

DevTools, profiling, error tracking

Scripts & 3rd-Party references/scripts.md

next/script, loading strategies, Google Analytics

Self-Hosting references/self_hosting.md

Docker standalone, cache handlers, multi-instance ISR

Debug Tricks references/debug_tricks.md

MCP debugging, --debug-build-paths

Core Tenets

  1. Server-First

Default to Server Components. Use Client only when required.

RSC when: data fetching, secrets, heavy deps, no interactivity Client when: useState, useEffect, onClick, browser APIs

  1. Component Archetypes

Pattern Runtime Must Have

page.tsx

Server async, data fetching

*.action.ts

Server "use server", Zod, 7-step security

*.interactive.tsx

Client "use client", event handlers

*.ui.tsx

Either Pure presentation, stateless

  1. 7-Step Server Action Security

"use server" // 1. Rate limit (IP/user) // 2. Auth verification // 3. Zod validation (sanitize errors!) // 4. Authorization check (IDOR prevention) // 5. Mutation // 6. Granular revalidateTag() (NOT revalidatePath) // 7. Audit log (async)

  1. Data Fetching Strategy

Static → generateStaticParams + fetch ISR → fetch(url, { next: { revalidate: 60 }}) Dynamic → fetch(url, { cache: 'no-store' }) Real-time → Client fetch (SWR)

Next.js 15 Change: fetch is UNCACHED by default (opposite of 14).

  1. Caching

Type Scope Invalidation

Request Memoization Request Automatic

Data Cache Server revalidateTag()

Full Route Cache Server Rebuild

Router Cache Client router.refresh()

Prefer revalidateTag() over revalidatePath() to avoid cache storms.

  1. Feature-Sliced Architecture

For large apps (50+ routes), use domain-driven structure:

src/ ├── app/ # Routing only ├── components/ # Shared UI (ui/, shared/) ├── features/ # Business logic per domain │ └── [feature]/ │ ├── components/ │ ├── actions/ │ ├── queries/ │ └── hooks/ ├── lib/ # Global utilities └── types/ # Global types

  1. Component Sharing Rules

Used 3+ places? Contains business logic? Action

Yes No Move to components/ui/ or shared/

Yes Yes Keep in features/

No Any Keep local (_components/ )

  1. State Management Hierarchy

State Type Tool Example

URL State searchParams Filters, pagination

Server State Server Components User data, posts

Form State useFormState Form submissions

UI State useState Modals, dropdowns

Shared Client Context/Zustand Theme, cart

Rule: Prefer URL state for shareable/bookmarkable state.

  1. DRY with createSafeAction

// lib/safe-action.ts - Reuse for all Server Actions export const createPost = createSafeAction(schema, handler, { revalidateTags: ["posts"] })

Eliminates duplicate auth/validation/error handling.

Anti-Patterns

Don't Do

"use client" at tree root Push boundary down to leaves

API routes for server data Direct DB in Server Components

useEffect for fetching Server Component async fetch

revalidatePath('/') Granular revalidateTag()

Trust middleware alone Validate at data layer too

Prop drill 5+ levels Context or composition

any types Proper types or unknown

Barrel exports in features Direct imports

localStorage for auth httpOnly cookies

Global caches (memory leak) LRU cache or React cache()

Middleware: Deny by Default

// middleware.ts - Public routes MUST be allowlisted const publicRoutes = ['/login', '/register', '/api/health'] if (!publicRoutes.some(r => pathname.startsWith(r))) { // Require auth }

CRITICAL: Upgrade to Next.js 15.2.3+ (CVE-2025-29927 fix).

Scripts

Script Purpose

scripts/scaffold_route.py

Generate route folder w/ all files

Templates

File Purpose

templates/page.tsx

Standard async page

templates/layout.tsx

Layout w/ metadata

templates/action.ts

7-step secure Server Action

templates/loading.tsx

Loading UI skeleton

templates/error.tsx

Error boundary

Assets

File Purpose

assets/next.config.ts

Production config w/ security headers

assets/middleware.ts

Deny-by-default auth (Next.js 15)

assets/proxy.ts

Deny-by-default auth (Next.js 16+)

Quick Reference: Senior Code Review

Before merging any PR, verify:

Performance

  • No unnecessary "use client"

  • Images use next/image with dimensions

  • Heavy components dynamic imported

  • Parallel fetching (Promise.all)

Security

  • Server Actions validate with Zod

  • Auth in actions (not just middleware)

  • IDOR prevention (user owns resource)

  • No secrets in client bundles

Architecture

  • Components in correct layer

  • No cross-feature imports

  • DRY patterns used (createSafeAction)

  • URL state for shareable state

Quality

  • No any types

  • Error boundaries present

  • Loading states for async

  • Accessibility (semantic HTML, alt text)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

beautiful-code

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

gemini-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-quality

No summary provided by upstream source.

Repository SourceNeeds Review
General

system-architect

No summary provided by upstream source.

Repository SourceNeeds Review