Announcing Vendure v1.9
June 06, 2023
Codename: Kitzbühel
This release is named after one of the most famous ski resorts in the world - Kitzbühel. This medieval town is located in the heart of the Alps in Tyrol, Austria, and is not only the home of the world-famous Hahnenkamm ski race, but also home to Alpin11, Vendure's partner and shareholder.
Upgrading from v1.x.x
This minor release contains no breaking schema or GraphQL API changes, so updating should be a matter of changing all @vendure/...
dependencies in your package.json file to 1.9.0
.
{
"dependencies": {
- "@vendure/admin-ui-plugin": "1.8.5",
- "@vendure/asset-server-plugin": "1.8.5",
- "@vendure/core": "1.8.5",
- ... etc
+ "@vendure/admin-ui-plugin": "1.9.0",
+ "@vendure/asset-server-plugin": "1.9.0",
+ "@vendure/core": "1.9.0",
+ ... etc
},
"devDependencies": {
- "@vendure/testing": "1.8.5",
+ "@vendure/testing": "1.9.0",
}
}
Also see the Updating Vendure guide for more information.
Custom history entries
In Vendure, Orders and Customers have a history timeline that shows important changes and events relating to that Order or Customer. From v1.9, it is now possible to define your own custom history entries for both Orders and Customers. Not only that, you can also provide custom UI components to control how these entries get displayed in the Admin UI's timeline!
The HistoryService docs contains a full example of defining using a custom history entry.
A new Custom History Timeline Components guide describes how to create a UI component for your custom history type.
ActiveOrderStrategy
The Shop API operations like activeOrder
and addItemToOrder
all work with an implicit "active" Order entity. This order gets automatically created and associated with the current session.
This behaviour, while convenient for most use-cases, makes it very difficult to support alternate workflows common in B2B and other scenarios where, for example, an Order might need to be created by one person, and then modified by another, and then purchased by a third.
This kind of advanced order workflow can now be supported using the new ActiveOrderStrategy.
With a custom ActiveOrderStrategy, you can now support things like:
A unique active order for each channel
Multiple active orders referenced by a token or ID
Restricting access to an active order to employees of a single company
Login screen refresh
As the first part of a general UI refresh that will be released with v2.0, we've upgraded the login screen!
The images come from an Unsplash collection we curate ourselves, but you can also specify your own image:
AdminUiPlugin.init({
route: 'admin',
port: 5001,
adminUiConfig: {
loginImageUrl: 'https://domain.com/my-custom-splash-screen.jpg',
},
}),
Mollie integration upgrade
Our Mollie payments integration was previously built on Mollie's Payments API, but now in v1.9 - and thanks to our Silver Partners at Pinelab - is now built on the more powerful Orders API.
Using the Orders API is the preferred approach when integrating the Mollie API into e-commerce applications such as webshops.
The primary benefit of this change is that it unlocks a host of new payment options, including "pay after delivery" payment methods such as Klarna Pay later, Klarna Slice it or in3, Klarna Pay now, as well as eco vouchers, gift vouchers, and meal vouchers.
See the new Mollie pay later methods guide in our docs.
Other notable changes
A new
facetValues
query has been added to the Admin API. This is now used by the built-infacet-value-form-input
control to greatly improve performance when working with a large number of Facets and FacetValues.All list queries that return the
PaginatedList
type can now be filtered with a newisNull
filter.The EmailPlugin now supports a new SES transport so you can send your emails using Amazon's Simple Email Service.
We updated our Vendure Demo to showcase each of the starter storefronts we're maintaining. The Angular storefront now has a new home at angular-storefront.vendure.io and has been converted to use Tailwind to match the look and feel of the Remix & Qwik starters.
Contributors
I'd like to thank the wonderful Vendure community who contribute their ideas, bug reports, and code to the project daily. This release includes code contributions by:
fix(core): Importing custom boolean field works as intended (#1908)
feat(elasticsearch-plugin): Independently access customMappings (#1909)
fix(core): AuthGuard correctly handles subscriptions
feat(email-plugin): Add support for AWS SES transport (#1877)
feat(admin-ui): Login UI refresh (#1862)
fix(admin-ui): Add links according to Unsplash guidelines (#1911)
feat(payments-plugin): Use Mollie's Order API (#1884)
fix(ui-devkit): Update scaffolding to use correct eslib (#1886)
docs: Fix typo in authentication.md (#1861)
fix(core): Fix injectable hooks on TaxLineCalculationStrategy (#1882)
perf(core): Use TypeORM relation query builder when filtering collection
refactor(core): Remove unused code in applyCollectionFiltersInternal
fix(payments-plugin): Return 200 on Stripe payment failed event (#1878)
feat(admin): Sort orders on customer details page (#1860)
fix(core): Make order of OrderLine from OrderService.findOne deterministic (#1904)
Create your first commerce experience with Vendure in less than 2 minutes
Vendure is a registered trademark. Our trademark policy ensures that our brand and products are protected. Feel free to reach out if you have any questions about our trademarks.
Documentation
Newsletter
Get the latest product news and announcements delivered directly to your inbox.