Stacks vs RedwoodJS

Same ambition, different bets.

Redwood set out to be the full-stack framework JavaScript never had, and much of it landed: generators, cells, Prisma-backed services, auth providers, and background jobs. Stacks wants the same thing and made different choices about the runtime, the transport, and how much of the infrastructure belongs in the repository.

What RedwoodJS is.

In its own terms, not ours.

RedwoodJS paired a React front end with a GraphQL services layer, Prisma for data, several auth providers, a mailer, background jobs, and generators that scaffold both halves of a feature. In 2025 the core team renamed it Redwood GraphQL, kept it on security fixes, and moved its focus to RedwoodSDK, a separate React Server Components framework that runs only on Cloudflare. The community continues the GraphQL framework as CedarJS. Its opinionated, batteries-included stance is still the closest philosophical neighbour Stacks has in JavaScript.

Where each one wins.

Same amount of room on both sides, on purpose.

Pick RedwoodJS for

  • React and GraphQL maturity

    If you want React on the front and a schema-first API in the middle, Redwood has years of that path worn in.

  • Prisma

    Prisma is a superb, widely known ORM with excellent tooling, and Redwood is built around it.

  • Established community

    Redwood has shipped since 2020, with more production users and third-party writing than Stacks, and CedarJS continues the GraphQL framework with a documented upgrade path.

  • Cells

    The cell pattern for loading, empty, failure, and success states is a genuinely good idea for data-driven interfaces.

Pick Stacks for

  • One runtime

    Bun for the server, the tests, the CLI, and the build today, with more runtimes planned and no separate bundler configuration to reconcile.

  • More in the box

    Notifications, SMS, push, search indexing, commerce, CMS, and an admin dashboard are first-party, and storage is a stable feature rather than an experimental one.

  • Infrastructure included

    DNS, TLS, CDN, and mail records are declared in config and applied by buddy deploy to servers you own, without a separate infrastructure tool. RedwoodSDK, by contrast, runs only on Cloudflare.

  • Model-driven migrations

    Schema comes from the model definitions and is diffed into SQL, rather than being maintained in a separate schema file.

  • 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 RedwoodJS
Front end STX components React, with RSC in RedwoodSDK
API transport REST with generated OpenAPI GraphQL (Redwood GraphQL, CedarJS), server functions in RedwoodSDK
Data layer First-party ORM, models drive migrations Prisma schema drives migrations
Auth First-party sessions, tokens, passkeys, RBAC dbAuth or a third-party provider
Background jobs Queues, batches, schedules, workers Background jobs with a database queue
Runtime Bun today, more runtimes planned Node.js, or Cloudflare Workers for RedwoodSDK
Admin surface Dashboard generated from models Scaffold generators produce CRUD pages
Infrastructure Declared in config/cloud.ts Deploy targets and your own IaC, Cloudflare only for RedwoodSDK
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.

Services become actions

A Redwood service function is close to a Stacks action: one job, typed input, typed result.

Prisma schema becomes models

Each Prisma model maps to a defineModel() with attributes and relationships, after which migrations are generated for you.

GraphQL consumers need a plan

Stacks is REST-first. A client depending on GraphQL needs either a gateway or a client rewrite.

The verdict.

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

Choose RedwoodJS when

You want React and GraphQL with an opinionated full-stack structure and Prisma underneath, which CedarJS now carries forward, or you want React Server Components on Cloudflare, which is what RedwoodSDK is for.

Choose Stacks when

You want the same completeness but on Bun, over REST, with notifications, search, storage, an admin dashboard, and a deploy to servers you own included.

The frameworks that usually come up in the same conversation.