Topic Web and software engineering

How to choose a web development framework

The short answer

Knowing how to choose a web development framework starts with your project's traits, not popularity: what your team already knows, whether pages must be server-rendered for search, how data-heavy or real-time the product is, who you can hire to maintain it, and how long it must last. Then prototype the riskiest feature in your top two options.

Written by

Siddharth Kajaria, Founder and CEO

Published

Updated

Reading time

11 min read

A hand measuring two potted seedlings with a ruler, with empty pots on a shelf behind
In this post11 min read
  1. What does a web development framework decide for you?
  2. The project traits that decide the choice
  3. React, Angular or Vue: which front end fits?
  4. Back-end frameworks: when each one fits
  5. Do you need a framework at all?
  6. Mistakes to avoid when choosing
  7. A short process for making the decision
  8. How we’d approach it

Key takeaways

Every web framework list ranks the same names, and none of them can tell you which one fits your product. The honest answer to “which framework should I use?” is a set of questions about your project, your team and the next five years. Answer those, and the shortlist usually narrows to two options on its own.

This guide sets out those questions, then compares the widely used front-end frameworks side by side and gives short “fits when” profiles of the back-end ones, without rankings. It ends with a short process for making the decision and recording it, so the next person on the project knows why it was made.

What does a web development framework decide for you?

A web development framework decides how your code is organised and which common jobs are already solved: routing requests to the right page, rendering HTML, talking to a database, handling forms, signing users in and protecting against common attacks. You trade some freedom for a large amount of work you no longer have to write, test and secure yourself.

What a framework does not decide is whether your product is well designed, fast or maintainable. Those come from the team and the decisions they make inside the framework. A good team can ship a reliable product on any of the mature options below, and a poor fit only makes that harder.

There are three broad kinds:

  • Front-end frameworks run in the browser and build the interface: React, Angular and Vue are the most widely used.
  • Back-end frameworks run on the server and handle data, business rules and APIs: Django, Flask and FastAPI in Python; Express and NestJS in Node.js; Ruby on Rails; Laravel and Symfony in PHP.
  • Full-stack or meta-frameworks combine both, rendering pages on the server and adding interactivity in the browser: Next.js (built on React) and Nuxt (built on Vue) are common examples. Rails, Django and Laravel can also serve complete pages themselves.

The project traits that decide the choice

Work through these eight traits in order. Each one either narrows the options or tells you it doesn’t matter for this project. Tick each one you can already answer for your product; the ones you can’t are the questions to settle before anyone picks a framework.

8 traits, in order

Your team and your product

Show or hide the traits4 traits
  1. 01 What does your team already know?

    What to work out
    Why it matters
  2. 02 Is it a content site, a web app or both?

    What to work out
    Why it matters
  3. 03 Must people find its pages through search?

    What to work out
    Why it matters
  4. 04 Is it data-heavy, logic-heavy or mostly integration?

    What to work out
    Why it matters

Read next Single-page or multi-page application

Load, people and the long run

Show or hide the traits4 traits
  1. 05 How much of it is real-time?

    What to work out
    Why it matters
  2. 06 Who can you hire to maintain it?

    What to work out
    Why it matters
  3. 07 How long must the product live?

    What to work out
    Why it matters
  4. 08 Where will it run?

    What to work out
    Why it matters

Read next Pick a technology by project

The second trait is closely tied to the choice between a single-page and a multi-page structure. Our guide to single-page or multi-page application covers that decision in detail.

Still choosing a stack?

React, Angular or Vue: which front end fits?

React, Angular and Vue each fit a different kind of team and product; none is better in general. The table sets out where each tends to fit. They are not rankings: each is mature and widely used, and a skilled team can build a good product with any of them.

Options, not rankings

React, Angular and Vue compared: where each front-end option tends to fit
Compared onReactA library for building interfacesAngularA full framework, built on TypeScriptVueA framework built around single-file components
What’s includedComponents and rendering. You choose the other parts yourself, or use a React framework such as Next.js that chooses them for you.Routing, forms, HTTP and testing tools, with a single prescribed way to do each.Readable single-file components, with official tools for routing and state, without assembling them yourself.
Learning curveA small core, plus whichever libraries you pick around it.More to learn up front, because more is included. The team should also be comfortable with TypeScript, which Angular is built on.A gentle learning curve.
Team it suitsA team happy to choose and agree its own conventions, with the largest choice of ready-made components, libraries and developers.A large team, or several teams, working on one big application and benefiting from strong conventions.A team adding interactivity to an existing server-rendered site a piece at a time, as well as building full apps.
Server renderingReact’s own server APIs, usually used through a framework such as Next.js.An official package, @angular/ssr, added from the Angular CLI.Vue’s own server renderer, usually used through a framework such as Nuxt.
Best whenThe product is interactive and component-heavy, such as dashboards or editors, and you want the widest choice of libraries and developersA large team builds one big application and wants one prescribed way to do each jobYou want a gentle start, or you are adding interactivity to an existing site piece by piece

