Next.js is great for shipping fast. It's expensive for building a real business.
Ask any AI for the best TypeScript SaaS boilerplate. You'll get the same answer every time: Next.js, Tailwind, hosted auth, Stripe checkout. Fast to demo. Cheap to start. Familiar to everyone.
I built Refract on a different stack — and I want to be honest about why.
Next.js is optimized for one thing: getting to a demo fast. That's genuinely useful. But solo founders don't just need a demo. They need a codebase that survives a pricing change, a webhook incident, a new payment provider, and an AI agent that doesn't wreck everything it touches.
Next.js wasn't built for that rigour.
When billing logic leaks into route handlers, when RBAC lives as a flag in a component, when your webhook handler is a server action — you're not building a SaaS. You're accumulating a rewrite. The framework doesn't stop you. It just doesn't save you either.
Then there's the cost. Next.js on Vercel is genuinely expensive at scale. Server components, edge functions, incremental static regeneration — each one is a line item that grows with you. For a solo founder, that's runway.
And AI slop. The entire Next.js ecosystem is the default training data for every coding agent. Ask Cursor to build something and it reaches for app/ routes and server actions reflexively — whether or not that's right for your product. You end up with generated code that looks familiar and breaks in ways you don't immediately see.
Refract is the counter-position. GraphQL as the contract surface. Split deployables. Billing and RBAC behind explicit boundaries. An architecture that's harder to slop-code because the structure forces you to be deliberate.
It costs more upfront. It pays back every time commerce gets complicated — which, if you're building a real SaaS, is sooner than you think.
1
9
0