The tech stack of your web app doesn't matter

George Bidilica
George Bidilica ·
Stack of books

There are a lot of technological choices to navigate nowadays. With new frameworks popping up daily, even experienced engineers can feel overwhelmed by the options.

But technology is the same at its core. Google lets you pick any language during their interview, they want to test your problem-solving, not your syntax. Your IDE handles syntax.

Here’s what actually matters.

1) Data is the one decision that sticks

Frameworks can be swapped. Languages can be migrated. But your data layer is the one choice that’s genuinely hard to undo, and that’s exactly why the tech stack around it matters less than you think.

Where and how you store your data plays the biggest role in your scalability and maintainability. Get that right, and you can rebuild everything else around it.

Data loss is the only unrecoverable failure

A bug that blocks orders? Fixed in hours. Server down? Resolved in minutes. But lost data has no fix. CloudNordic, a Danish hosting company, lost all customer data in a ransomware attack. Their business was destroyed, and so were several businesses that relied on their services.

Always back up your data. Keep backups in two separate locations, storage is cheap. No framework or language choice will save you from data loss, but a solid backup strategy will.

Data is the first bottleneck, regardless of stack

Whether your frontend is React, Vue, or server-rendered HTML, all your applications hit the same database. A customer who buys a voucher in-store expects to use it online. An order placed on mobile should show up on the web. The data layer is the shared dependency, and it’s usually the first thing you need to scale.

This is another reason the stack doesn’t matter as much as people think. Your bottleneck won’t be whether you picked Express or Fastify, it’ll be how you modelled your data and whether your queries can keep up.

Data solutions haven’t changed much in decades

Modern tools like Supabase have made data friendlier, but under the hood it’s the same relational and non-relational databases that have been around for years. SQL and NoSQL have converged with JSON support in relational databases.

The durability of these solutions is the point. While frontend frameworks cycle every few years, Postgres and MySQL keep running. Your tech stack will change, your data model won’t, so invest your decision-making energy there.

2) Architecture outlives your stack

Frameworks come and go. The architectural decisions you make early on will outlast whatever stack you pick.

A well-structured application can be migrated from one framework to another without rewriting the business logic. A poorly structured one will carry its problems into every stack you move it to. The patterns that matter, how you separate concerns, how you model your domain, how you handle boundaries between systems, are the same in Rails, Django, NestJS, or whatever comes next.

Your abstractions are more durable than your dependencies

If your business logic is tangled into your framework’s ORM, routing, or request lifecycle, you’re not building on top of the framework, you’re building inside it. That makes migration painful and testing slow.

The teams that move fast long-term are the ones that treat their framework as a delivery mechanism, not as the application itself. Keep your core logic framework-agnostic and the stack genuinely stops mattering.

Design for replaceability, not perfection

You don’t need to predict which component will need replacing. You need to make sure that when the time comes, you can replace it without rewriting everything around it.

Decouple where it’s cheap to do so. Use clear boundaries between your data layer, business logic, and transport layer. When a new technology solves a real problem you have, you should be able to adopt it in weeks, not months.

3) Execution matters more than the stack

A great tech stack in the wrong hands will produce worse results than a boring stack in experienced hands. This is the part that’s hardest to accept, because picking a stack feels like a decision you can control, while finding the right people feels uncertain.

Engineers who’ve shipped before, who’ve dealt with production incidents, data migrations, and scaling challenges, will make better architectural decisions than any framework comparison blog post can offer. They’ve seen what breaks. They know which corners you can cut early and which ones will cost you later.

The most successful products I’ve worked on didn’t succeed because of their tech stack. They succeeded because the team understood the problem, made pragmatic trade-offs, and shipped. The stack was just the vehicle.

If you’re spending more time debating frameworks than talking to users, you’re optimising the wrong thing.