Stacks vs The T3 Stack

A stack you assemble, or a framework that arrives assembled.

T3 is Next.js, tRPC, Prisma or Drizzle, Tailwind, and NextAuth.js or Better Auth, chosen because each is the strongest in its category and typed end to end. It works. The cost is that you own the seams: five upgrade cadences, five sets of release notes, and every integration point is yours to keep working.

What The T3 Stack is.

In its own terms, not ours.

The T3 Stack is less a framework than a well-argued set of defaults, delivered by create-t3-app. Its central insight, that types should flow from the database to the component without hand-written contracts, is correct and influential. tRPC in particular made typed calls without a code generation step feel normal.

Where each one wins.

Same amount of room on both sides, on purpose.

Pick The T3 Stack for

  • Every part is best in class

    Prisma, tRPC, and Tailwind are excellent tools with large communities and deep documentation.

  • tRPC end-to-end types

    tRPC infers every procedure with no opt-in, and adds batching, subscriptions, and TanStack Query integration. Stacks infers types only for routes registered through its typed router.

  • Swap any piece

    Nothing is welded together, so you can replace the ORM or the auth layer without leaving the stack.

  • Enormous shared knowledge

    Every problem you hit has been hit publicly by thousands of others.

Pick Stacks for

  • One upgrade, not five

    The pieces version together, and buddy upgrade moves the whole application forward.

  • The parts T3 does not cover

    Queues, mail, storage, search, realtime, notifications, admin, and deploy are the ones you would otherwise choose next.

  • One set of conventions

    Where files go and how a feature is built is answered by the framework, so every project reads the same.

  • Deploy and infrastructure

    T3 ends at the application, and most teams then pick a hosting platform. Stacks provisions Hetzner or AWS, or adopts any Linux box over SSH, so the app and its data run on servers you control with no platform fee.

  • 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 The T3 Stack
What it is A framework A curated set of libraries and a scaffolder
API contract REST, a typed client with no generation step, and OpenAPI tRPC procedures typed directly
Data layer One model: schema, validation, factory, migrations Prisma or Drizzle schema, migrations from their CLIs
Auth Included: passkeys, 2FA, social sign-in, RBAC NextAuth.js or Better Auth, configured per project
Background work Included Choose a service
Mail and notifications Included Choose a provider and a library
Upgrades One framework version Independent versions per library
Ceiling on choice Framework conventions, overridable per file Anything you want, and anything you maintain
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.

Procedures become actions

A tRPC procedure and a Stacks action are the same unit of work with a different transport.

Schema first

Port the Prisma or Drizzle schema into models, generate migrations, and check the diff against the existing database before running anything.

Clients change transport

Existing tRPC clients move to the Stacks typed client, which keeps inferred types but changes the call shape, and is the largest single piece of the port.

The verdict.

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

Choose The T3 Stack when

You want maximum control over each layer, tRPC is the contract you want, and maintaining the seams is a price your team is happy to pay.

Choose Stacks when

You would rather spend that maintenance budget on the product, and you want the layers T3 does not cover.

The frameworks that usually come up in the same conversation.