← Back to the blog

Announcing Vendure v1.1

Author avatar
July 1, 2021
Michael Bromley
@michlbrmly

This is our first feature update since v1.0! This blog post provides an overview of the main changes.

v1.1.0 Changelog

Upgrading from v1.0.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.1.0.

{
  "dependencies": {
-    "@vendure/admin-ui-plugin": "1.0.3",
-    "@vendure/asset-server-plugin": "1.0.3",
-    "@vendure/core": "1.0.3",
-    "@vendure/elasticsearch-plugin": "1.0.3",
-    "@vendure/email-plugin": "1.0.3",
-    "@vendure/ui-devkit": "1.0.3",
+    "@vendure/admin-ui-plugin": "1.1.0",
+    "@vendure/asset-server-plugin": "1.1.0",
+    "@vendure/core": "1.1.0",
+    "@vendure/elasticsearch-plugin": "1.1.0",
+    "@vendure/email-plugin": "1.1.0",
+    "@vendure/ui-devkit": "1.1.0",
  },
  "devDependencies": {
-    "@vendure/testing": "1.0.3",
+    "@vendure/testing": "1.1.0",
  }
}

New Features in v1.1

“Since” data added to API docs

Our TypeScript API docs now include information on which Vendure version an API was introduced. It looks like this:

Minimum version labels in the docs

Minimum version labels in the docs

New text custom field type

It is now possible to define a custom field with the type 'text'. This differs from the 'string' type in that it is not limited to 64k of data, since internally it will use the text or longtext data type of your database, which allows the storage of very large amounts of data.

This can be suitable for storing things like large JSON objects or descriptions which may exceed 64k in length.

New StockMovementEvent

A brand-new event type, StockMovementEvent can now be subscribed to with the EventBus. This event is published whenever the stock level of a ProductVariant is changed, e.g. due to adjustments, sales, allocations and cancellations.

Search API improvements

The search query now exposes a new collections field, which provides an array of all the Collections to which the search results belong. This works very much in the same way as the existing facetValues field, and can be used to add collection-based navigation to the search results page in your storefront.

This has been implemented in both the DefaultSearchPlugin and in the ElasticSearchPlugin.

The new collections field of the search query

The new collections field of the search query

Improvements to EmailPlugin

Email handlers now have a new method, setOptionalAddressFields(), which allows the cc, bcc and reply-to fields to be set.

It is also now possible to specify attachments as a stream or buffer, in addition to the existing method of specifying a file path.

Admin UI improvements

  • The Admin UI is now available in Ukranian.
  • The promotions list view now allows promotions to be filtered by name or coupon code.
  • New OptionGroups may now be added to existing Products via the “manage variants” view.
  • Custom field controls are now displayed in the Order detail table as well as in the Fulfillment detail card.

Other notable features

  • It is now possible to configure the rules around accessing a completed order by order code for guest customers. Previously the logic was hard-coded that a guest customer could view a completed order for up to 2 hours after checkout (to allow an order summary screen to be displayed in the storefront). This logic is now configrable via the new OrderByCodeAccessStrategy.
  • The TransactionalConnection.getEntityOrThrow() method can now be configured with retry logic. This can be useful when working with the EventBus and subscribing to the creation of new entities which may not be initially visible due to an ongoing transaction.
  • Middleware can now be configured to execute earlier in the middleware stack.
  • The VendurePlugin entities array may now be defined via a function.
  • The CSV import format now supports importing custom field lists.
  • The performance of the apply-collection-filters (one of the most commonly-run background jobs) has been drastically improved - from between 2 - 8x faster depending on your inventory and number of Collections.

Thank you to our 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 contributions by:

  • Andrew Kirillov:

    • feat(admin-ui): Add Ukrainian translation (#889)
    • chore(admin-ui): Fix Russian, Ukrainian translation and update coverage report (#920)
  • Artem Danilov:

    • feat(search): add to SearchResponse collections array (#956)
  • Dmytro Kostenko:

    • feat(admin-ui): Add ability to filter promotions by name or coupon code
    • perf(core): Improve performance of apply-collection-filters job (#915)
  • Kai Chu:

    • fix(admin-ui): Fixed unsupported plural for Simple Chinese translation (#888)
  • Karel Van De Winkel:

    • fix(core): Make verifyCustomerAccount channel-independent (#945)
Author avatar
Written by
Michael Bromley
Michael is the creator of Vendure. He lives in Vienna, Austria.
Twitter logo GitHub logo