Skip to content

Releases: vendure-ecommerce/vendure

v3.5.2

19 Dec 12:52

Choose a tag to compare

Here are the notable improvements in Vendure v3.5.2:

Next.js Storefront

When you start a new project using @vendure/create, you now have the option to include our brand-new Next.js Storefront! This gives you a true full-stack headless commerce project in a modern monorepo configuration.

image

For existing projects, you can also try out the storefront:

Dashboard fixes

We have continued to refine and polish the new Dashboard with over 20 fixes and features in this release, including:

  • Drag-drop reordering of collections
  • Ability to add surcharges when modifying orders
  • Improved right-to-left layout

Core fixes

There are a number of significant fixes in Vendure core too, including:

  • Huge performance improvement when dealing with self-referencing entity lists (e.g. if you define a Product relation custom field on the Product entity)
  • A very important fix for scheduled tasks on postgres, to ensure that tasks get executed by only a single worker in horizontally-scaled environments
  • Fixes and optimizations to advanced filtering of paginated list queries

📚v3.5.2 Changelog

What's Changed

New Contributors

Full Changelog: v3.5.1...v3.5.2

v3.5.1

14 Nov 08:51

Choose a tag to compare

Vendure v3.5.1 incorporates many fixes and improvements to the new Dashboard based on all of your feedback since the launch of v3.5.0!

Most notable fixes & features:

Support for localization of Dashboard extensions

You can now take advantage of the localization system and provide translations for your dashboard extensions. See the new Localization Guide in the docs.

Fixed compilation issues

We have fixed a number of compilation issues - one caused by an update to the underlying compiler package @swc/core

We also improved support for compilation on Windows, and added an experimental module option to the Vite plugin
which you can use to enable support for ESM-based Vendure projects.

compatibilityMode No longer required

We implemented a compatibilityMode flag for the AdminUiPlugin to allow you to run both the old Angular-based Admin UI alongside the new React-based Dashboard.

This is now no longer required - both plugins can exist without any issues.


