Vendure vs Shopware: The Honest Comparison
I built a Shopware 6 theme and plugin with ProCommerce, and I have been developing on Vendure since its beta. For new projects I now recommend Vendure almost every time: better developer experience, deeper customizability and an architecture that grows with you. What still makes Shopware strong, and when I would point you to it, is further down.
What Vendure does better for developers and operators
Four points that genuinely make a difference in real projects. All verifiable in the official documentation, not lifted from a sales brochure.
Developer experience that saves time
- The Vendure CLI generates plugins, entities, services, job queues and API extensions fully wired up. No boilerplate by hand.
- Tests run on Vitest with a built-in test environment that caches the seeded database. The second test run starts instantly.
- A mistake in the data model is a compile error, not a production ticket. Schema, resolvers and storefront are typed together.
Fast, because there is less work to do
- GraphQL delivers exactly the fields a page needs in a single request. Shopware relies on a JSON Store API with no official GraphQL, which quickly means several requests per page.
- The EntityHydrator only loads relations that are actually missing, which avoids unnecessary joins.
- For multiple instances there is a shared cache via Redis, so not every instance builds up its own.
- Vendure itself reports that in version 2.2 a product detail page went from 7.5 seconds down to 115 milliseconds, on a catalog with more than 180,000 products and four million variants.
You turn it into your own product
- Custom fields attach to almost any entity and show up automatically in the GraphQL API and in the admin.
- Your own tables, resolvers and background jobs are ordinary parts of a plugin, not special cases.
- Payment, shipping, tax and discounts are swapped out through the same interfaces the core itself uses.
Grows with you, without a rebuild
- Server and worker scale independently. Compute-heavy jobs get their own processes without slowing the shop down.
- Individual workers can be pinned to specific job queues, for example search indexing separate from sending email.
- Channels let several brands, countries or locations run on a single instance. A case study published by Vendure describes 28 franchise businesses in one system.
- I run a marketplace with more than 20,000 users on it, and I am currently guiding a replatforming with over 30 custom plugins.
Numbers instead of promises
The benchmark comparisons between shop systems that circulate online are mostly worthless, because they measure different catalogs, caches and hardware. Vendure ships a k6 load-testing setup. Instead of showing you a number from a blog post, I will measure on your catalog and your infrastructure before you decide.
The decision matrix
Both systems are mature. Which side wins is decided by your business model and your team's stack - not by a feature comparison.
| Aspect | Vendure | Shopware |
|---|---|---|
| Tech stack | TypeScript, NestJS, GraphQL, any frontend | PHP, Symfony, Twig storefront or headless via Store API |
| License | Open source (GPLv3), optional Vendure Cloud | Community Edition free, commercial editions above that |
| API & data access | GraphQL for shop and admin, exactly the fields you need in one request, typed all the way into the storefront | Store API as JSON over HTTP, no official GraphQL |
| Custom business logic | Core strength - everything is a typed plugin | Possible, but against the conventions of a product |
| Standard shop out of the box | You build storefront and checkout yourself (starters available) | Core strength - storefront, checkout, admin ready-made |
| DACH ecosystem | Growing, international, small partner landscape | Very large - agencies, plugins, hosting well established |
| Hosting & data control | Self-hosted in the EU, full control (GDPR-friendly) | Self-hosted or Shopware Cloud |
| Extensibility | A plugin is a normal NestJS module with access to the same database, event bus and job queue as the core itself | Plugins run in their own PHP process with full access, while cloud-compatible apps only communicate via webhook with an external server |
| Upgrade safety | Breaking changes only in major versions, TypeScript and codegen surface incompatibilities at compile time | The switch from Webpack to Vite in version 6.7 visibly broke many plugins that ship their own admin UI |
Two worlds: TypeScript vs. PHP
Vendure
A NestJS server with GraphQL APIs for shop and admin. Every extension is a typed plugin with its own entities, resolvers and jobs. If your team has TypeScript, you run one stack from storefront to database - one reason I was able to build bookings, KYC and split payments at fainin entirely as plugins.
Technically, a plugin is nothing more than a NestJS module, and the docs note that many NestJS modules can be used directly as a plugin. Payment methods, shipping calculation, tax logic and promotions run in the core through the same strategy interfaces that plugins implement. There is no separate, restricted plugin API next to the actual product, core and plugin speak the same language.
Shopware
A Symfony application with a Twig storefront, app system and a large plugin store. Administration and standard processes are strong out of the box; deep changes to the core demand PHP experience and respect for update paths. For classic DACH shops with ERP integration, a proven path.
Shopware deliberately splits two paths: Plugins are Symfony bundles with full PHP access, but only usable when self-hosted. Apps for the Cloud version run entirely outside Shopware and only talk to an external server via webhook. Core services are changed through the official decoration pattern instead of direct inheritance, well documented and a real reason why plugins survive updates better.
License is not the same as TCO
The Vendure core is GPLv3 and stays free, no matter how much your revenue grows. You only need a commercial license for enterprise add-on features, or if you pass a modified version on to third parties. Shopware ranges from the free Community Edition (with a revenue cap, see below) through Rise from around 600 euros and Evolve from around 2,400 euros up to Beyond from around 6,500 euros a month. In the end, though, what matters are development and operating costs: a framework rewards custom logic, a product rewards staying close to the standard.
Owning it or using it: the real difference
Both systems can be extended technically. The difference is whose product you end up holding in your hands.
Vendure: The code is yours
- A plugin lives in your own repository, not in someone else's folder full of extensions. The core is updated like any other library, as a dependency.
- GPLv3 lets you fork the core, modify it and run it yourself, permanently. The obligation to publish only kicks in if you distribute a modified version, not when you run it for your own business.
- No revenue limit, no edition cap. Whatever runs for free today still runs for free at 10 million euros in annual revenue.
"Fundamentally well-architected code. Clear, intuitive, easy to extend."
Daniel Biegler, CTO at Chimpify GmbH (source: vendure.io)
Shopware: You use a product
- Plugins follow the vendor's conventions: decoration instead of inheritance, Twig blocks instead of copying templates. Well documented, but it's still someone else's rulebook.
- Core functionality is tiered: Community Edition free, then Rise, Evolve and Beyond, each with more features and a higher price.
- Since 2025, a Fair Use Policy applies: above 1 million euros in annual revenue, the free Community Edition is no longer permitted. Without a paid edition, the shop loses access to the store, and with it, security updates for installed plugins.
To stay fair: taking full ownership has its price. With Vendure, you take on maintenance and security updates yourself, the ecosystem is smaller, and you need a team that truly knows TypeScript and GraphQL. Shopware, in return, ships a complete storefront and admin panel, over 1,200 certified partner agencies and more than 3,100 extensions in its store. If you need a standard shop fast, you're often better served by it, even if it means using someone else's product instead of owning your own.
When Shopware is the better choice
- Your catalog and checkout are standard, and you need a finished shop rather than a framework to build on.
- Your team or agency lives in PHP and already knows the Shopware ecosystem.
- You would rather buy as much functionality as possible ready-made from the plugin store than have it built.
If you recognize yourself here, I'll tell you exactly that in the intro call - I earn nothing by recommending the wrong system.
Frequently asked questions about the comparison
Only if your business model chafes against Shopware's product nature: marketplace features, bookings, custom B2B logic. A running standard shop is better off not switching for the technology alone.
Yes, via the Store API. The difference is in the core: Vendure is built as an API-first framework, Shopware as a product with a bundled storefront that can also run headless.
A TypeScript team without PHP experience is better off with Vendure, a PHP team or an existing Shopware agency with Shopware. In practice, your team's stack is the strongest argument.
Rarely worth it. More realistic is a gradual transition with parallel operation during a migration - with clean redirects and data reconciliation so SEO and orders don't suffer.
There is no serious blanket answer: no reliable head-to-head benchmark exists, and both systems run fast when they are set up properly. The practical difference is how much work is involved. With GraphQL a page fetches exactly its fields in one request instead of stitching together several REST calls. What counts in the end is a measurement on your own catalog, and I am happy to run that before you decide.
Yes. Vendure is licensed under GPLv3, so you're allowed to fork the core, adapt it and run it for your own business, even as a SaaS. The obligation to publish only kicks in if you pass a modified version on to third parties. If you want to avoid that obligation entirely, you can buy a commercial license.
Since 2025, the free Community Edition has been capped at 1 million euros in annual revenue. Once that's exceeded, a paid edition like Rise, Evolve or Beyond is required, otherwise the shop loses access to the store and security updates.
Sounds like a Vendure project?
Then let us talk about architecture, effort and timeline. And if your case really is a better fit for Shopware, I will tell you that too.
