Bobby Encoded
PostsAbout
PostsAbout

© 2026 Bobby Jose

← Back to Blog

Choosing a React Framework in 2025: A Solo Developer's Hard-Earned Lessons

February 20, 2025 · 10 min read

React, Next.js, Remix, Framework, Solo Developer

Introduction

When I started building Glucoplate (a nutrition tracking app), I spent three weeks just deciding which React framework to use. Three weeks. I read every comparison article, watched every YouTube video, and lurked in Discord channels. The React ecosystem had become a minefield of opinions.

This post is what I wish I'd read before that wasted month. I'll cover the current state of React frameworks, what went wrong with Remix, why Next.js isn't perfect either, and what I ultimately chose for Glucoplate - and would choose differently today.


The State of React Frameworks in 2025

The landscape looks like this:

FrameworkStatusBest For
Next.jsMature, complexProduction SaaS, e-commerce
Remix / React Router v7Identity crisisUnclear - see below
TanStack StartBeta, promisingDevelopers who want control
AstroStableStatic sites, blogs
Vite + ReactStableSPAs, maximum control

Let me explain why this table is more nuanced than it looks.


What Happened to Remix?

Remix was supposed to be the Next.js killer. It had elegant data loading, built-in form handling, and a philosophy of "use the platform." I was genuinely excited about it in 2023.

Then things got weird.

The React Router Merge

In late 2024, Remix merged with React Router. What was supposed to be Remix v3 became React Router v7. The Remix brand essentially disappeared. If you want Remix's features today, you install react-router and use a Vite plugin.

This wasn't necessarily bad - consolidation can be good. But the messaging was confusing. Is it Remix? Is it React Router? The documentation split across two sites. The community fragmented.

Then Remix v3 Abandoned React Entirely

Here's where it gets truly bizarre: Remix v3 (announced in 2025) completely dropped React in favor of a Preact fork. Their reasoning included being "LLM-friendly" - yes, optimizing for AI code generation.

As one developer put it: "This shift is such a radical departure that it begs the question: why even call it Remix?"

The React Router team also has a reputation for massive breaking changes. One Hacker News comment captured the sentiment: "I have never, in my entire career, seen a library change as many times as React Router." Every major version required significant rewrites.

The Churn Fatigue

For a solo developer, this churn is exhausting. I don't have a team to absorb migration costs. When I pick a framework, I need it to be stable for years, not months. Remix's trajectory made me nervous about long-term maintenance.

Remix in 2025

I can't recommend Remix for new projects in 2025. The React Router v7 path is viable but confusing. The Remix v3 path abandons React entirely. Unless you have a specific reason and are comfortable with uncertainty, look elsewhere.


Next.js: The "Safe" Choice That Isn't Simple

Next.js is the default recommendation, and I understand why. It has:

  • The largest community and most tutorials
  • Vercel's infrastructure and support
  • The most job opportunities
  • Comprehensive documentation

But Next.js in 2025 is not the simple framework it was in 2020.

The App Router Complexity

Next.js 13 introduced the App Router, a complete paradigm shift from the Pages Router. Server Components, 'use client' directives, streaming, partial prerendering - it's powerful but complex.

For Glucoplate, I had to learn:

  • When to use Server vs Client Components
  • Why my component suddenly stopped working (forgot 'use client')
  • How data flows between server and client boundaries
  • Why my simple state management broke

The mental model is genuinely hard. I spent a week debugging an issue that turned out to be a Server Component trying to use useState.

Security Concerns

In late 2025, critical vulnerabilities were disclosed in both React and Next.js (CVE-2025-55182 and CVE-2025-66478). These allowed unauthenticated remote code execution in default configurations. Even freshly generated apps were vulnerable.

This shook my confidence. For a solo developer handling user data, security is paramount. Next.js patched quickly, but it highlighted the risks of complexity.

Performance Gotchas

Next.js can be fast, but it's easy to make it slow:

  • Navigation lag with dynamic routes
  • Unnecessary server renders for client-side navigations
  • Bundle size creep from accidental client imports

I spent days optimizing Glucoplate's navigation before realizing I'd misconfigured prefetching.


TanStack Start: The Exciting Alternative

TanStack Start emerged in 2025 as a serious contender. It's built on:

  • TanStack Router (type-safe, excellent DX)
  • Vite (fast builds)
  • Nitro (server runtime)

The React team actually recommends it, which says something.

Why Developers Are Switching

The appeal is control and simplicity:

  • Client-first rendering with optional SSR
  • Type-safe routing validated at compile time
  • No magic - you can understand the entire stack
  • Feels like "React, but better"

Why I Didn't Choose It

One reason: it's still in beta. For a production app that handles user nutrition data, I couldn't risk beta-level stability. If I were starting Glucoplate today (late 2025), I'd seriously consider waiting for TanStack Start v1.


What Glucoplate Actually Uses

After all that analysis paralysis, Glucoplate runs on Vite + React Router + TanStack Query. Here's my honest assessment:

