Stacks vs React Router (Remix)

Remix bet on the platform. Stacks makes the same bet and keeps going past the request.

Loaders, actions, forms, and nested routes are a genuinely good model, and Stacks shares most of the philosophy: server first, HTML first, no state library needed to show a list of rows. The difference is what happens after the response, where Remix stops and Stacks has a queue, a mailer, a scheduler, and an admin.

What React Router (Remix) is.

In its own terms, not ours.

Remix v2 became the framework mode of React Router 7, and React Router 8 (June 2026) continues it as a non-breaking upgrade. The Remix name now belongs to Remix 3, a separate full-stack framework with its own auth, sessions, and database integrations, built on its own component model rather than React and in release candidate since August 2026; this page compares the React Router path. It is built around web standards: Request and Response, forms that post, nested routes that own their data and their errors. It runs anywhere a fetch handler runs, and the mental model is smaller than most of its peers. Teams that adopted it rarely wanted to go back to client-side data fetching, and that is a strong signal.

Where each one wins.

Same amount of room on both sides, on purpose.

Pick React Router (Remix) for

  • Nested routing and error boundaries

    Data, pending state, and errors scoped per route segment is a better model than most frameworks offer. Stacks has layouts and @errorBoundary blocks, but no per-segment loader model.

  • Standards all the way down

    Request, Response, FormData, and fetch means less framework-specific knowledge to carry between jobs.

  • React and its ecosystem

    The component libraries, the tooling, and the hiring pool.

  • Runs almost anywhere

    Any platform with a fetch handler will host it, including workers and edge runtimes.

Pick Stacks for

  • A data layer, not a loader

    Remix tells you where to fetch data. Stacks gives you the models, the migrations, the validation, and the factories that produce it.

  • Work after the response

    Queues, schedules, events, mail, and notifications are first-party, so the slow half of the application has somewhere to live.

  • Auth and roles included

    Sessions, tokens, passkeys, two-factor, RBAC, and policies rather than a per-project auth assembly.

  • Deploy from config

    The infrastructure that runs it is described in the repository and applied by one command.

  • Your own mail server

    Stacks ships an SMTP and IMAP server, so hello@ and support@ on your domain are real mailboxes on your own box, readable in Mail.app or any client. buddy mail:provision creates them and their MX, SPF, DKIM, and DMARC records. None of the frameworks compared here ships one.

Side by side.

The dimensions teams actually decide on.

Dimension Stacks React Router (Remix)
Routing File and code routes, groups, model binding Nested file routes with per-segment data
Mutations Actions with model-declared validation Route actions with FormData
Data layer First-party ORM Choose your own
Auth Included remix-auth or a service
Background work Included Bring your own
Views STX: SSR, streaming, islands, signals React, server-rendered and hydrated
Admin surface Generated from models Build it yourself
Deploy buddy deploy to Hetzner, AWS, or an SSH box Any fetch-handler host
Mail server Built in: SMTP, IMAP, real mailboxes None; inboxes come from a hosted provider

If you did move.

What ports cleanly, what does not, and where to start.

The shapes line up

Loaders become read actions, route actions become write actions, and the validation moves onto the model.

Sessions and auth transfer conceptually

Cookie sessions and redirect-on-unauthenticated work the same way; the implementation is provided rather than assembled.

Components are the cost

React components are the part that does not port. Consider keeping React Router on the front while the backend moves.

The verdict.

Both answers are real. Most teams already know which paragraph is theirs.

Choose React Router (Remix) when

You want React with a standards-based server model, and nested routing with per-segment data and errors is worth building the rest around.

Choose Stacks when

You like that philosophy but want the database, the queue, the mail, and the admin to come with it.

The frameworks that usually come up in the same conversation.