Plugins, custom data, and GraphQL extensions. In TypeScript, no forking.
The same TypeScript primitives on Vendure Core and Platform, self-hosted or on Cloud. Plugins as NestJS modules, strategy patterns, custom fields and entities, GraphQL schema extensions.
The trade-off Vendure refuses
Closed SaaS gives you "extensibility" as a sandboxed scripting hook and a webhook contract. DIY composable stacks give you primitives to assemble yourself, and a long roadmap of glue you'll write and maintain forever.
Vendure refuses the trade-off. Plugins are first-class NestJS modules in the same backend as the core, with the same access to services, data, and APIs the core itself uses.
Same extension model on Core and Platform, self-hosted or on Cloud
You pick your edition (Core or Platform) for the capabilities that ship out of the box, and your runtime (self-hosted or Cloud) for operational fit. Code targeting Core runs unchanged on Platform, and the same plugins run identically self-hosted or on Vendure Cloud. The extension API stays the same on every combination.
The model your team writes against is what Vendure's enterprise plugins are also built on. The enterprise suite is proof at scale that the model holds up under production-grade features.
What you change, and how
Five primitives cover most of what a real commerce business needs to model and customise. Each one is plain TypeScript, typed end to end, and works the same way on Core or Platform, self-hosted or on Cloud.
Plugins as NestJS modules
A Vendure plugin is a TypeScript class with a decorator on top of a regular NestJS module. Services, resolvers, entities, event handlers, scheduled tasks, all in one unit your engineers already know how to write.
Strategy patterns
Replace default behaviour without forking the core. Order codes, tax calculators, shipping eligibility, stock allocation, asset storage, password hashing. Swap the default, keep the upgrade path.
Custom fields
First-class on every core entity: order, customer, product, variant, and the rest. They propagate automatically into the GraphQL schema and the admin dashboard, with auto-rendered forms for each field type.
Custom entities
Model your own tables alongside Vendure's. Entities live next to the core, share the same migration tooling, and resolve through the same dependency injection your services use. New entity, new GraphQL types, no separate data layer to maintain.
Events, lifecycle, and jobs
Subscribe to typed commerce events. Hook into NestJS lifecycle. Schedule background work on Vendure's job queue and recover crashed jobs through the workflow engine.
Your plugin is your API
Every plugin extends the same GraphQL surface the core exposes: one introspectable schema, one codegen pipeline. The Admin API and Shop API are both extensible, both type-safe, both consumed the same way as the rest of Vendure.
Customisations live next to the core, not inside it
Plugins are your code, in your repo. The Vendure core is upgraded as a dependency, the way your team upgrades anything else. Type-safety catches breaking changes at compile time, in the plugin you wrote, not at runtime in production.
No permanent fork to rebase, no upgrade you skip because the cost is too high. Your business logic moves forward with the platform.
What enterprise looks like, built on the same model
Vendure Platform's enterprise plugins are concrete instances of the same extension API your team uses. A few shipping today:
- Enterprise SSO. OIDC, SAML, and SCIM for admin and storefront, built on the same authentication strategy pattern your team would use to wire up a custom identity provider.
- Audit logging. Tamper-evident records of admin actions and commerce data changes, captured through the same event bus and entity hooks any plugin can subscribe to.
- Advanced search. Elasticsearch-backed merchandising and faceting, shipped as a search strategy plus dashboard extensions, the same primitives a custom catalogue plugin would compose.
An extension API used in production, in the open
8,100+ stars
Developers and engineering teams evaluating, prototyping, and extending Vendure.
270+ contributors
From one-line fixes to entire subsystems, including extension primitives.
50K+ monthly downloads
@vendure/core pulled from npm every month, every install ready to be extended.
GPLv3 licence
Free to use, fork, and self-host under GPLv3. Vendure Platform adds a commercial licence, the enterprise plugin suite, and commercial support.
Trusted by complex B2B commerce and enterprise retail.
What engineering leads say about extending Vendure
Three engineering leads on the same question: can my team realistically own and extend this codebase long-term?
What convinced me about Vendure is its fundamentally well-architected codebase. It's clear, intuitive, and easy to extend, making it adaptable to virtually any use case.

Vendure is a breath of fresh air. Built with developers in mind, easy to extend, and well-documented. It embraces the need for customization and enabled me to deliver on time, within budget. The community support is fast and incredibly helpful.

Our peer-to-peer sharing marketplace builds on proven e-commerce components, but only Vendure offered the flexibility to seamlessly integrate our complex business logic. Its modern tech stack and use of established frameworks enable us to work efficiently and build a maintainable long-term solution.

What engineering leads ask before they bet on the extension model
Common questions from engineering and platform teams evaluating Vendure for a project they will extend heavily.