What Works Well

  1. Blazing Fast Development - Vite's hot module replacement is instant. No waiting for compiles. The feedback loop is incredibly tight.

  2. Complete Control - No framework magic. I understand every line of configuration. When something breaks, I know where to look.

  3. React Router v7 - Stable, well-documented routing. Yes, the same React Router with the churn history - but v7 with Vite is actually solid for SPAs.

  4. TanStack Query - Server state management that just works. Caching, refetching, optimistic updates - all handled elegantly.

  5. Separate Backend - Glucoplate has a .NET backend. Keeping frontend and backend separate made more sense than cramming everything into Next.js API routes.

What's Painful

  1. No SSR Out of the Box - SEO requires extra work. For Glucoplate (a logged-in app), this doesn't matter. For a marketing site, it would.

  2. More Setup - No magic file-based routing. I had to configure more manually than Next.js would require.

  3. Deployment Flexibility - Good and bad. More options, but also more decisions. I deploy to Azure Static Web Apps, which works great but required configuration.


What I'd Do Differently

If Starting Today (Late 2025)

I'd evaluate TanStack Start seriously once it hits stable. The type-safe routing alone would have saved me hours of debugging.

For static pages (landing, docs), I'd use Astro and keep the app separate.

If I Needed Maximum Stability

Plain Vite + React Router v7 + React Query gives you complete control with battle-tested libraries. No framework opinions, no magic. You understand every line.

my-app/
├── src/
│   ├── routes/           # File-based routing with React Router
│   ├── components/
│   ├── hooks/
│   └── main.tsx
├── vite.config.ts
└── package.json

This stack won't surprise you with breaking changes or security vulnerabilities in framework code you don't understand.


Decision Framework for Solo Developers

Here's what I wish someone had told me:

Choose Next.js If:

  • You're building a SaaS or e-commerce app
  • You need SEO and server-rendering
  • You value ecosystem maturity over simplicity
  • You're comfortable with framework opinions

Choose Vite + React If:

  • You're building a dashboard or internal tool
  • SEO doesn't matter (it's behind auth)
  • You want maximum control
  • You prefer understanding your stack completely

Choose Astro If:

  • You're building a content site, blog, or docs
  • Performance is critical
  • Interactivity is limited

Avoid Remix (for now) If:

  • You need long-term stability
  • You can't absorb frequent breaking changes
  • You're confused by the React Router v7 vs Remix v3 situation

Consider TanStack Start If:

  • You're starting after it reaches v1 stable
  • You want Next.js power with Vite simplicity
  • Type safety is a priority

The Unsexy Truth

The framework matters less than finishing your product.

I spent three weeks choosing a framework. Then I spent eight months building features. The framework choice accounts for maybe 5% of my total development time. Most of my bugs were business logic, not framework issues.

If I'd spent one week evaluating and picked any reasonable option, Glucoplate would have launched a month earlier.

Pick something mainstream, learn it deeply, and ship.

Next.js isn't perfect. Neither is anything else. But a shipped app on an imperfect framework beats a perfect architecture that never launches.


Questions Worth Considering

Framework choice reflects deeper architectural decisions. Here are questions that clarify the "why":

Q: Why Vite + React Router instead of Next.js for Glucoplate?

Glucoplate is primarily a logged-in application - users authenticate before seeing most features. This means SEO doesn't matter for 90% of the app. Next.js's main advantages (SSR, Server Components) weren't worth the complexity cost. With a separate .NET backend handling business logic, I didn't need API routes either. Vite gave me faster development, simpler mental model, and complete control over the build.

Q: When would Next.js have been the better choice?

If Glucoplate had significant public-facing content that needed SEO - recipe pages, a public blog, shareable meal plans - Next.js would make sense. Also if I wanted a JavaScript-only stack without a separate backend. The tradeoff is complexity for features. Know what features you actually need.

Q: What about TanStack Start?

I'm watching it closely. Once it hits stable, it could offer the best of both worlds - Vite's speed with optional SSR when needed. For a new project in late 2025, I'd seriously evaluate it alongside the Vite + React Router combo.


Summary

FrameworkRecommendationCaveat
Next.jsSafe default for productionComplex, watch for security updates
Vite + ReactBest for controlMore setup, no SSR by default
TanStack StartMost promisingStill in beta
AstroBest for staticLimited interactivity
RemixWait and seeIdentity crisis, uncertain future

The React ecosystem is more fragmented than ever. But for solo developers, the advice is simple: pick a mainstream option, learn it well, and focus on building your product.

Glucoplate exists because I eventually stopped researching and started coding. Your app will too.


Sources and Further Reading

  • Strapi - Next.js vs Remix 2025 Comparison
  • The New Stack - Why Developers Turn to TanStack
  • LogRocket - Remix 3 Ditched React
  • Robin Wieruch - React Tech Stack 2025
  • Kettanaito - My Struggle With Remix

Part of the Developer Reference series.

← Previous

React Foundations: JSX, Components, and Props

Next →

C# Quick Reference Guide