Why I'm Done With Next.js (And You Should Be Too)

Before we dive into the alternatives, let me explain exactly why I burned bridges with Next.js. I've been building React apps since 2017, and Next.js used to be the obvious choice. Pages Router was simple, getServerSideProps made sense, and deployment to Vercel was painless. Then App Router happened.

The App Router Disaster

Server Components Break Everything: I spent two fucking weeks trying to make our authentication work with Server Components in 13.4. The official docs are a maze of "use client" directives that throw 'Error: useState only works in Client Components' when you miss one - which is every other component apparently. Our bundle got bigger somehow, like 200KB+ more bullshit. Thanks, React team.

Middleware Hell: Next.js 14.0.1 middleware runs on every request and debugging is pure hell. I've had middleware conflicts that only surface in production - TypeError: Cannot read properties of null crashed our checkout for 3 hours on a Friday at 9pm. Fun times.

Build Time Nightmare: Our CI/CD went to shit after upgrading - maybe 12+ minutes, maybe more on bad days. Turbopack promises are complete bullshit - it's still slower than Vite for anything beyond a todo app. Cold starts on Vercel Functions hit 2-3 seconds regularly, sometimes worse.

Vercel's Pricing Trap

Here's what nobody talks about: Vercel's pricing gets expensive fast. We hit $400-something in August for a modest e-commerce site that gets maybe 30K uniques - function calls and bandwidth add up quick. Moving to Railway cut our hosting way down, maybe $130-ish, so around 70% savings.

The Image Optimization and Edge Runtime features are Vercel-optimized, meaning they're dogshit on other platforms. Try deploying Next.js to DigitalOcean - image optimization becomes your problem and you'll spend a weekend setting up CloudFlare just to resize images.

What Actually Works

I need frameworks that:

  • Don't require a PhD in React internals to understand
  • Deploy anywhere without vendor-specific hacks
  • Have predictable build times under 5 minutes
  • Don't break existing React patterns I've used for years
  • Come with honest documentation instead of marketing fluff

The alternatives below solve real problems instead of creating new ones. I've used each in production and can tell you exactly where they'll bite you (spoiler: way less than Next.js).

Vite Build Tool

The Real Talk Comparison (No Marketing BS)

Framework

Migration Pain

React Compat

My Honest Take

Build Times

Will It Break?

React Router v7

Pretty easy

95% works

Just fucking use this

~3 min

Rarely

TanStack Start

Takes forever

90% works

Worth it if you like types

~2 min

When types break

Astro

Rebuild everything

Islands only

Amazing for blogs, not dashboards

~1 min

When you try dynamic stuff

SvelteKit

Learn Svelte first

Nope

Great but who has time?

~45 sec

Learning curve is brutal

Nuxt 3

Learn Vue

Nope

Haven't used much honestly

~2 min

Vue weirdness

What Actually Works (From Someone Who Migrated)

Now that you've seen the numbers, let me tell you what it's actually like to live with these alternatives. I've spent real time with each of these frameworks, not just kicking the tires. Here's what you need to know before you make the jump.

React Router v7 - Just Use This

Migration Pain: Low | Reality Check: It's basically Remix with better branding

I migrated our SaaS dashboard from Next.js to React Router v7 over maybe a month - started mid-September, done by early October. Here's what actually happened:

The Good Shit

  • 95% of components worked unchanged - seriously, just move your files
  • Loaders are way cleaner than getServerSideProps - no more prop drilling bullshit
  • Deploys anywhere - Railway, Fly.io, even fucking Heroku still works
  • Build times cut by 60% - from 8 minutes to 3 minutes in our CI

The Gotchas That'll Bite You

Real Story: Our checkout conversion went up after migrating - probably 15-20% improvement, mostly because pages actually load fast instead of Next.js's crawl. Lost a weekend debugging session handling that broke for no fucking reason, but totally worth it.

// Next.js: Confusing as hell
export async function getServerSideProps(context) {
  // Hope the context has what you need
  const data = await fetchUserData(context.params.id);
  return { props: { data } };
}

