Appearance
When I'd pick Vite SPA vs Next
Both ship React. The question is how much framework you want between you and the browser.
I'd start with Vite + React when…
- It's clearly a dashboard / authenticated app behind a login
- SEO is mostly irrelevant
- You want to choose Router / Query / deploy target yourself
- The team already thinks in SPA terms (and likes that)
- You don't want to debug server/client boundaries on day one
This is the closest thing to a classic Vue 3 + Vite + Vue Router app. Comfortable. Predictable.
I'd start with Next when…
- Marketing pages + app in one repo
- You care about first paint / SEO / OG images without bolting on a separate site
- Server-side data access (DB, secrets) should stay off the client by default
- You want file-based routing + deployments that assume a Node/serverless target
- The org already standardized on Vercel/Next (politics are real 😅)
Closest cousin: Nuxt. If you liked Nuxt's "batteries included" feel, Next will feel less alien than a bare SPA.
Hybrid realities
Plenty of teams:
- Use Next for the public site + auth entry
- Or use a Vite SPA with a separate Astro/Nuxt/Next marketing site
- Or put TanStack Query in client islands inside Next anyway
I've done all three. Dogma loses to constraints.
A simple decision sketch
text
Need SSR/SEO/server secrets as a default?
|-- yes → lean Next (or Nuxt if staying on Vue)
|-- no → Vite SPA is fine
Need rich client interactivity everywhere?
|-- yes → SPA, or Next with many client islands (be honest about cost)
|-- no → RSC-heavy Next can stay thin on the clientClosing the Next section
If you came from Vue:
- Learn React SPA mental model first (hooks, props, effects)
- Add Router + Query + a small store
- Then learn where
'use client'belongs in Next
Skipping straight to RSC while still fuzzy on re-renders is how you get angry at the framework instead of your boundaries.
Cheatsheet next - dense tables for when you forget the name of the thing.
Until next time folks!