"Which framework should I use?" is the favourite Twitter question of developers and the worst question from founders. The short answer is it depends, but on what exactly is where the value sits. In this note, the concrete criteria for picking between the three dominant frameworks in 2026.
💰 The stack choice affects the budget. See the complete Costa Rica pricing guide — the wrong stack can add 30–50% to project cost.
State of the art (May 2026)
Three frameworks lead the React ecosystem:
- Next.js 16 — Vercel. Mature App Router, stable React Server Components, Turbopack default. Still the most used by a wide margin.
- Astro 5 — Community. Designed for content sites. Ships 0 KB of JS by default. Supports Islands with any framework (React, Vue, Svelte).
- Remix / React Router v7 — Shopify. The Remix and React Router merge solved the brand confusion. Loaders + actions model, excellent with Cloudflare Workers.
The "framework wars" ended two years ago. Today each one wins in a different context. The question is what is your context.
When Next.js is the obvious choice
If you're building one of these, pick Next.js without much thought:
- App with authentication: dashboards, admin panels, user area.
- E-commerce: catalogue, cart, checkout, seller dashboard.
- Typical SaaS: signup, billing, multi-tenant, integrations.
- App mixing SSG + SSR + ISR + API: Next.js supports all four patterns in the same project. Migrating between them is trivial.
Why it wins
- App Router + RSC give you a coherent mental model: server-first, client opt-in. That reduces JS shipped to the client and improves performance without manual work.
- Documentation + ecosystem are the best. A Stack Overflow question has 5 answers; any React-ecosystem library has Next.js integration.
- Vercel deploy is magic.
git pushand you're in production with SSL, CDN, ISR, image optimisation. It's not "easy deploy", it's "invisible deploy".
Honest trade-offs
- Hosting cost ramps quickly on heavy-SSR projects (USD 100+/month for medium traffic on Vercel). Self-hosting with Docker is an option but you lose part of the magic.
- App Router still moves. RSC + Server Actions are stable but the library ecosystem sometimes lags behind versions.
- Base JS bundle ~70 KB is high for sites that are 90% content.
When to pick Astro over Next.js
If your site is mainly static content (blog, marketing, docs, landing), Astro beats Next.js measurably:
- 0 KB JS by default. Astro produces pure HTML. JS is only shipped where you explicitly request it with an Island (an interactive component).
- Lighthouse 95–100 on Performance is the norm, not the exception.
- Build times 2–3× faster than Next.js for the same page volume.
- Markdown / MDX first-class. File-based content integration is native.
Specific cases where we'd pick it:
- Startup marketing site (5–20 pages).
- Technical blog with 100+ posts.
- Documentation for a SaaS product.
- Consultant's site (1 person, content + portfolio).
When NOT Astro
- If you need user auth and private zones → Next.js.
- If your app changes state in real time (chat, collaboration) → Next.js or Remix.
- If your team doesn't know React/Vue/Svelte and prefers staying on Next.js → valid.
When Remix / React Router v7
Remix's sweet spot are applications with many mutations: long forms, inline edits, intensive CRUD internal tools.
Its loaders + actions model is radically cleaner than useEffect + fetch + reducer for this type of UI:
// Remix / RR v7 — everything on the server
export async function loader({ params }) {
return await getInvoice(params.id)
}
export async function action({ request, params }) {
const form = await request.formData()
await updateInvoice(params.id, form)
return redirect(`/invoices/${params.id}`)
}
Vs the Next.js equivalent that mixes Server Actions with local state. For heavy CRUD, Remix is happier.
Where Remix specifically wins
- Back-office / admin panels with many forms.
- Apps on Cloudflare Workers — best integration in the market.
- Teams coming from PHP / Rails wanting the "form submit → server processes → redirect" model without much in between.
Trade-offs
- Smaller ecosystem than Next.js. Every library has 1 way to integrate with Next.js and 3 dubious ways with Remix.
- No ISR at the level of Next.js. For sites with heavy SSG, Next.js is better.
Quick decision table
| Question | If YES → consider |
|---|---|
| Does your app have login and authenticated zones? | Next.js |
| Is the site 80%+ static content? | Astro |
| Does your app have 10+ forms or heavy CRUD? | Remix |
| Need SSG + SSR + ISR in the same project? | Next.js |
| Is perfect Lighthouse critical to the business? | Astro |
| Are you deploying on Cloudflare Workers? | Remix |
| Team of 1–2 people without prior experience? | Next.js (more docs) |
What should NOT decide the stack
- "It's trending on Twitter" — we're not in 2021 anymore.
- "My friend uses it" — their context is not yours.
- "Framework X is 2× faster on benchmark X" — framework benchmarks rarely translate to your real app.
- "I want to learn Y" — valid for side projects, terrible for client projects.
How we do it at Sirius
Before starting any project, we ask the client 5 questions:
- What's the dominant content type? (static / dynamic / mixed)
- Is there user authentication?
- Expected monthly traffic volume?
- Who maintains it in 2 years? (us, client team, undefined)
- Any hosting restriction? (self-hosted, Cloudflare, AWS)
With those 5 answers, the stack picks itself 90% of the time. The other 10% is genuine trade-off discussion.
If you're about to start a project and you're hesitating between frameworks, let's talk. We don't charge for that conversation — and the answer might save you 4 weeks of rework when you discover mid-project that you picked the wrong stack.
