Stacks vs Laravel

Everything you like about Laravel, in the language your front end already speaks.

Stacks does not pretend to be an independent invention. Models, migrations, queues, mail, events, gates, and an expressive CLI are Laravel ideas, and they are good ones. What changes is the language: one TypeScript type graph from the database row to the rendered view, with no boundary in between.

What Laravel is.

In its own terms, not ours.

Laravel is the most complete web framework in any language, and fifteen years in it shows: Eloquent, queues, Horizon, Reverb, Livewire, Inertia, Filament, Nova, Forge, Laravel Cloud, a first-party AI SDK since Laravel 13, and a community that has written about every problem you will meet. If you are a PHP team, nothing on this page is a reason to leave, and this comparison is not trying to be one.

Where each one wins.

Same amount of room on both sides, on purpose.

Pick Laravel for

  • Maturity and ecosystem

    Fifteen years of packages, hosting products, books, courses, and conference talks. Stacks is early and its ecosystem is small by comparison.

  • Hosting is a solved problem

    Forge, Laravel VPS, and every shared host on earth run PHP, and Laravel Cloud will autoscale and scale to zero for you with no server to manage. Stacks has no managed platform of its own. Deploying Laravel is boring in the best sense.

  • Filament and Nova

    The admin panel ecosystem in Laravel is deeper than the built-in Stacks dashboard, particularly for heavily customised back offices.

  • Hiring

    The pool of experienced Laravel developers is far larger than the pool who have used Stacks.

Pick Stacks for

  • One language, one type graph

    The model, the action, the route, the view, and the API client are all TypeScript and all typed against each other. Laravel Wayfinder (in beta) can generate typed route functions for a TypeScript front end, but the data that crosses them still starts life as a PHP array.

  • Migrations from models

    Schema is declared on the model and diffed into SQL, rather than being maintained twice.

  • Front end in the box

    STX is part of the framework: server rendering, static generation with incremental regeneration, island hydration, streaming, and fine-grained signals. There is no Livewire or Inertia decision to make, and no choice between React, Vue, and Svelte after that.

  • Infrastructure in the repository

    DNS records, TLS certificates, mail records, and a CDN (Cloudflare, or CloudFront on AWS) are declared in config and applied by buddy deploy, with DNS through Route53, Cloudflare, Porkbun, or GoDaddy, without a paid platform.

  • One runtime for everything

    The server, the CLI, the tests, and the build all run on Bun, so there is no separate Node toolchain beside the PHP one. Bun is the runtime today, with more runtimes planned.

  • Upgrades without a separate service

    Laravel Shift is a third-party paid service that opens a pull request per version. buddy upgrade is part of the framework: it previews every change, refuses to overwrite uncommitted edits, then moves the framework, dependencies, migrations, and CI to the next release.

  • The machine sets itself up

    Herd and Sail give Laravel a polished local environment. Pantry installs exactly the tools config/deps.ts declares into the project, starts the database, and migrates and seeds it, and CI installs from the same lockfile.

  • No deploy platform subscription

    Forge runs $12 to $39 a month on top of the servers it manages, and Laravel Cloud starts at $5 a month plus usage, on AWS, with your database living on their platform. buddy deploy ships in the framework itself, so the only recurring cost is the server: a Hetzner box, an AWS account, or any Linux machine you already pay for. One small box can host several apps, and the data stays on hardware you control.

  • A mail server, not just a mail sender

    Laravel pairs with SES, Postmark, or Resend for sending and Google Workspace or Fastmail for real mailboxes. Stacks can run its own self-hostable SMTP and IMAP server, so a custom mailbox on your domain is infrastructure you already have rather than another subscription.

  • Real products, not a demo

    BugHQ (bughq.org), StatusHQ (statushq.org), AnalyticsHQ (analyticshq.org), LogHQ (loghq.org), and CommsHQ (commshq.org) are Stacks applications running in production today. Each one is MIT licensed and free to self-host on your own servers, with an optional hosted plan for teams who would rather not run it.

Side by side.

The dimensions teams actually decide on.

Dimension Stacks Laravel
Language TypeScript end to end, on Bun PHP on the server, TypeScript or JavaScript on the client
ORM defineModel(), migrations generated Eloquent, migrations hand-written
Views STX: SSR, SSG, islands, signals Blade with Livewire, or Inertia with React, Vue, or Svelte
Queues Included, with retries, dead-letter queue, and a dashboard Included, Horizon for Redis queues
Realtime WebSocket channels and broadcasting, included Reverb (first-party) or Pusher, via Echo
Admin Dashboard generated from models Filament (free) or Nova (paid, from $99)
Local setup Pantry, per project, from config/deps.ts Herd, Sail (Docker), or Valet
Upgrades buddy upgrade, built in, with a dry run Laravel Shift (paid) or by hand
Deploy buddy deploy to Hetzner, AWS, or any Linux box over SSH, no platform fee Forge $12-39/mo plus servers, or Cloud from $5/mo plus usage
Mail server Built in: SMTP, IMAP, real mailboxes None; a hosted inbox provider, billed per seat
Ecosystem age Young Mature

If you did move.

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

Start with migrate:project

buddy migrate:project --from laravel translates Eloquent models and migrations into defineModel() files and SQL, and writes a report of the routes, controllers, and views left to port by hand.

The concepts carry over unchanged

Models, migrations, jobs, events, listeners, mail, middleware, and gates all exist here with the same names and much the same shape.

Eloquent models become defineModel()

Fillable, casts, relationships, and observers map onto attributes, traits, and the observe flag. Migrations are then generated rather than ported.

Blade becomes STX

The directives are deliberately familiar, so templates convert more easily than any other framework on this page.

Do it service by service

A Stacks API beside an existing Laravel application, sharing a database, is a workable intermediate step.

The verdict.

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

Choose Laravel when

Your team writes PHP, or you need the deepest ecosystem and the most proven hosting story available. Laravel remains the benchmark and there is no shame in that being the answer.

Choose Stacks when

Your team already writes TypeScript for the front end and you would rather not maintain two languages, two toolchains, and a serialisation boundary between them, or pay a deploy platform on top of the servers that hold your data.

The frameworks that usually come up in the same conversation.