How to Choose the Right Tech Stack for Your Web App
React vs Vue vs Svelte, SQL vs NoSQL, monolith vs microservices — choosing is overwhelming. A practical framework for making the right call.
Answer in 30 seconds
Choose your stack on constraints, team, stage, scale, budget, not hype. React, Next.js, Rails, or Svelte can all win; prioritize hiring pool, time-to-market, and long-term maintenance over trends to avoid costly rewrites.
"You should build it in React."
"Next.js is the only serious choice."
"Ruby on Rails is dead."
"Just use WordPress."
Everyone has an opinion about technology choices. Most of them are wrong, or more accurately, most of them are right for a specific context that may not be yours.
I have built applications in Next.js, SvelteKit, Ruby on Rails, Laravel, and more. The truth is that the "best" tech stack does not exist. There is only the best tech stack for your specific project, at your specific stage, with your specific constraints.
This guide will give you a practical framework for making this decision, not based on hype or trends, but on the factors that actually determine whether your project succeeds or fails.
The Wrong Reasons to Choose a Tech Stack
Before we get to the right framework, let me address the most common mistakes I see:
1. Choosing Based on Hype
Every year there is a new "revolutionary" framework. Last year it was the year before it was Svelte, the year before that it was Next.js 13's App Router. Hype cycles are real, and they lead to terrible technology decisions. By the time a technology is "hot," early adopters have already discovered its limitations.
2. Choosing Based on What You Know
"I am a React developer, so we will build in React." This is comfortable but limiting. Different problems are best solved with different tools. The best developers are polyglots who choose technology based on the problem, not their comfort zone.
3. Choosing Based on What Big Companies Use
"Netflix uses Node.js." Netflix also has 10,000 engineers and a dedicated platform team. You probably do not. Big company solutions are optimized for big company problems, massive scale, complex organizational structures, and problems that only emerge at millions of users.
4. Choosing for Theoretical Scale
"I want to build this in Rust because it is fast and we might get millions of users." If you are pre-product-market fit, you will not get millions of users. And if you do, you can rewrite. Optimizing for scale before you have users is like buying a warehouse before you have inventory.
The Right Framework: Five Questions
Choose your tech stack by answering these five questions in order:
Question 1: What Are You Actually Building?
This determines your fundamental architecture:
-
Content-driven website (blog, marketing site, documentation): Static site generator or headless CMS. Astro, Next.js with SSG, or a traditional CMS. You need fast load times, good SEO, and easy content editing. Database complexity is minimal.
-
E-commerce store: Battle-tested platforms win here. Shopify for standard commerce, Medusa or Saleor for custom needs, or Next.js with a headless commerce API. Payment processing, inventory management, and order workflows are complex enough that you should not build from scratch.
-
Web application (SaaS, dashboard, marketplace): Full-stack framework with database. Next.js, SvelteKit, Nuxt, or Rails. Your choice depends on team expertise and specific requirements. The key considerations are data modeling, authentication, and API design.
-
Real-time application (chat, collaboration, live updates): Technology with strong WebSocket support. Phoenix (Elixir) excels here, as does Node.js with Socket.io. Consider whether you need a custom backend or if services like Supabase or Firebase meet your needs.
-
API / Backend service: Depends on performance requirements and team expertise. Go for high-performance APIs, Node.js/Express for JavaScript teams, Python/Django for data-heavy applications, Rails for rapid development with convention over configuration.
Question 2: What Is Your Team's Expertise?
The best tech stack is the one your team can actually build with. Here is my rule of thumb:
- If your team knows React, use Next.js. Do not learn Svelte just because a blog post said it is faster.
- If your team knows Python, use Django or FastAPI. Do not switch to Node.js because it is trendy.
- If you are a solo developer, choose the stack you are most productive in. Productivity trumps theoretical advantages.
The exception: if your current stack fundamentally cannot meet your project requirements (e.g., you are building a real-time system and your team only knows PHP), you need to either hire for the right skills or choose a managed service that handles the complexity for you.
Question 3: What Is Your Timeline?
Time-to-market should heavily influence your technology choice:
-
Need to ship in 2-4 weeks? Use a framework with strong conventions and a rich ecosystem. Rails, Next.js, or Laravel. Batteries included, less decision fatigue.
-
Need to ship in 1-3 months? Any mature framework works. Choose based on long-term fit rather than initial speed.
-
Building over 6+ months? You have the luxury of choosing the "right" tool for each layer. Optimize for maintainability, performance, and developer experience.
For startups, I almost always recommend choosing speed of development over theoretical elegance. Ship fast, validate, then optimize. A "perfect" architecture for a product nobody wants is worthless.
Question 4: What Are Your Performance Requirements?
Be specific about performance needs:
-
Standard web app (pages load in 1-3 seconds): Any modern framework works. This is the default, most applications live here.
-
High performance (sub-second loads, heavy interactivity): Next.js with edge rendering, SvelteKit, or Astro for content-heavy apps. Consider static generation for content that does not change frequently.
-
Real-time (WebSocket connections, live data): Node.js, Elixir/Phoenix, or Go. These handle concurrent connections efficiently.
-
Compute-intensive (data processing, ML inference): Python (for ML ecosystem), Go, or Rust. JavaScript is not ideal for CPU-bound work.
Question 5: What Is Your Maintenance Budget?
Every technology choice has ongoing costs:
-
JavaScript/TypeScript (Next.js, SvelteKit): Largest talent pool, easiest to hire for. Fast-moving ecosystem means more frequent updates but also more community support.
-
Python (Django, FastAPI): Stable, readable, excellent for data-heavy applications. Smaller frontend ecosystem if you need rich client-side interactivity.
-
Ruby on Rails: Still one of the fastest development experiences for full-stack web apps. Smaller talent pool than JavaScript but deeply experienced community.
-
Go/Rust: Excellent performance, smaller ecosystem, harder to hire for. Best for specific performance-critical services, not general web applications.
-
PHP (Laravel): Massive hosting ecosystem, affordable talent, excellent for content-driven applications. Unfairly maligned, modern PHP (8+) with Laravel is a joy to work with.
Common Tech Stack Recommendations
Based on the framework above, here are my specific recommendations for common scenarios:
For SaaS Startups
Next.js + PostgreSQL + Prisma + Vercel. This stack gives you a type-safe frontend, a battle-tested relational database, an excellent ORM, and zero-config deployment. The ecosystem is massive, hiring is straightforward, and the stack scales from prototype to enterprise.
Alternative: SvelteKit + Supabase if you prefer a leaner framework and want a managed backend service.
For Content-Driven Sites
Astro + headless CMS. Astro ships zero JavaScript by default, resulting in the fastest possible load times. Pair it with Sanity or Contentful for editorial workflows.
Alternative: Next.js with SSG if you need some interactive components alongside your content.
For E-Commerce
Shopify (standard) or Medusa.js (custom). Do not build e-commerce from scratch. Payment processing, inventory management, tax calculation, and fraud prevention are solved problems. Use a platform.
For MVPs and Prototypes
Rails or Next.js + Supabase. Choose the framework that lets you ship fastest. An MVP that takes 3 months to build is an MVP that launches too late. Optimize for speed of iteration.
For Real-Time Applications
Elixir/Phoenix for maximum concurrency, or Next.js + Supabase Realtime if you want to stay in the JavaScript ecosystem and leverage managed infrastructure.
The Database Question
Tech stack discussions often focus on frontend frameworks, but database choice matters just as much:
-
PostgreSQL: The default choice for 90% of applications. Relational, ACID-compliant, excellent JSON support when you need flexibility. Free, open-source, and battle-tested.
-
MySQL: Similar to PostgreSQL, slightly simpler feature set. Fine for most applications but PostgreSQL has pulled ahead in recent years.
-
MongoDB: Document database that is excellent for rapidly changing schemas and specific use cases. Often chosen for the wrong reasons (familiarity with JSON, perceived simplicity). Not a default choice, choose it when your data is truly document-oriented.
-
SQLite: Perfect for small-to-medium applications, edge deployments, and prototypes. Turso and Litestream make it viable for production use cases you would not expect.
-
Redis: Not a primary database, a caching and real-time data layer. Use it alongside your primary database for session storage, caching, and real-time features.
My default recommendation for most web applications: PostgreSQL. It handles relational data, JSON, full-text search, geospatial queries, and more. It scales from a single server to enterprise deployments. You will rarely regret choosing it.
The Bottom Line
Choosing a tech stack is not about finding the "best" technology, it is about finding the right fit for your specific project, team, and timeline. The best stack is the one that lets you ship quickly, iterate easily, and maintain your application without constant firefighting.
If you are pre-product-market fit, optimize for speed. If you are scaling an existing product, optimize for reliability. If you are building a team, optimize for hireability.
And remember: you can always rewrite. The technology that gets you to launch is better than the "perfect" technology that keeps you in development.
Not sure which tech stack is right for your project? Let's talk, I will assess your requirements and recommend the stack that fits your specific situation, not my personal preferences.
Liked this? Get estimate
Get estimateRelated reads
Headless CMS vs. Traditional CMS: Which One Actually Saves You Time?
WordPress, Sanity, Contentful, Strapi — the CMS landscape is confusing. A practical guide to choosing the right approach.
The Hidden ROI of Custom Next.js Websites vs. WordPress
Why ambitious brands are abandoning legacy CMS platforms for high-performance React architectures, and how it directly impacts your bottom line.
Why Your Startup Needs a Design-Led Developer
Technical skill alone doesn't build great products. Why startups hiring design-led developers outperform those splitting design and engineering.
Newsletter
Stay in the Loop
Get insights on digital strategy, performance engineering, and design delivered to your inbox.
Insights for Ambitious Brands
Get my latest teardowns on digital strategy, performance engineering, and design. No spam, ever.
Let's Build
Need a Fast Website?
Stop losing customers to slow load times. Let's build something engineered for conversion.
Start Your Project