1. Omid Sayfun
  2. /
  3. Notebook
  • Home
  • About
  • Notebook
  • Token Usage
  • Whisper Usage
Tools
  • Agent Knowledge Base

Upgrading my blog to Next 15

April 05, 2025 · Updated on August 09, 2026

A Next.js middleware vulnerability finally pushed me to upgrade my blog to Next 15. I had planned to wait until I actually needed React 19 or Tailwind v4, since Next 15 came with quite a few breaking changes.

I write short, practical notes like this one. Get the next one by email:

Unsubscribe anytime.

@next/codemod and the Tailwind CLI do most of the migration

The upgrade took less work than I expected. @next/codemod automates most of the migration:

npx @next/codemod@canary upgrade latest

Next 15.2.4 lists React 19 in its peer dependencies, so the codemod bumps react and react-dom for you.

Next, I upgraded Tailwind. They also provide a CLI to handle the transition:

npx @tailwindcss/upgrade

The Turbopack warning came from a webpack fallback

After this, I started seeing turbopack errors in dev mode:

⚠ Webpack is configured while Turbopack is not, which may cause problems.
⚠ See instructions if you need to configure Turbopack:
  https://nextjs.org/docs/app/api-reference/next-config-js/turbo

The issue was caused by forcing a crypto fallback via webpack, which isn’t needed with Turbopack. Removing the webpack config cleared the warning.

@vercel/style-guide 6.0.0 caps its eslint peer dependency below Next 15

I then upgraded the rest of my dependencies. Everything went fine, except for one:

 WARN  Issues with peer dependencies found
└─┬ @vercel/style-guide 6.0.0
  └── ✕ unmet peer @next/eslint-plugin-next@">=12.3.0 <15.0.0-0": found 15.2.4

@vercel/style-guide 6.0.0 pins its eslint peer dependency to @next/eslint-plugin-next@>=12.3.0 <15.0.0-0, and Next 15.2.4 installs 15.2.4. The package is deprecated and hasn’t been updated for Next 15. I removed it and replaced it with eslint-config-next.

So far, everything seems to be working just fine.

tl;dr

  • A recent Next.js security flaw prompted me to upgrade to v15.
  • Used @next/codemod and @tailwindcss/upgrade for quick migrations.
  • Replaced deprecated @vercel/style-guide with eslint-config-next.

Join My Newsletter

Occasional notes on software, tools, and things I learn. No spam.

Unsubscribe anytime.

Continue Reading

  • Embeddings rot too. Running pgvector in production.Aug 28, 2026
  • Stop shipping retrieval changes on vibesAug 25, 2026
  • Your RAG is confidently wrong without hybrid searchAug 21, 2026
  • Stop tuning everything. pgvector has three knobs that matter.Aug 18, 2026
  • Your agent's knowledge base is lying to you. Run these 14 checks.Aug 18, 2026