Notes from the engineering bench.
Page 5 of 5
Blog posts — page 5
The complete guide to SaaS metrics in 2026: MRR, ARR, LTV, CAC, NDR
Every SaaS metric that matters in 2026, defined once and defined properly — MRR, ARR, ARPU, LTV, CAC payback, NDR, GDR, quick ratio, magic number — with formulas you can run against a Stripe table tonight.
SaaS onboarding flows that actually convert trial users
Most trial users decide whether to pay in the first session. Here's how the best SaaS products engineer that first session — progress checklists, sample data, magic links, and the nudges that don't annoy.
The SaaS tech stack in 2026: what changes and what stays boring
Every year a new wave of frameworks promises to replace the stack. Most of the time, the right move is the opposite — pick boring tools for the load-bearing layers and reserve novelty for the edges. Here is the 2026 version of that split, with the pieces that actually changed and the ones that should stay exactly where they are.
Secure file uploads: validation, virus scanning, and S3 best practices
File uploads are where most SaaS apps ship their first serious vulnerability. Here's the pipeline we wire up on every client project — MIME sniffing, size caps, image sanitization, virus scanning, and presigned S3 uploads — with the failure modes nobody writes tutorials about.
Self-hosting vs managed services in 2026: a cost breakdown
Self-hosting Postgres and Redis on a cheap VPS looks like a great deal until the first 3am page. Here's the actual math at three scales — and the point where the managed premium starts paying for itself.
Stripe subscription best practices: webhooks, idempotency, and dunning
Stripe does the easy part of billing. The hard part — webhook delivery guarantees, double-charge traps, failed-payment recovery, and reconciling what actually happened — is where SaaS teams bleed revenue. Here's the production playbook we run on client projects.
Stripe vs PayTabs vs regional gateways: payment strategy for global SaaS
Stripe covers 46 countries well and the rest poorly. For SaaS selling across MENA, India, Africa, or LatAm, a single gateway leaves revenue on the table. Here is the router design, regional picks, and KYC reality that actually ships to production.
Tailwind CSS 4: what's new and how to migrate
Tailwind v4 ships a Rust-based engine, moves configuration into CSS, and quietly drops a pile of v3 machinery. Here's what actually changed, what breaks, and the migration path that works on real production codebases.
Building a SaaS-ready free trial: gating, timers, and conversion hooks
Card-required trials convert at ~48.8%, no-card trials at ~18.2% — a 2.7x gap before a single email. Here's how to choose a trial model and wire it into code that gates cleanly.
React 19 in 2026: server components, actions, and the new mental model
React 19 is the first version where server components stop feeling experimental. Actions replace most of the useState plus useEffect plus fetch wrapper layer. The new mental model is different enough that teams underestimate what it costs to retrain into it.