The Stack We Use to Ship Fast in 2026
We've shipped 21+ products. Each one taught us something about what works and what doesn't. Here's the stack we've settled on, and why each piece matters.
The Core: Next.js + Supabase + Stripe
This is the foundation for every web product we build.
Next.js handles the frontend, API routes, and server-side rendering. App Router with TypeScript. No separate backend needed for most projects. The file-based routing is fast to work with, and React Server Components mean less client-side JavaScript.
Supabase handles auth, database, and real-time. Postgres under the hood, so no ORM lock-in. Row-level security means we can write access policies once and forget about them. The auth is solid out of the box: email, magic link, OAuth.
Stripe handles payments. Subscriptions, one-time purchases, webhooks. The API is well-documented and the dashboard is genuinely good. We use Stripe Checkout for most things. No custom payment forms unless absolutely necessary.
Deployment: Vercel
Vercel for web. Every push to main deploys automatically. Preview deployments on PRs. Analytics built in. Edge functions when needed.
The DX is unmatched. git push and your site is live in 30 seconds. No Docker, no CI/CD pipelines, no Kubernetes. Just push and ship.
iOS: SwiftUI + CloudKit
For native iOS apps, SwiftUI is the obvious choice in 2026. Declarative UI, great tooling, and Apple pushes it hard enough that the documentation and community are solid.
CloudKit for sync when needed. RevenueCat for in-app purchases because Apple's StoreKit API is painful to work with directly.
Cross-Platform: React Native + Expo
When we need both iOS and Android, Expo is the answer. Expo Router, EAS Build, over-the-air updates. The gap between "React Native" and "native" has gotten small enough that for most apps, users can't tell the difference.
The Secret Weapon: Claude Code
This is the biggest multiplier in our stack. Claude Code is our second-in-command for everything. Writing code, debugging, refactoring, even drafting content.
It's not about "AI writing code for us." It's about having an incredibly fast pair programmer who never gets tired, never forgets context (well, mostly), and can work across the entire codebase.
Real example: our ProvenTools countdown timer. The entire feature, from useCountdown() hook to sticky banner to pricing card integration, was built and deployed in about 30 minutes. A hook, two components, responsive design, auto-hide on expiry. Would have taken 2-3 hours solo.
What We Don't Use
Some things we've tried and dropped:
- ORMs (Prisma, Drizzle). Supabase's client library is enough. When we need raw SQL, we write raw SQL.
- Separate backend frameworks. Next.js API routes handle 95% of our needs. For the other 5%, a small Express server.
- CSS-in-JS. Tailwind all the way. No runtime overhead, great DX, consistent design.
- Complex state management. React's built-in state + server components + URL state covers most cases. Zustand if we really need global client state.
The Pattern
Every new product follows the same pattern:
create-next-appwith TypeScript and Tailwind- Add Supabase (auth + database)
- Add Stripe (if it needs payments)
- Deploy to Vercel
- Iterate from there
First version ships in 1-3 days. Not weeks, not months. Days.
The stack isn't fancy. It's not bleeding edge. But it's fast, reliable, and we know every corner of it. That's what matters when you're shipping.
