WordPress or Symfony, Drupal or Laravel: the question looks technical, but what it really settles is how your organisation will publish, extend and maintain its site. The right answer depends on the tasks to be done, the business rules involved and the people who will look after the thing once it is live.
A CMS already gives you a content structure and a management interface. A framework gives you components and conventions for building an application. The two families can be combined, so the decision is not simply a small site on one side and an ambitious one on the other.
The useful comparison is rarely a feature list. It is about who edits what, which rules are specific to your business, what the whole thing costs over the same period, and how you would move on if you had to.
What a CMS actually gives you
A content management system usually lets you create pages, classify posts, manage media and assign permissions. That can cut the work needed to get a usable back office. The base still has to be configured and adapted to the need: installing the software does not deliver a finished commercial site.
WordPress provides editorial functions, themes and plugins. Its documentation on roles and capabilities describes how publishing rights are separated from administration rights. For a small team, that separation can avoid handing full technical access to everyone who occasionally needs to correct a line of text.
Judge plugins on fit, maintenance, dependencies and whether you can get your data back out. Ten well-chosen plugins are not automatically a problem; one abandoned plugin carrying your entire commercial process certainly can be. You should be able to explain what each significant component is there for.
Drupal, Joomla and more specialised tools answer different combinations of editorial and organisational needs. The comparison worth making is against your own content types, permissions, languages and approval routes. If you publish in several languages, look at how a multilingual setup is handled before you commit, because retrofitting it is rarely cheap. The number of sites using a tool does not prove it suits your project.
Open source or hosted service: a second decision
The CMS or framework question is not the same as the choice between self-hosted software and a hosted service. With software installed at a host, your team organises operations and updates. With a SaaS platform, part of that work is done by the vendor, within the limits of the contract.
Compare customisation freedom, included features, recurring costs and export options. Do not assume that a hosted platform is inherently bad for search, or that open source makes a future migration free. Data, URLs, media and bespoke functions all have to be portable in practice, not only in principle.
When a framework earns its place
A framework becomes interesting when the core of the project rests on specific behaviour: conditional permissions, multi-step approval, complex calculations, resource booking, contract pricing or frequent exchanges with internal applications. It supplies building blocks, but your team designs and maintains the assembly.
Symfony and Laravel are PHP frameworks. Django and Flask belong to the Python ecosystem. React is primarily an interface library; on its own it does not provide a complete publishing and administration system for a business. Keeping that distinction clear stops you comparing quotes that cover different parts of the project.
Bespoke code guarantees neither speed, nor security, nor unlimited capacity. A poor database query, a missing cache or mishandled permissions can affect any architecture. Ask how the application will be tested, deployed, monitored and picked up by another developer.
Support windows matter from the quotation stage. Symfony 7.4 LTS, released in November 2025, is scheduled for bug fixes until November 2028 and security fixes until November 2029, and the branch requires PHP 8.2 or later. That calendar covers the framework itself, not automatically every library in your project.
The Laravel support policy sets a separate schedule for each version. Laravel 13 requires PHP 8.3 as a minimum and announces security fixes until 17 March 2028. Your provider therefore has to budget for upgrades and check that the other components keep pace.
Compare the service, the full cost and the constraints
Start by describing the compulsory tasks with real examples. "User management" is too vague. "A salesperson sees only the quotes from their own branch, a manager can approve them, and every price change is logged" is already enough to discuss architecture with.
| Criterion | Questions to ask | Evidence to expect |
|---|---|---|
| Publishing | Who edits what, and with which approval step? | A demonstration on your own content types |
| Business functions | What does the standard cover, and what has to be built? | A list of gaps and a prototype of the critical functions |
| Integrations | Which data moves, and in which direction? | A diagram of the exchanges and the error handling |
| Operations | Who handles updates and incidents? | Named responsibilities, procedures and a recurring budget |
| Reversibility | How would you change supplier? | Exports, code, accesses and documentation written into the contract |
For total cost, add up scoping, build, content, hosting, licences, maintenance, future work and internal time over one and the same period. Ask what triggers additional invoicing. A CMS proposal can cost more than a small framework application if its scope is wider, so fixed budget brackets cannot replace this analysis. If you are still shortlisting suppliers, the questions that matter when choosing a provider apply just as well to a build project.
SEO, performance and security are results you verify
Google's search fundamentals deal with access to content, understanding it and its quality. No CMS name guarantees a position. Check URLs, redirects, titles, links, page rendering and indexing rules in the solution you are actually given; a technical audit on the staging site costs far less than the same work after launch.
Measure the important journeys with representative data and volumes: product search, catalogue display, form submission, several people working at once. A product count on its own does not set a universal limit for WooCommerce, PrestaShop or anything else. Variants, filters, integrations and concurrent use change the load far more, and page speed follows from those decisions rather than from the badge on the software.
For security, ask for organised updates, minimal permissions, proper handling of secrets and backups that have been restored at least once as a test. A restore nobody has ever performed is a plan, not a backup. A security plugin or a framework's reputation does not replace those practices.
Which route to explore for your project
A brochure site or a publication
To publish services, contact pages and articles with a non-technical team, a CMS is often a coherent route. Test page editing above all, the simplicity of formatting, and the ability to evolve the site without depending on a fragile stack of builders. If a site already exists, the same questions come up when you are planning a redesign.
An online shop
Start from the commercial functions: catalogue, variants, promotions, tax, payment, shipping, returns and the link to your back office. Compare a hosted platform with an installed solution when both answer the need. Do not pick a tool only because the catalogue passes an arbitrary threshold of a thousand products.
A business application
If specific rules structure the whole service, a framework can give a clearer frame than a pile of CMS customisations. Have the riskiest rule prototyped before committing to the full build. Plan the administration side as well: it is often forgotten in a demonstration focused on the public interface.
A combined architecture
You can keep a CMS for content and build a separate application for the business logic. The WordPress REST API illustrates that capacity for exchange. A decoupled architecture does add responsibilities, though: preview, authentication, deployments and synchronisation all have to stay understandable to the team that inherits them.
Decide with a prototype and an exit plan
Ask each supplier to build or present the same critical journey. Then judge the result with the people who will actually use it. The person who publishes the content and the person who deals with incidents should both have a say in the choice.
The last check is autonomy: does your organisation hold the accesses it needs, can the data be exported, and could another team pick up the code? The right technical choice is the one you can use, fund and maintain over time, with limits you already know about.
Common questions
Can you build bespoke features inside WordPress?
Yes, usually through a custom theme or a purpose-built plugin. The point to check is whether that customisation stays maintainable and respects the responsibilities of the CMS, rather than piling up workarounds around it.
Is a framework always faster?
No. Queries, caching, media, hosting and real usage all shape the result. Compare measurements taken on the same journey and under the same load before drawing a conclusion.
At what budget should you move to a framework?
There is no threshold that holds for every project. Define the business rules first, then compare offers covering the same scope, maintenance and future work included.
Does a large catalogue mean leaving WooCommerce?
Not on product count alone. Variants, filters, synchronisations and concurrent orders are what put a platform under strain, and they have to be assessed with representative tests.
Does open source remove dependency on a supplier?
It gives you access to the code under its licence, but dependency can persist through poorly documented development, data that is hard to export or third-party licences. Write the handover into the contract.
What should you ask an agency before deciding?
A demonstration of the critical journey, the list of components and bespoke development, their maintenance calendars, a full budget, and the terms for handing over accesses, data and code.
