Engineering

Picking the Right Stack for a New Product in 2026

David Osei··9 min read

Every quarter or so a founder asks us: 'If you were starting a new SaaS product tomorrow, what stack would you use?' Here is our answer for 2026, with reasoning. Your mileage will vary, and that's fine.

For the frontend, our default is TanStack Start on top of React 19. Type safety end-to-end, first-class SSR, server functions that keep you out of the async-hell of the last generation of frameworks, and file-based routing that doesn't fight you. Next.js is a fine alternative if your team is already there. We avoid pure SPA setups for anything user-facing because SEO and shareability matter for almost every product.

For styling, Tailwind CSS v4 with a small design-token layer in styles.css. shadcn/ui components when they save time, hand-written when they don't. We do not reach for a heavy component library like MUI unless the app is genuinely internal — external-facing apps benefit from control over every pixel.

For the backend, Postgres, always. If you need a managed backend for auth, storage, and Data API, Supabase or a first-party managed offering like Lovable Cloud is our default. If you need to own the entire infrastructure, Postgres + a small typed API layer in TypeScript or Go.

For AI, no lock-in. Route across providers behind an abstraction so you can swap. Start with the Anthropic or OpenAI SDK, wrap it thinly, and evaluate every provider release against your eval harness.

For deployment, we default to Cloudflare Workers or Vercel for the frontend and edge functions, and managed Postgres for the database. We only reach for our own Kubernetes when the workload genuinely benefits from it, which is rarer than most teams believe.

What we avoid: microservices before you need them, GraphQL when tRPC or a plain REST API would do, ORMs that hide the SQL from you, and anything that requires you to memorize the vendor's proprietary DSL to do basic work. If a technology's failure mode is 'read our 400-page migration guide,' we'd rather use something boring.