---
title: "Upgrading my blog to Next 15"
description: "I upgraded my blog to Next 15 after a middleware security flaw, using @next/codemod and the Tailwind CLI, and replaced the deprecated @vercel/style-guide."
canonical: https://omiid.me/notebook/43/upgrading-my-blog-to-next-15
author: Omid Sayfun
published: 2025-04-05
updated: 2026-08-09
---

# Upgrading my blog to Next 15

A [Next.js middleware vulnerability](https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware) 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.

## @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:

```shell
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:

```shell
npx @tailwindcss/upgrade
```

## The Turbopack warning came from a webpack fallback

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

```shell
⚠ 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:

```shell
 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](https://www.npmjs.com/package/@next/eslint-plugin-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.