No front-end framework fits when the site is mostly content with a little interactivity. Server-rendered HTML with small amounts of plain JavaScript is faster to load and simpler to maintain.

Back-end frameworks: when each one fits

Common, widely used options in each ecosystem (not a list of what any one team uses):

Python: Django, Flask or FastAPI

  • Django fits data-rich products that need user accounts, permissions, an admin interface and many database models from the first release.
  • Flask fits small to medium apps, internal tools and services where you want to choose each part yourself.
  • FastAPI fits APIs, especially ones that serve machine learning models or call other services, with type hints, async support and automatic API documentation.
  • Python as a whole fits when data processing, analytics or AI sits close to the product. See pick a technology by project for how the language options compare by project type.

Node.js: Express or NestJS

  • Express fits small APIs and services where a minimal framework is enough.
  • NestJS fits larger back ends that benefit from a structured, module-based design.
  • Node.js as a whole fits real-time features and teams who want one language, JavaScript or TypeScript, across the front end and the back end.

Ruby on Rails

  • Rails fits products that need to move from idea to working software quickly, with strong conventions for databases, forms, background jobs and email.
  • It suits small teams that want to build a full product without assembling many separate tools. For a closer look, see is Ruby on Rails still relevant?

PHP: Laravel or Symfony

  • Laravel fits web apps that want a full set of built-in tools (database access, queues, authentication, scheduling) with a large ecosystem of packages.
  • Symfony fits large, long-lived applications that need reusable, well-separated components.
  • PHP as a whole fits when the hosting, the existing systems or the team’s experience are already PHP, or when the product sits alongside a PHP content management system.

Do you need a framework at all?

Most products beyond a simple website do need one, because the work a framework does (routing, security, database access, sessions) is substantial and easy to get wrong. You can skip a framework when the site is a handful of static pages, when a hosted content management system already covers what you need, or when the “product” is a small script or a single function with no interface.

Mistakes to avoid when choosing

The five mistakes below come down to three things: choosing for the wrong reason, deciding without checking, and adding more than the product needs.

01

Choosing for the wrong reason

  • Choosing by popularity charts. Popularity tells you the hiring pool is large, which matters, but not whether the framework fits your product.
  • Choosing what the team wants to learn. A new framework on a client deadline is a training budget hidden inside a project budget.
02

Deciding without checking

  • Ignoring upgrades. A framework version that loses support during the product’s life means unplanned work later. Check the support policy first.
  • Deciding without a prototype. An afternoon spent building the hardest feature in each shortlisted option reveals more than a week of reading comparisons.
03

Adding more than you need

  • Mixing too many frameworks. Each one adds upgrades, security patches and skills to keep. Two well-chosen parts beat five fashionable ones.

A short process for making the decision

Five steps take you from a long list to a decision you can explain: list the must-haves, shortlist two, prototype the riskiest feature, check the long-term picture, then write the decision down.

  1. List the must-haves

  2. Shortlist two options

  3. Prototype the riskiest feature in both

  4. Check the long-term picture

  5. Decide and write it down

If you are taking over an existing product, start with a review of the product and its plan before choosing anything new.

How we’d approach it

If more than one option fits, we pick the stack in a Discovery Sprint, based on your users, features, budget and the team who will maintain it.

Once the stack is chosen, the build itself is what our custom software development page covers.

02 FAQ

Questions, answered

Which framework is best for web development?
No single framework is best for every project. Mature, widely used frameworks can all build a reliable web product; the best one for you is the one that fits your team's skills, your rendering and data needs, the developers you can hire and how long the product must be maintained. Shortlist two and prototype the hardest feature in each.
Is React a framework or a library?
React describes itself as a library for building user interfaces. It handles components and rendering, and leaves routing, data loading and server rendering to other tools. Frameworks built on top of it, such as Next.js, add those parts, which is why many teams choose a React framework rather than React alone for a full product.
Does the choice of framework affect SEO?
It can. Search engines can render JavaScript, but pages that arrive as complete HTML from the server are indexed more reliably and load faster. If search traffic matters, choose a framework or set-up that renders pages on the server or at build time, and check page speed early.
Can you change web frameworks later?
Yes, but it is expensive, so plan for it rather than expect it. Keeping business logic out of framework-specific code, putting a clear API between the front end and the back end, and replacing a product one section at a time all make a later change far less risky than a full rewrite.