Fixes

  • admin-ui-plugin Deprecate compatibilityMode option (#3953) (e62fce2), closes #3953
  • cli Fix schema command "dir" option (785ccf1), closes #3896
  • core Correctly persist relation custom fields on Zone entity (#3951) (c68120a), closes #3951
  • core Prevent duplicate GraphQL custom field input type definitions (#3889) (f16f790), closes #3889
  • core Roles query pagination (#3826) (2d1c98d), closes #3826
  • create Fix dev mode path to static dashboard files (d0a3206)
  • create Update CLI instructions to reflect the new Dashboard (#3957) (dba8f44), closes #3957
  • dashboard add optional chaining to shipping lines to prevent UI from crashing (#3930) (5e5ef68), closes #3930
  • dashboard Allow rendering multiple blocks in same location (#3937) (1206605), closes #3937
  • dashboard Allow the option "enableColumnFilter" for additionalColumns in ListPage (#3968) (b9bc533), closes #3968
  • dashboard Copy requiresPermission to nav menu items (#3938) (a2057de), closes #3938
  • dashboard Do not block reload for pristine forms (9a364f4), closes #3964
  • dashboard Fix custom field tab display logic (504fa9b)
  • dashboard Fix empty state of list type config args (c95a00b), closes #3969
  • dashboard Fix healthcheck view when api endpoint is auto (#3919) (62d5ddb), closes #3919
  • dashboard Fix history entry item destructive icon color (#3954) (e31e4cb), closes #3954
  • dashboard Fix incorrect currency being displayed in product variant listing (#3906) (b2077fa), closes #3906
  • dashboard Fix relation selector null/undefined handling (#3942) (715b905), closes #3942
  • dashboard Fix saving global languages when selecting Norwegian (#3967) (33071cc), closes #3967
  • dashboard get the right vite __status on the starting page (#3891) (521808b), closes #3891
  • dashboard Implement bulk actions for the zone members table (#3966) (26997d3), closes #3966 #3927
  • dashboard Improve default string list component (79fd8a4), closes #3916
  • dashboard Improve security of html sanitization (4fb3bb0)
  • dashboard Include OrderLine custom fields in detail view (#3958) (d314a6c), closes #3958
  • dashboard incorrect extension import path generation on windows (#3915) (14cd5b4), closes #3915
  • dashboard Increase rate limit for dev mode (999d3e1)
  • dashboard Introduce experimental support for ESM projects (3881d46), closes #3727 #3533
  • dashboard Page block fixes (#3955) (9c28eff), closes #3955
  • dashboard Properly convert price to minor units before saving product variants (#3907) (7274b23), closes #3907
  • dashboard Respect authTokenHeaderKey config (#3935) (7324584), closes #3935
  • dashboard Show customFields on address forms (#3900) (66b2568), closes #3900
  • payments-plugin Support more payment flows by checking ArrangingAdditionalPayment state (9ca67e9)

Features

  • dashboard Support localization for dashboard extensions (#3962) (112cb9d), closes #3962
  • dashboard Tag-based input for string list custom fields (#3934) (3fb2786), closes #3934

What's Changed

  • fix(dashboard): Fix incorrect currency being displayed in product variant listing by @jirkavrba in #3906
  • fix(core): Prevent duplicate GraphQL custom field input type definitions by @oliverstreissi in #3889
  • fix(dashboard): get the right vite __status on the starting page by @oidt in #3891
  • docs(dashboard): Add section explaining use of Tabs in pageLayout by @HouseinIsProgramming in #3913
  • fix(dashboard): Properly convert price to minor units before saving product variants by @jirkavrba in #3907
  • fix(dashboard): add optional chaining to shipping lines to prevent UI from crashing by @BibiSebi in #3930
  • feat(dashboard): Tag-based input for string list custom fields by @dlhck in #3934
  • fix(dashboard): Respect authTokenHeaderKey config by @dlhck in #3935
  • feat: Expose ProductVariantPrice entity to price calculation strategy by @asonnleitner in #3918
  • fix(dashboard): Copy requiresPermission to nav menu items by @dlhck in #3938
  • fix: Fix dashboard build by pinning @swc/core version by @michaelbromley in #3939
  • fix(dashboard): Fix relation selector null/undefined handling by @dlhck in #3942
  • fix(dashboard): Show cu...
Read more

v3.5.0

22 Oct 11:21

Choose a tag to compare

Dashboard Stable Release

dashboardteaser

We are beyond excited to officially release our brand new Dashboard!

Back in February we announced our intention to completely re-imagine the experience of building custom UI for your Vendure plugins. After months of development and testing, we're proud to present the new Dashboard:

  • Built on a modern, dev- & AI-friendly stack: React, Tailwind, Shadcn/ui, TanStack Router, Vite
  • Customizations that took you hours can now be done in minutes
  • Vastly expanded customization options
  • User settings persist per logged-in administrator

→ 🔴 Dashboard Announcement Video
Dashboard Getting Started Guide
Dashboard Demo
Dashboard Component Library

CLI Improvements

New schema Command

The Vendure CLI now has a brand-new schema command which allows you to generate a full GraphQL schema for your Admin or Shop API in a single command. No more custom scripts or reliance on running servers. The command reads your VendureConfig and is able to construct the full schema - including all custom fields and API extensions defined in your plugins - and outputs in the format of your choice.

The resulting schema can then be used by GraphQL tooling like your IDE's GraphQL plugin to give you perfect autocomplete while you build your queries and mutations.

Vendure CLI schema command docs

Improved monorepo support

A number of improvements have been made to the CLI internals to better handle different types of repo setup. For example, the CLI is now smarter at detecting Nx-like setups which have multiple inherited tsconfig files, where a base config defines path mappings that are used throughout the monorepo packages.

A number of other edge cases have also been handled, like where there are multiple VendureConfigs detected.

SettingsStore read/write permissions

The SettingsStore, introduced in the last minor release, just got an update to allow you to individually specify read & write permissions. Prior to this, there was only a single permission possible, which would cover both read and write access.

This unlocks many more possibilities for this API - indeed it powers the ability of Dashboard admins to create global views on list pages that can then be accessed (but not changed) by all users.

SettingsStore permissions docs

Breaking Changes: SentryPlugin

We have updated the underlying library used in our @vendure/sentry-plugin package in order to bring it into line with the latest Sentry version and the recommended way of instrumenting NestJS-based apps.

First you can simplify the options passed to the SentryPlugin:

// before
SentryPlugin.init({
  dsn: process.env.SENTRY_NODE_DSN,
  environment: process.env.SENTRY_ENV,
  tracesSampleRate: 0.1,
}),

// after
SentryPlugin.init(),

With the new version, the Sentry DSN is provided as an environment variable, and you'll need to alter the way you run your server to pre-load the plugin's instrumentation file. See the SentryPlugin docs for a complete guide.

Note: If you are unable to update right away, it's perfectly safe to keep using v3.4.x of the SentryPlugin while you plan in the upgrade.

Changelog

(note: specific Dashboard features & fixes are omitted here for brevity. See the CHANGELOG.md file for a complete list)

Fixes

  • cli Fix custom config path handling for migrate & schema commands (3bfe632)
  • cli Fix entity generation without translation (d8e20de)
  • cli Fix package location in monorepos (39fce1c)
  • cli Show relative paths for duplicate plugin names in selection (#3854) (1dafa9b), closes #3854
  • cli Update codegen command to use schema file (9f8a3d5)
  • core Add minimums to default promotion actions/conditions (0f95ecc)
  • core Fix edge case that breaks asset url prefixing (7b39613)
  • core Implement min value on default shipping calculator tax (b5f4b01)
  • create Fix package resolution in monorepos (daf85f8)

Features

  • cli Improve support for Nx-style monorepos (8a83236)
  • cli Improved monorepo detection and support (99e0b11)
  • cli Introduce new schema command (134e0fe)
  • core Add read/write permission support for settings store (#3828) (6d585a2), closes #3828
  • core Implement tax rate filtering by zoneId, categoryId (08eb48e)
  • create Include Dashboard with new Vendure projects (#3862) (b6152d5), closes #3862
  • sentry-plugin Add option to capture logs (7777721)
  • sentry-plugin Log error instead of throw error when dsn is not set (0bd9ea6)
  • sentry-plugin Migrate to @sentry/nestjs module (#3744) (0a60889), closes #3744

What's Changed

  • feat(dashboard): Add date range filtering to dashboard widgets by @dlhck in #3818
  • chore(core,testing): Switch to mysql2 client library by @dlhck in #3821
  • feat(sentry-plugin): Migrate to @sentry/nestjs module by @dlhck in #3744
  • feat(core): Add read/write permission support for settings store by @dlhck in #3828
  • feat(dashboard): Add saved views for data tables by @dlhck in #3825
  • feat(core, dashboard): Slug strategy and slug input by @dlhck in #3832
  • feat(dashboard): Add handleNestedFormSubmit utility for nested forms by @dlhck in #3835
  • feat(dashboard): Implement option group & option editing by @michaelbromley in #3837
  • perf(dashboard): Optimize list queries by @michaelbromley in #3838
  • feat(dashboard): Add TanStack Router validateSearch support and unauthenticated routes by @dlhck in #3840
  • fix(dashboard): Fix router initialization and BASE_URL processing by @dlhck in #3841
  • feat(dashboard): Full localization for 25 languages by @michaelbromley in #3847
  • fix(dashboard): Fix several issues on the list pages by @michaelbromley in #3851
  • feat(dashboard): Default dashboard page & dx improvements by @michaelbromley in #3859
  • feat(create): Include Dashboard with new Vendure projects by @michaelbromley in #3862
  • refactor(cli): Remove code duplication in the add command by @HouseinIsProgramming in #3855
  • fix(cli): Show relative paths for duplicate plugin names in selection by @HouseinIsProgramming in #3854
  • feat(dashboard): Add form controls for multi currency / multi warehouse by @michaelbromley in #3866
  • feat(dashboard): Implement add command for Dashboard extensions by @michaelbromley in #3864
  • refactor(dashboard): Simplify login screen and add password visibility toggle by @dlhck in #3863
  • feat(dashboard): New CLI schema command by @michaelbromley in #3872
  • feat(dashboard) Alerts improvements and docs by @michaelbromley in #3876
  • Add storybook app for dashboard components by @michaelbromley in #3879
  • chore(dashboard): Attempt to fix vercel config by @michaelbromley in #3880
  • fix(docs): Update detail page configuration to use detailForms by @BibiSebi in #3881
  • fix(dashboard): Custom fields in s...
Read more

v3.4.4

08 Oct 16:03

Choose a tag to compare

What's Changed

Full Changelog: v3.4.3...v3.4.4

Fixes

  • core Omit saving Order.customFields on applyPriceAdjustments (293a74b)
  • create Fix package resolution in monorepos (7590b56)

v3.4.3

02 Oct 11:06

Choose a tag to compare

3.4.3 (2025-10-02)

This release includes a very important dependency fix, which solves an issue that prevents @vendure/core from successfully installing.

The reason for this was a recent new version of one of our dependencies - @nestjs/graphql - which in the latest minor, 13.2.0, updated the underlying Apollo Server version. This caused a series of conflicts with other dependencies ultimately leading to an infinite loop when attempting to install Vendure.

In addition to this fix, there are a lot of updates to the new React dashboard.

Fixes

  • core Ensure surcharges relation is loaded in assignToChannels (#3812) (9d58978), closes #3812
  • core Set apollo dependency to fix hung install (28a9831)
  • dashboard Add bulk actions to product variants table (c3f1d1b)
  • dashboard Add missing columns to product variants table (0577e24)
  • dashboard Clear temp dir on compilation (a0bbe09)
  • dashboard Fix asset detail preview display (03b03ac)
  • dashboard Fix asset focal point positioning (d574be4)
  • dashboard Fix display of collection children column (946409d)
  • dashboard Fix position of bulk actions when in sheet (2902e30)
  • dashboard Fix runtime issue caused by dependency bundling (7d3b2b4)
  • dashboard Implement entity duplicator dialog (0328d46)
  • dashboard Improve layout of permissions grid (#3827) (5c3ae0f), closes #3827

Features

What's Changed

New Contributors

Full Changelog: v3.4.2...v3.4.3

v3.4.2

11 Sep 08:48

Choose a tag to compare

Note: In this release, the SettingsStoreService methods have been revised to put the ctx argument in the first position, as is standard across Vendure APIs. Existing code with the ctx last will still work, but you are advised to update it.

- SettingsStoreService.get<T>(key, ctx)       
- SettingsStoreService.getMany(keys, ctx)     
- SettingsStoreService.set<T>(key, value, ctx)
- SettingsStoreService.setMany(values, ctx)

+ SettingsStoreService.get<T>(ctx, key)       
+ SettingsStoreService.getMany(ctx, keys)     
+ SettingsStoreService.set<T>(ctx, key, value)
+ SettingsStoreService.setMany(ctx, values)   

Fixes

  • core Correctly implement SettingsStore validation & argument order (#3808) (d8cdd62), closes #3808
  • core Emit CollectionEvent after moving a collection (#3801) (d80e28f), closes #3801
  • core Fix logic for calculating interval (394fb05)
  • core Handle foreign key violations during order merge (#3795) (c00a044), closes #3795
  • core Log warning when attempting to persist invalid custom fields (#3793) (eefbd9c), closes #3793
  • core Handle stale locks on scheduled tasks (#3708) (4492850), closes #3708
  • create Fix resolving path in repos using hoisted node_modules (#3802) (fd971a5), closes #3802
  • dashboard Add initial value to reduce call (9261f03)
  • dashboard Allow column selection on recent orders (182c0b7)
  • dashboard Derive breadcrumbs from path/basepath to match sidebar (#3784) (562cc54), closes #3784
  • dashboard Ensure language is valid when switching channel (97d9a9d), closes #3780
  • dashboard Ensure language is valid when switching channel (7473956)
  • dashboard Fix api 'auto' options (#3807) (b597dfc), closes #3807
  • dashboard Fix change detection in RichTextInput (1c18b41)
  • dashboard Fix checkboxes on variant creation (4b69839)
  • dashboard Fix data table date filter (225b774)
  • dashboard Fix filtering in latest orders widget (b8ac456)
  • dashboard Fix multi select on asset gallery (5826c7f)
  • dashboard Fix navigation to Asset detail from gallery dialog (846ab24)
  • dashboard Fix scroll behaviour on asset picker dialog (363043d)
  • dashboard Improve facet list table (b76d1dc)
  • dashboard Improve layout & rendering of order summary widget (cf72c72)
  • dashboard Improve styling of metrics widget, add refresh (e8f8d99)
  • dashboard Make long table column dropdowns scrollable (f878e24)
  • dashboard Show “Create” for new entities, “Update” for edits (#3805) (fdece02), closes #3805
  • dashboard Update channel switcher when Channel added/updated (1cd7652)

What's Changed

New Contributors

Full Changelog: v3.4.1...v3.4.2

v3.4.1

25 Aug 11:55

Choose a tag to compare

In addition to the changes listed below, this release includes an internal refactor of form components in the new React Dashboard. This includes an updated set of documentation:

As part of this refactor, the detailForms.displays property was removed as it was redundant. All custom form components for detail pages should be specified via the detailForms.inputs property.

Fixes

  • admin-ui Fixed facets and tags references in Spanish translations (#3752) (bc8bbea), closes #3752
  • cli Use dynamic import for strip-json-comments (#3745) (a3acd91), closes #3745
  • core Filter StockMovements by type when fetching by product variant (#3713) (99907fc), closes #3713
  • core Fix scheduled task registration to avoid entity ID errors (#3763) (68e98eb), closes #3763
  • dashboard Add error handling to schema generation process (#3731) (23ef906), closes #3731
  • dashboard Remove bulk actions display in asset picker (55f71ab)
  • dashboard Remove vite plugin source code from package (c3546c4)
  • email-plugin Escape recipient's HTML entities in dev mailbox (#3756) (904baa9), closes #3756
  • job-queue-plugin Use SCAN instead of KEYS to clean indexed sets (#3743) (1c9b00b), closes #3743

What's Changed

New Contributors

Full Changelog: v3.4.0...v3.4.1

v3.4.0

01 Aug 15:09

Choose a tag to compare

Dashboard Release Candidate

image

With Vendure v3.4, our new React-based Dashboard is now in the release candidate (RC) phase.

This means that the developer APIs can be considered stable, and you can start using it and building on it.

The Dashboard is the replacement of the existing Angular-based Admin UI, and it aims to improve upon it in every way:

  • Cleaner, more modern design
  • Improved UX
  • Radically simpler to extend with your own customizations
  • Many more ways to customize every part of the UI to your exact needs

This RC version is very close to feature-parity with the old Admin UI, and we'll be filling in the missing pieces in upcoming patches.

Get started now by heading to our Dashboard Getting Started Guide

Note If you have been using the beta version of the Dashboard, you'll need to make some adjustments to your vite.config.mts file because we have updated the import path of the Vite plugin, and changed a couple of property names since the last beta release.

CLI non-interactive mode

The Vendure CLI now has a non-interactive mode, which allows you to pass options as command-line arguments. This opens up the CLI to scripting and integrations such as Nx generators.

CLI non-interactive mode docs

Settings Store

We introduced a brand-new API into Vendure core - the Settings Store. This is a native way to store configuration settings for your plugins via a fast, simple, and feature-rich API.

In fact, we already use this API to power our new Dashboard: your user settings get persisted to the settings store, so that they persist across browsers and devices.

Settings Store docs

Updating

To update:

  1. Update all @vendure/... dependencies in your package.json to 3.4.0
  2. Run npm install
  3. Generate a migration to reflect the DB changes introduced in this version (these changes are non-destructive, data won't be lost. But to be extra careful it's always a good idea to have a backup before running on production data).
  4. Read over the BREAKING CHANGE section below to see if there are any changes you need to know about.

Changelog

Features

  • cli Non-interactive mode and new structure (#3606) (7d9f03b), closes #3606
  • core Add addItemsToOrder mutation to add multiple items to cart (#3500) (84a8cbe), closes #3500
  • core Add facetValue query to Admin API (fae3c51)
  • core Add single facetValue create/update mutations to Admin API (4db0d51)
  • core Add support for deprecating custom fields with @deprecated directive (#3582) (6fb399f), closes #3582
  • core Add trustProxy option to ApiOptions (#3567) (f248719), closes #3567
  • core Improve OrderEvent and publish for order modify (#3594) (5a27b14), closes #3594
  • core Merge custom fields on updating order lines (#3673) (ead7bfa), closes #3673
  • core SettingsStore for global & scoped config settings (#3684) (5aa01cc), closes #3684
  • core Throw error on taxSummary if surcharges relation is not loaded (#3569) (068176c), closes #3569
  • dashboard Add customizable login extensions API (#3704) (866afcb), closes #3704
  • dashboard Add DashboardPlugin as part of dashboard package (#3711) (49d449f), closes #3711
  • dashboard Add dev mode info to nav menu (867655e)
  • dashboard Dashboard persistent settings (#3712) (17c27ff), closes #3712
  • dashboard Implement content language handling (b635d23)
  • elasticsearch-plugin Extend ElasticSearch to also support groupBySKU for multi-vendor store scenarios (#3528) (ec1cc5e), closes #3528
  • payments-plugin Export StripeService to support more payment flows (#3624) (829ab2c), closes #3624
  • payments-plugin Migrate Mollie to Payments API (#3603) (d0db5cb), closes #3603

Perf

  • core Add indexes on date cols for orders & job items (#3614) (ceb5279), closes #3614

Fixes

  • cli Standardise flag names (a63ac07)
  • core Fix relation constraints in OrderModification (87fc929)
  • core Product by slug query filters on channel (#3591) (78608cc), closes #3591
  • dashboard Add "ring offeset" padding on devmode on hover ring (#3707) (a2e3a10), closes #3707
  • dashboard Add missing order property to nav menu items (#3705) (6ffa048), closes #3705
  • dashboard Fix detection of node_modules (55e012b)
  • dashboard Fix dev mode styling in dark mode (092b432)
  • dashboard Fix editing of order history entries (74f149a)
  • dashboard Fix heading for collection contents (971ecca)
  • dashboard Fix intersecting borders and inconsistent rounded corners (#3717) (ae7828f), closes #3717
  • dashboard Improved facet value editing (16c2e5e)
  • dashboard Multiple style & functionality fixes (cca25e2)
  • dashboard Remove use of crypto.randomUUID in option input (#3618) (61bed48), closes #3618
  • payments-plugin improve order state transition handling for channel-specific contexts and default channel as a fallback (#3420) (4f29f0a), closes #3420

BREAKING CHANGE

  • If you are using the MolliePlugin, you should install @mollie/api-client@4.3.3 as the plugin has been updated to use the latest Mollie features.
  • Indexes have been added on the columns orderPlacedAt in the Order table, and createdAt in the JobItem table (for those using the DefaultJobQueuePlugin). This will require a non-destructive DB migration be performed to add these indexes to your schema.
  • With the introduction of the new SettingsStore feature, a non-destructive database migration will be required to set up the new table that will store the settings data.

What's Changed

Read more

v3.3.8

01 Aug 13:14

Choose a tag to compare

Fixes

  • admin-ui Fixed tracking code not showing in order history (#3402) (6002c21), closes #3402
  • cli Replace regex solution with robust stirp-json-comments package (#3694) (26a9e03), closes #3694
  • core Account for refund status when calculating order coverage (#3719) (1400bbc), closes #3719 #3670
  • core More reliable job subscriber timeout handling (5e124d5)
  • dashboard Correct detection of tailwind classes in plugins (86da88a)
  • dashboard Fix custom field label (45d4b3c)
  • dashboard Fix custom fields in GlobalSettings detail (bcd55b8)
  • dashboard Fix npm package discovery (1fc6f85)
  • dashboard Fix plugin detection on Windows (bbb8c48)
  • dashboard Temporarily remove shadcn avatar (10d5ebc)
  • email-plugin Hydrate lines.featureAsset on order-confirmation email (#3690) (20c05db), closes #3690
  • payments-plugin Include metadata in createPayment of Stripe handler (#3692) (d415dd0), closes #3692

Features

  • dashboard Full support for configurable operations UI (#3702) (8e0c5b4), closes #3702
  • dashboard Full support for custom fields in detail forms (#3695) (38d6f73), closes #3695
  • dashboard Implement add facet value (4b24f24)
  • dashboard Implement delete facet value (c7db965)
  • dashboard Job list improvements (d5c39cf)
  • dashboard Update theme to use OKLCH color space and new shadcn theme (#3688) (199cbd1), closes #3688

What's Changed

New Contributors

Full Changelog: v3.3.7...v3.3.8

v3.3.7

18 Jul 15:23

Choose a tag to compare

What's Changed

Full Changelog: v3.3.6...v3.3.7