// React Router v7: Makes sense
export async function loader({ params }) {
  // Params are right there, no guessing
  return json(await fetchUserData(params.id));
}

TanStack Start - Type Safety Heaven

Migration Pain: Medium | Reality Check: Worth it if you like your types

Spent way too long moving our API-heavy app to TanStack Start - like 6+ weeks, maybe more. The end-to-end type safety is fucking magical when TypeScript doesn't shit itself with 'Type instantiation is excessively deep' errors, which happens more than I'd like to admit.

Why I Love It

  • Types flow everywhere - database to UI without any manual work
  • Server functions are clean - no more API routes scattered everywhere
  • Vite dev server is lightning - hot reloads in 0.3 seconds consistently
  • Built by people who understand React - TanStack Query integration is seamless

Where It'll Hurt

  • Learning curve is real - took our junior dev 2 weeks to get comfortable
  • Documentation assumes you know things - not great for beginners
  • Edge cases break type inference - spend time debugging TypeScript instead of features

The migration took twice as long as React Router v7, but the maintenance burden dropped significantly. Worth it for complex apps.

Vite Logo

Astro - Performance Porn

Migration Pain: High | Reality Check: Rebuild everything but holy shit it's fast

Migrated our company blog and marketing site to Astro. Islands architecture is a game-changer for content sites.

The Speed Gains Are Real

  • Lighthouse 97 consistently - no optimization needed
  • Bundle size dropped way down - from ~340KB to maybe 60KB, way smaller
  • First paint way faster - under half a second even on slow connections
  • Interactive in under 1 second - unlike Next.js which takes 3-4 seconds

The Reality Check

  • You're rebuilding components - React components work in islands but architecture changes
  • Hydration boundaries are confusing - took me 3 attempts to get user auth right
  • Dynamic content is tricky - server islands help but still learning

Perfect for marketing sites, blogs, documentation. Don't use it for dashboards or complex interactivity.

SvelteKit - Different But Better

Migration Pain: Very High | Reality Check: Learn Svelte or don't bother

Built a client project with SvelteKit because they wanted "the fastest possible site." Took like 8+ weeks to deliver what would've been maybe 4 weeks in React - learning curve tax is real.

Why Svelte Rules

  • Compile-time optimization - no runtime framework bloat
  • State management that makes sense - no context provider hell
  • Animations built-in - transitions work without libraries
  • Bundle sizes are tiny - ~130KB for a full e-commerce site

The Learning Tax

  • Reactivity patterns are different - unlearning useState() took time
  • Component communication is weird - event forwarding vs prop drilling
  • Ecosystem is smaller - some packages just don't exist yet
  • TypeScript support is getting there - but not as mature as React

Great choice if you're starting fresh. Terrible choice if you need to move fast with an existing React team.

Migration Reality Check

If you need to move fast: React Router v7
If you want type safety: TanStack Start
If it's mostly content: Astro
If you want to learn something new: SvelteKit
If you're happy with Next.js: Stay put, stop reading blogs

That's the high-level view, but I know you've got practical questions about actually making this switch. Let me address the concerns I hear most often from teams considering migration.

Frequently Asked Questions: Migrating from Next.js

Q

Should I actually give a shit about migrating from Next.js?

A

Migrate if:

  • Your Vercel bill hit $300+ month and you're not even doing that much traffic
  • App Router broke your authentication and you spent 3 days reading confusing docs
  • Build times are killing your CI/CD
  • 8+ minute builds are not normal
  • Your junior devs are crying trying to understand Server Components
  • You want to deploy somewhere else but Next.js features only work on Vercel

Don't migrate if:

  • Your app works and you're making money
  • Your team is productive with the current setup
  • You don't have 4-8 weeks to spend on this migration
  • You're using tons of Next.js-specific features that would be painful to replace
Q

How long will this migration actually take?

A

React Router v7: Maybe a month for most apps. Did our SaaS in maybe 4 weeks but spent days debugging auth session cookies that kept getting cleared.

TanStack Start: 6-10 weeks easy, probably longer. The type-safety setup takes forever, then you hit 'Type instantiation is excessively deep' errors that eat another week.

