Skillshub nextjs-upgrade
Next.js version migrations using official guides and codemods. Use when migrating a Next.js project to a new major version using codemods. (triggers: package.json, next upgrade, migration guide, codemod)
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/nextjs-upgrade" ~/.claude/skills/comeonoliver-skillshub-nextjs-upgrade && rm -rf "$T"
manifest:
skills/HoangNguyen0403/agent-skills-standard/nextjs-upgrade/SKILL.mdsource content
Next.js Upgrade Protocol
Automated and manual migration steps for Next.js version upgrades (e.g., v14 → v15).
Priority: P1 (OPERATIONAL)
Implementation Guidelines
- Upgrade Detection: Always check
for versions ofpackage.json
,next
, andreact
.react-dom - Planning: For major version jumps (v13 to v15), perform an incremental upgrade (v13 -> v14, then v14 -> v15). Follow the official Next.js Migration Guides.
- Automated Codemods: Use
to automate syntax migration.npx @next/codemod@latest <transform> <path> - Breaking Changes (v15): Respond to the
transform by ensuringnext-async-request-api
,params
,searchParams
, andcookies()
are awaited.headers() - React Parity: Upgrade
andreact
to match Next.js peer dependencies (e.g., React 19 for Next.js 15).react-dom - Validation: Run
andnext dev
after each incremental step. Check Console errors for hydration warnings.next build - Reporting: Report all codemod failures or manual fixes needed to the team.
3. Dependency Update
Upgrade Next.js and peer dependencies in sync:
# Using npm npm install next@latest react@latest react-dom@latest # Update Types npm install --save-dev @types/react@latest @types/react-dom@latest
4. Manual Verification Rules
- Async Context: Verify all uses of
,cookies()
, and routeheaders()
are now awaited.params - Metadata: Ensure
types match the new asyncgenerateMetadata
signature.params - Caching: In v15+,
defaults tofetch
. If you need the old behavior, explicitly set{ cache: 'no-store' }
.{ cache: 'force-cache' }
5. Testing Build
- Run
immediately after codemods and package updates.npm run build - Check for "Hydration failed" or "Turbopack" compatibility errors if using
.--turbo
Anti-Patterns
- No major version skipping: Upgrade one major version at a time (13→14, then 14→15).
- No manual breaking-change fixes: Always run
transforms first.npx @next/codemod@latest - No assumed caching behavior post-upgrade: v15 defaults to
; audit allno-store
calls.fetch - No async page functions in Pages Router:
is fatal.export default async function Page()