Dezen Technology
All articles
ArchitectureApr 1, 20269 min read

The boring stack we ship in 2026

Two years of incident data: new technology causes ~4x the incidents of mature technology. Here’s the unfashionable, well-trodden stack we default to — layer by layer.

The boring stack we ship in 2026

We’ve been keeping a private tally for two years: every production incident across every project we’ve shipped, tagged by what caused it. The pattern is depressingly consistent — new, exciting technology choices cause incidents at roughly 4x the rate of boring, well-trodden ones.

That tally is why our default stack in 2026 is so unfashionable. Here’s what we reach for, and the reasoning per layer.

The boring stack — Next.js, Postgres, Node, AWS, Vercel/Fly — layered with annotations

The stack, layer by layer

Frontend: Next.js + TypeScript + Tailwind

Next.js does server rendering, client rendering, static rendering, image optimization, routing, and form actions in one framework with one mental model. Tailwind keeps the CSS contained inline so refactors don’t leave dead styles behind. TypeScript because it’s 2026 and untyped JavaScript at scale is a regret.

Not picking: SvelteKit (smaller ecosystem when you need a niche library), Remix (great, but the team converged with Next), bespoke SPAs with custom routing (you’ll rebuild Next badly).

Database: Postgres

It has JSON, full-text search, row-level security, time-series support, geospatial support, and a 30-year track record. Most “we need MongoDB” conversations end with “oh, jsonb does that.” Most “we need Elasticsearch” conversations end with “oh, tsvector does that.”

Use a managed Postgres — RDS, Neon, Supabase, Cloud SQL. The hours you’d spend running Postgres yourself are better spent on your product.

Backend: Node.js + TypeScript (with Fastify or Next API)

Same language as the frontend = shared types, shared validation schemas, one mental model for your team. Node is fast enough for 99% of workloads. The 1% where it isn’t, you know who you are — pick Go or Rust for that specific service.

Auth: a third-party (Auth0, Clerk, WorkOS)

Rolling your own auth in 2026 is a footgun. Identity providers handle SSO, MFA, SCIM, audit logs, breach detection — all of which you’d build worse and slower in-house. Pay the $0.05 per MAU and ship your product.

Hosting: Vercel / Fly / Render / AWS

Pick based on traffic predictability. Spiky / global → Vercel. Steady server-heavy workloads → Fly or Render. Enterprise compliance requirements → AWS with a thin IaC layer (Pulumi or Terraform). Don’t pick Kubernetes unless you have a platform team to operate it.

Background jobs: BullMQ on Redis, or Inngest

BullMQ if you want full control and don’t mind the operational burden of Redis. Inngest if you’d trade a bit of vendor coupling for retries, scheduling, and observability you didn’t have to write.

Email: Postmark or AWS SES

Postmark for transactional ease and great deliverability. SES if you already live in AWS and want lower pricing at scale. Don’t SMTP through your own server.

Observability: Sentry + a structured log sink

Sentry for application errors. Datadog / Axiom / Logtail for structured logs. Honestly, most products under 1M MAU can run Sentry + AWS CloudWatch and be fine. Build the observability you need, not the observability your favorite tech-talk recommends.

Things we deliberately don’t use by default

  • GraphQL.REST + Zod-typed clients gives most of the benefit. GraphQL is great when you have many clients and many backends; for a SaaS with one frontend, it’s overhead.
  • Microservices. See our modular-monolith piece for why.
  • Kubernetes. Hosted platforms (Vercel/Fly/Render) handle the same jobs without the platform-engineer headcount.
  • Custom CSS frameworks.Tailwind plus a handful of components is enough; we don’t need to invent design tokens we’ll regret.
  • ORMs that hide SQL. Prisma is fine; Drizzle is fine; raw SQL is also fine. ORMs that abstract too aggressively tend to bite you on the queries that matter.

The principle behind the picks

Pick technology that has been in production for 10+ years and has a thriving community right now. That’s the sweet spot — mature enough that the sharp edges are documented, alive enough that you’ll get answers when you hit a problem.

New technology is a bet that you’ll save more time than you’ll spend debugging novel issues. That bet pays off about 1 in 5 times. Boring stack means you’re placing the bet only when there’s a real, measurable win to chase — not because it’s on the front page of Hacker News.

How we approach this

This boring stack is the default for our SaaS Product Development and MVP engagements. We bring exotic technology in when there’s a specific reason — ML inference, sub-millisecond latency, hardware integration — and never because we’re bored.

Takeaways

  • Mature tech causes ~4x fewer incidents than recently-trendy tech.
  • Default: Next.js + TS + Postgres + Node + managed hosting + 3rd-party auth.
  • Don’t use Kubernetes, microservices, or GraphQL unless you have a documented reason.
  • Boring isn’t conservatism — it’s capital preservation for the bets that matter.
Keep reading

More from the engine room

AI in QA: where it helps, where it doesn’t

May 27, 2026

AI in QA: where it helps, where it doesn’t

AI augments QA throughput — test generation, triage, visual regression. It doesn’t replace QA judgment: strategy, exploratory testing, and defining correctness stay human.

Read More
Controlling LLM costs in production

May 25, 2026

Controlling LLM costs in production

Four levers cut spend 10x without cutting quality: route by difficulty, cache, trim context, batch and stream. Measure cost-per-feature first; set budget guardrails always.

Read More
RAG vs fine-tuning: which do you actually need?

May 23, 2026

RAG vs fine-tuning: which do you actually need?

Facts → RAG. Behavior → maybe fine-tune. Most business AI features want RAG even when teams ask for fine-tuning. The decision rule and the order to try things in.

Read More
Agentic features in SaaS: the maturity ladder

May 21, 2026

Agentic features in SaaS: the maturity ladder

From manual to autonomous — four levels of autonomy and the guardrails each needs. Match autonomy to the cost of being wrong, not to how impressive it sounds.

Read More
Offline-first mobile: the app that works on the subway

May 19, 2026

Offline-first mobile: the app that works on the subway

The UI never waits on the network. Local DB, sync engine, server — with conflict resolution per data type. The architecture that makes mobile apps feel instant.

Read More
Lift-and-shift vs refactor: how to actually decide

May 17, 2026

Lift-and-shift vs refactor: how to actually decide

Lift-and-shift is fast, cheap to do, expensive to keep. Refactor is months of work with structural upside. The matrix — and why half-finished refactors are the worst path.

Read More
Monolith migration: the strangler-fig playbook

May 15, 2026

Monolith migration: the strangler-fig playbook

The big-bang rewrite is the most consistently bad idea in software. Proxy in front, extract one route at a time, shrink the monolith to nothing. No migration day.

Read More
SOC 2 readiness in plain English

May 13, 2026

SOC 2 readiness in plain English

Five Trust Service Criteria, Security mandatory and the rest optional. Type 1 vs Type 2. The pragmatic 6-month timeline — not the year-long ordeal it’s made out to be.

Read More

Let’s Build the Future Together!

Contact our team today and turn your ideas into reality.

Let’s Discuss
Contact Details : sales@dezentech.com Sy. No:40, Flat No:402, SIRISAMPADHA ARCADE I, Plot no:18-21, behind Union Bank of India, Khajaguda, Hyderabad, Telangana 500104