Astro: 4-8 weeks for content sites. Marketing sites are straightforward, but user authentication with islands architecture made me want to quit programming.

SvelteKit: 8+ weeks minimum. You're learning reactive declarations, event forwarding, and why $: statements sometimes don't trigger when you expect them to.

What will actually slow you down and make you want to quit:

  • Custom authentication built around Next.js middleware patterns (plan for 2 weeks minimum)
  • Image optimization if you used next/image heavily (you'll miss that automatic WebP conversion)
  • API routes that depend on Next.js Request/Response objects (different everywhere)
  • Middleware that runs on every request (especially auth middleware)
  • Testing - you'll need to rewrite every single integration test from scratch
Q

Can I migrate page by page or is it all-or-nothing?

A

React Router v7: Yes, you can migrate incrementally. I think I moved our dashboard page by page over a couple weeks, worked pretty well.

TanStack Start: Kinda. The routing has to be all-in but you can keep Next.js API routes during transition, I think.

Astro: Only for static content. Dynamic parts need to be rebuilt from scratch, no way around it.

SvelteKit/Nuxt: Nope. Complete rewrite required since you're changing frameworks entirely.

Pro tip: Start with the least critical pages first. I learned this the hard way when I migrated our billing page first and broke Stripe webhooks for 2.5 hours on a Thursday afternoon. Nothing like 47 support tickets asking why payments aren't working. Good times.

Q

Will my team hate me for making them learn new shit?

A

React Router v7: Barely any learning curve. If they know React, they're fine. Took our team a few days to get comfortable.

TanStack Start: TypeScript-heavy team will love it. Everyone else will complain for 2 weeks then admit it's better.

Astro: The islands concept confuses people initially. Give them a week to figure out hydration patterns.

SvelteKit: You're asking them to learn a new framework. Expect weeks of "why can't we just use React?"

Reality check: Senior devs adapt quickly. Junior devs will struggle with anything that's not exactly like Next.js.

Q

What about SEO and performance?

A

SEO works fine in all these alternatives:

  • Server-side rendering available in all options
  • Meta tag management through framework-specific solutions (haven't tested all of them)
  • Sitemap generation supported, I think
  • Performance is generally better because less JavaScript bullshit

Performance from my testing (Lighthouse scores on M2 MacBook Pro):

  • Astro: 96-98 (consistently high, best for static)
  • SvelteKit: 91-95 (excellent when you avoid reactivity bugs)
  • TanStack Start: 89-93 (fast but TypeScript compile time kills dev experience)
  • React Router v7: 87-91 (solid, no weird performance cliffs)
Q

How do I handle existing integrations?

A

Most integrations work across frameworks:

  • Authentication: Auth0, Clerk work fine. NextAuth... maybe? Haven't tested extensively
  • Databases: Prisma, Drizzle work everywhere, obviously
  • CMS: Contentful, Strapi work fine. Sanity probably works too
  • Analytics: Google Analytics, Plausible work universally

Framework-specific considerations:

  • Vercel optimizations (Image, Font) need alternatives
  • Next.js-specific packages require substitution or manual implementation
  • API routes translate differently based on framework choice
Q

What are the hosting implications?

A

All alternatives offer hosting flexibility:

  • Deploy anywhere: Unlike Next.js's Vercel optimizations, these frameworks work well on any platform
  • Cost reduction: Teams report big hosting cost savings by moving off Vercel, like 50-70%
  • Performance consistency: Performance doesn't degrade on non-Vercel hosts

Recommended hosting options:

  • Netlify: Excellent for all frameworks
  • Railway: Great developer experience, competitive pricing
  • Fly.io: Global edge deployment
  • Self-hosted: Full control with Docker deployment
Q

Should small teams consider migration?

A

Consider migration if:

  • Current Next.js complexity slows development
  • Hosting costs are significant portion of budget
  • Team wants to learn new technologies
  • Long-term vendor independence is important

Stay with Next.js if:

  • Team is highly productive with current setup
  • Migration time would delay other priorities
  • Vercel ecosystem provides significant value
  • Complex application would require extensive testing

Middle ground: Try alternatives on new projects while maintaining existing Next.js applications.

Q

What about community and ecosystem support?

A

Ecosystem maturity (as of 2025):

  • React Router v7: Mature ecosystem, backed by Shopify usage
  • Astro: Rapidly growing, strong content-focused community
  • SvelteKit: Smaller but active community, growing enterprise adoption
  • TanStack Start: New but backed by proven TanStack libraries
  • Nuxt 3: Mature Vue ecosystem with extensive modules

All alternatives have sufficient ecosystem support for most use cases, with active communities and regular updates.

Framework Ecosystem

React Router v7 Migration: Hands-On Tutorial

If the FAQ convinced you to try React Router v7, here's the step-by-step process that worked for me. No theoretical bullshit - this is what I actually did to migrate a production app.

The Real Migration Experience

No good videos yet - React Router v7 is too new for decent YouTube tutorials. Instead, here's the actual migration process I used:

Step 1: Start Small, Break Things

I migrated our smallest service first - a simple blog with maybe 5 routes. Took a few hours including debugging auth issues.

Step 2: File Structure Changes

// Before (Next.js)
pages/
  index.js
  posts/[id].js
  
// After (React Router v7)  
app/
  routes/
    _index.tsx
    posts.$id.tsx

Step 3: Data Loading Reality

Next.js way that sucked:

export async function getServerSideProps(context) {
  // Hope context has what you need
  const data = await fetchUserData(context.params.id);
  return { props: { data } };
}

Router v7 way that works:

export async function loader({ params }) {
  // Params are right there, no confusion
  return json(await fetchUserData(params.id));
}

The 3AM Debugging Truth

Authentication broke first, naturally. Spent hours at 3am figuring out why sessions kept getting cleared - React Router v7 session handling is different from Next.js middleware bullshit. The Discord actually came through when some hero posted the exact solution I needed. Fucking lifesaver.

What I wish I knew before starting: Environment variables work completely differently (no more NEXT_PUBLIC_ prefixes), forms need `

` components instead of regular HTML forms, and hot reload is fucking fast - way faster than Next.js's crawl.

That covers the practical migration process, but you'll need more resources to handle the edge cases. Here's where to go when the docs fail you and Stack Overflow has no answers.

Additional Resources That Actually Help

Start with the official examples - they're better than any tutorial video. The migration guide from Remix covers most gotchas, and Shopify's engineering blog has real-world migration stories.

For authentication issues, check out Clerk's React Router integration and Auth0's examples. The React Router Discord has active maintainers who actually answer questions - way better than Stack Overflow threads.

If you're stuck on data fetching patterns, the TanStack Query integration works seamlessly with Router v7 loaders. Don't forget to check Vite's deployment guide for hosting options beyond Vercel.

Migration Resources and Tools

Related Tools & Recommendations

compare
Similar content

Next.js, Nuxt, SvelteKit, Remix vs Gatsby: Enterprise Guide

18 months in Gatsby hell, 6 months testing everything else - here's what actually works for enterprise teams

Next.js
/compare/nextjs/nuxt/sveltekit/remix/gatsby/enterprise-team-scaling
100%
compare
Similar content

Remix vs SvelteKit vs Next.js: SSR Performance Showdown

I got paged at 3AM by apps built with all three of these. Here's which one made me want to quit programming.

Remix
/compare/remix/sveltekit/ssr-performance-showdown
62%
compare
Similar content

Astro, Next.js, Gatsby: Static Site Generator Benchmark

Just use fucking Astro. Next.js if you actually need server shit. Gatsby is dead - seriously, stop asking.

Astro
/compare/astro/nextjs/gatsby/static-generation-performance-benchmark
58%
tool
Similar content

SvelteKit: Fast Web Apps & Why It Outperforms Alternatives

I'm tired of explaining to clients why their React checkout takes 5 seconds to load

SvelteKit
/tool/sveltekit/overview
51%
tool
Similar content

Migrate from Create React App to Vite & Next.js: A Practical Guide

Stop suffering with 30-second dev server startup. Here's how to migrate to tools that don't make you want to quit programming.

Create React App
/tool/create-react-app/migration-guide
48%
tool
Similar content

Astro Overview: Static Sites, React Integration & Astro 5.0

Explore Astro, the static site generator that solves JavaScript bloat. Learn about its benefits, React integration, and the game-changing content features in As

Astro
/tool/astro/overview
48%
tool
Similar content

Remix Overview: Modern React Framework for HTML Forms & Nested Routes

Finally, a React framework that remembers HTML exists

Remix
/tool/remix/overview
46%
integration
Similar content

Supabase Next.js 13+ Server-Side Auth Guide: What Works & Fixes

Here's what actually works (and what will break your app)

Supabase
/integration/supabase-nextjs/server-side-auth-guide
43%
tool
Similar content

Turbopack: Why Switch from Webpack? Migration & Future

Explore Turbopack's benefits over Webpack, understand migration, production readiness, and its future as a standalone bundler. Essential insights for developers

Turbopack
/tool/turbopack/overview
38%
tool
Similar content

Next.js App Router Overview: Changes, Server Components & Actions

App Router breaks everything you know about Next.js routing

Next.js App Router
/tool/nextjs-app-router/overview
36%
tool
Similar content

Next.js Overview: Features, Benefits & Next.js 15 Updates

Explore Next.js, the powerful React framework with built-in routing, SSR, and API endpoints. Understand its core benefits, when to use it, and what's new in Nex

Next.js
/tool/nextjs/overview
31%
integration
Recommended

Stop Your APIs From Breaking Every Time You Touch The Database

Prisma + tRPC + TypeScript: No More "It Works In Dev" Surprises

Prisma
/integration/prisma-trpc-typescript/full-stack-architecture
30%
integration
Similar content

Stripe Next.js Integration: Complete Setup & Debugging Guide

I've integrated Stripe into Next.js projects 50+ times over 4 years. Here's the shit that'll break and how to fix it before 3am.

Stripe
/integration/stripe-nextjs/complete-integration-guide
30%
pricing
Recommended

Backend Pricing Reality Check: Supabase vs Firebase vs AWS Amplify

Got burned by a Firebase bill that went from like $40 to $800+ after Reddit hug of death. Firebase real-time listeners leak memory if you don't unsubscribe prop

Supabase
/pricing/supabase-firebase-amplify-cost-comparison/comprehensive-pricing-breakdown
29%
review
Recommended

Vite vs Webpack vs Turbopack: Which One Doesn't Suck?

I tested all three on 6 different projects so you don't have to suffer through webpack config hell

Vite
/review/vite-webpack-turbopack/performance-benchmark-review
28%
tool
Similar content

React Overview: What It Is, Why Use It, & Its Ecosystem

Facebook's solution to the "why did my dropdown menu break the entire page?" problem.

React
/tool/react/overview
28%
troubleshoot
Similar content

Fix Slow Next.js Build Times: Boost Performance & Productivity

When your 20-minute builds used to take 3 minutes and you're about to lose your mind

Next.js
/troubleshoot/nextjs-slow-build-times/build-performance-optimization
24%
troubleshoot
Similar content

Fix Next.js App Router Hydration Mismatch Errors & Debug Guide

Your Components Work Fine Until You Deploy Them? Welcome to Hydration Hell

Next.js App Router
/troubleshoot/nextjs-app-router-migration-issues/hydration-mismatch-solutions
24%
tool
Similar content

Vercel Overview: Deploy Next.js Apps & Get Started Fast

Get a no-bullshit overview of Vercel for Next.js app deployment. Learn how to get started, understand costs, and avoid common pitfalls with this practical guide

Vercel
/tool/vercel/overview
24%
howto
Similar content

React 19 Migration Guide: Fix Breaking Changes & Upgrade React 18

How to upgrade React 18 to React 19 without destroying your app

React
/howto/fix-react-19-breaking-changes/react-19-migration-guide
24%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization