Change Log
7.1.0
Minor Changes
ADDED Configuration options apolloAgentKeepAliveOptions and apolloFetchOptions for the Commercetools API client, allowing customization of Apollo client HTTP agent and fetch behavior to handle longer GraphQL response times from Commercetools.
// Configure Apollo agent and fetch options when initializing the Commercetools API client
const commercetoolsConfig = {
// ... other config options
apolloAgentKeepAliveOptions: {
timeout: 60000, // Set custom timeout
freeSocketTimeout: 30000, // Set custom free socket timeout
},
apolloFetchOptions: {
// Custom fetch options
},
};
7.0.1
Patch Changes
Apply maintenance changes from v6.1.1 and v6.2.0 to the latest major version:
- CHANGED Extends
configuration.customTokenparams withapolloContext. It allows to access the request. - CHANGED Exports
TokenParserfrom the library. It can be used to parse the token from the cookie:TokenParser.parseToken(req.cookies[CT_COOKIE_NAME]). - CHANGED
configuration.customRetryis now asynchronous.
7.0.0
Major Changes
- CHANGED Guarantee compatibility with
@alokai/connectpackage. - CHANGED Updated the package for compatibility with Node.js 22.
Key Updates:
- Upgraded to the latest version of Node.js 22
- Updated CI pipelines to use Node.js 22 for consistency.
- Updated
.nvmrcor.node-versionfiles to specify Node.js version22.14. - Upgraded
@types/nodeto version^22.13.17for compatibility with the latest Node.js features.
Recommendations:
- Use Node.js version
22.14.0or higher for optimal performance, security, and compatibility. - While Node.js 20 is technically supported, it is not recommended as it may cause compatibility issues with certain packages and has not been thoroughly tested.
CHANGED Replaced core dependencies with a new
@alokai/connectpackage.@vue-storefront/middleware,@vue-storefront/sdk,vue-storefront/logger,vue-storefront/unified-data-model,@vue-storefront/multistorewere replaced with@alokai/connect. The replacement preserves the same functionality and interface as the original packages. To read more about the@alokai/connectpackage, please refer to the documentation.
Patch Changes
- Updated dependencies:
- @vsf-enterprise/commercetools-types@3.0.0
- @alokai/connect@1.0.0
6.1.1
Patch Changes
- ADDED Commercetools integration now supports range facets for filtering products by numeric ranges (e.g., price ranges). Configure range facets in your middleware config with the
type: 'range'property andrangesarray defining the boundaries:
export const config = {
//...
configuration: {
//...
faceting: {
availableFacets: [
{
countingProducts: true,
facet: "variants.price.centAmount",
filteringStrategy: ["filter"],
name: "price",
ranges: [
{ from: 0, to: 5000 }, // $0 - $50
{ from: 5000, to: 10000 }, // $50 - $100
{ from: 10000, to: 15000 }, // $100 - $150
{ from: 15000 }, // $150+ (open-ended range)
],
type: "range",
},
],
},
},
};
Filter products using the unified API with range values in "from-to" format:
const response = await sdk.unified.searchProducts({
facets: {
price: ["5000-10000", "10000-15000", "15000-*"], // Include open-ended range
},
});
Range facets return values in "from-to" format with labels "from - to" for closed ranges and "from - " for open-ended ranges. Note that price values are in centAmount, so format them before displaying on the frontend:
{
facets: [
{
name: "price",
values: [
{ value: "0-5000", label: "0 - 5000", productCount: 15 },
{ value: "5000-10000", label: "5000 - 10000", productCount: 23 },
{ value: "15000-*", label: "15000 - ", productCount: 8 }, // Open-ended range
],
},
];
}
6.1.0
Minor Changes
** CHANGED ** - Update all internal usage of consola logger to @vue-storefront/logger logger, see Logger for more details
6.0.0
Major Changes
CHANGE - Update middleware in packages to 5.1.0
5.0.1
Patch Changes
- CHANGED Return type of createMyOrderFromCart API endpoint has been adjusted, as it was incorrect
5.0.0
Major Changes
- BREAKING Updated
@vue-storefront/middlewareversion to4.1.0. Make sure this version is used in your project.
{
...
"dependencies": {
- "@vue-storefront/middleware": "3.x.x",
+ "@vue-storefront/middleware": "4.1.0"
}
}
4.0.1
Patch Changes
Update node-fetch version from "2" to "^2.6.7" to address CVE-2022-0235 Update axios to ^0.28.0 to mitigate security vulnerability CVE-2023-45857
4.0.0
Major Changes
- CHANGED return type of following endpoints from direct response
usertoresponse.user: addBillingAddress,deleteBillingAddress,addShippingAddress,deleteShippingAddress,setDefaultBillingAddress,setDefaultShippingAddress,updateBillingAddress,updateShippingAddress.
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const user = await context.$ct.api.addBillingAddress({ ... }); // same for other mentioned endpoints
+ const { user } = await sdk.commercetools.addBillingAddress({ ... }); // same for other mentioned endpoints
- CHANGED return type of
customerCreatePasswordResetTokenendpoint fromresponse.data.customerCreatePasswordResetTokentoresponse.customerCreatePasswordResetToken.
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const { data: { customerCreatePasswordResetToken } } = await context.$ct.api.customerCreatePasswordResetToken({ ... });
+ const { customerCreatePasswordResetToken } = await sdk.commercetools.customerCreatePasswordResetToken({ ... });
- CHANGED return type of following endpoints from
response.data.carttoresponse.cart: addToCart,applyCartCoupon,removeCartCoupon,removeFromCart,updateCart,updateCartItemChannel,updateCartQuantity,updateShippingDetails,createCart,deleteCart.
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const { data: cart } = await context.$ct.api.updateCart({ ... }); // same for other mentioned endpoints
+ const { cart } = await sdk.commercetools.updateCart({ ... }); // same for other mentioned endpoints
- CHANGED return type of
getCategoryendpoint fromresponse.data.categoriestoresponse.categories.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { categories } } = await context.$ct.api.getCategory({ ... });
+ const { categories } = await sdk.commerce.getCategory({ ... })
- CHANGED return type of
getInventoryendpoint fromresponse.data.inventoryEntriestoresponse.inventoryEntries.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { inventoryEntries } } = await context.$ct.api.getInventory({ ... });
+ const { inventoryEntries } = await sdk.commerce.getInventory({ ... })
- CHANGED return type of
createMyOrderFromCartendpoint fromresponse.data.ordertoresponse.order.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { order } } = await context.$ct.api.createMyOrderFromCart({ ... });
+ const { order } = await sdk.commerce.createMyOrderFromCart({ ... })
- CHANGED return type of
getMyShoppingListendpoint fromresponse.data.me.shoppingListtoresponse.me.shoppingList.
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const { data: { me: { shoppingList, shoppingLists } } } = await context.$ct.api.getMyShoppingList({ ... });
+ const { me: { shoppingList, shoppingLists } } = await sdk.commercetools.getMyShoppingList({ ... });
- CHANGED return type of following endpoints from
response.data.metoresponse.me: getMegetOrders
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { me } } = await context.$ct.api.getMe({ ... });
+ const { me } = await sdk.commerce.getMe({ ... })
- CHANGED response of following endpoints from direct
valuetoresponse.value: isGuest,isLoggedIn.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const value = await context.$ct.api.isGuest({ ... }); // or isLoggedIn
+ const { value } = await sdk.commerce.isGuest({ ... }); // or isLoggedIn
- REMOVED
getCartendpoint. UsegetMeinstead.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { cart }} = await context.$ct.api.addShippingAddress({ ... });
+ const { me: { cart } } = await sdk.commercetools.getMe({ ... });
- CHANGED return type of
getProductendpoint fromresponse.data.productstoresponse.products.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { products } } = await context.$ct.api.getProduct({ ... });
+ const { products } = await sdk.commerce.getProduct({ ... })
- CHANGED return type of following endpoints from
response.data.wishlisttoresponse.wishlist: addMultipleToMyShoppingList,createMyShoppingList,addToMyShoppingList,removeFromMyShoppingList.
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const { data: { wishlist } } = await context.$ct.api.createMyShoppingList({ ... }); // same for other mentioned endpoints
+ const { wishlist } = await sdk.commercetools.createMyShoppingList({ ... }); // same for other mentioned endpoints
- CHANGED return type of following endpoints from
response.data.usertoresponse.user: customerChangeMyPassword,customerSignMeIn,customerSignMeUp
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const { data: { user } } = await context.$ct.api.customerChangeMyPassword({ ... }); // same for other mentioned endpoints
+ const { user } = await sdk.commercetools.customerChangeMyPassword({ ... }); // same for other mentioned endpoints
- CHANGED response of
getStoresendpoint from directstorestoresponse.stores.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const stores = await context.$ct.api.getStores({ ... });
+ const { stores } = await sdk.commerce.getStores({ ... });
- CHANGED parameters and return type of
getChannelendpoint. Params has changed from{ id, customQuery }to{ id }, customQuery. Response has change fromresponse.data.channelstoresponse.channel.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { channels } } = await context.$ct.api.getChannel({ id, customQuery });
+ const { channels } = await sdk.commerce.getChannel({ id }, customQuery)
- CHANGED return type of
getShippingMethodsendpoint fromresponse.data.shippingMethodstoresponse.shippingMethods.
Example migration in Nuxt 2 Storefront with the use of SDK:
- const { data: { shippingMethods } } = await context.$ct.api.getShippingMethods({ ... });
+ const { shippingMethods } = await sdk.commerce.getShippingMethods({ ... })
- CHANGED return type of
addReviewendpoint fromresponse.data.reviewtoresponse.review.
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const { data: { review } } = await context.$ct.api.addReview({ ... });
+ const { review } = await sdk.commercetools.addReview({ ... });
- CHANGED return type of
getReviewendpoint from directresponsetoresponse.reviews.
Example migration in Nuxt 2 Storefront with the use of SDK:
// Nuxt 2 Storefront
- const reviews = await context.$ct.api.getReview({ ... });
+ const { reviews } = await sdk.commercetools.getReview({ ... });
Minor Changes
- ADDED aliases for several endpoints:
- the
customerChangeMyPasswordis now an alias forcustomerChangePasswordmethod, - the
customerSignMeInis now an alias forsignInmethod, - the
customerSignMeUpis now an alias forsignUpmethod, - the
customerSignOutis now an alias forsignOutmethod, - the
updateMyCustomeris now an alias forupdateCustomermethod - the
addReviewis now an alias foraddProductReviewmethod, - the
deleteReviewis now an alias fordeleteProductReviewmethod, - the
getReviewis now an alias forgetProductReviewmethod, - the
getCategoryis now an alias forgetCategoriesmethod, - the
getProductis now an alias forgetProductsmethod.
3.0.0
Major Changes
- CHANGED Changed minimum Node version from 16 to 18. The condition that was forcing the Node version to be lower than 19 is also removed.
Patch Changes
- Updated dependencies:
- @vsf-enterprise/commercetools-types@2.0.0
2.0.2
Patch Changes
- FIXED: Added export of the
Endpointstype because it was missing.
2.0.1
Patch Changes
- FIXED Added missing export for
CommercetoolsIntegrationContexttype
2.0.0
Major Changes
- CHANGED
EndpointsandApiMethodsinterfaces has been standarized. Previously, inEndpointsinterface, each endpoint containedcontextparam, which is internal and shouldn't be exposed in the final interface. Now,Endpointsinterface properties don't containcontextparam. Previously,ApiMethodsinterface didn't containcontextparam, but now it does. This change is made to make the interfaces more consistent with other integrations.
- import { Endpoints } from '@vsf-enterprise/commercetools-api';
+ import { ApiMethods } from '@vsf-enterprise/commercetools-api';
- CHANGED
ContextualizedEndpointstype. UseEndpointsinstead.
- import { ContextualizedEndpoints } from '@vsf-enterprise/commercetools-api';
+ import { Endpoints } from '@vsf-enterprise/commercetools-api';
- CHANGED
CommercetoolsContexthas been renamed toCommercetoolsIntegrationContext.
- import { CommercetoolsContext } from '@vsf-enterprise/commercetools-api';
+ import { CommercetoolsIntegrationContext } from '@vsf-enterprise/commercetools-api';
1.22.2
Patch Changes
- CHANGED CommercetoolsContext from type to interface to allow declaration merging.
1.22.1
Patch Changes
- FIXED Prevent getCategory method from throwing an error if Commercetools GraphQL API returns at least one GraphQL error that too many categories were fetched in one response. Now, the getCategory will just return the category data it received (with some categories missing, due to the GraphQL error) rather than receiving the response, and discarding it because there was at least one GraphQL error.
1.22.0
Minor Changes
- ADDED Methods that return/modify the address will now return/allow modifying the "salutation" field. The methods `setCart
1.21.5
Patch Changes
- CHANGED Updated @apollo/client dependency from version
^3.3.21to version3.8.7in the api-client package. Because of changes in the @apollo/client package, we had to update the @apollo/client dependency in the api-client package. For versions of integration package1.10.2upwards, you should resolve the @apollo/client dependency to version3.8.4in your project, otherwise it might stop working properly.
1.21.4
Patch Changes
- ADDED Defining the channel type for createAddLineItemAction method
1.21.3
Patch Changes
- FIXED Some products in category view were not displaying prices.
1.21.2
Patch Changes
- FIXED Restore types removed by accident
- FIXED Added missing typings for the addReview method.
1.21.1
Patch Changes
- FIXED Visibility issue with commercetools prices when defining price variants through channels.
1.21.0
Minor Changes
- ADDED possibility to send cookie-independent requests via SDK to integration's GET endpoints in order to cache their response
Patch Changes
- CHANGED Updated @vsf-enterprise/commercetools-types to 1.13.0
1.20.2
Note: This is the same change as in version 1.22.1, but backported to the 1.20.x version.
Patch Changes
- FIXED Prevent getCategory method from throwing an error if Commercetools GraphQL API returns at least one GraphQL error that too many categories were fetched in one response. Now, the getCategory will just return the category data it received (with some categories missing, due to the GraphQL error) rather than receiving the response, and discarding it because there was at least one GraphQL error.
1.20.1
Patch Changes
- ADDED Customer Fragment: Incorporated a new 'salutation' field to better structure customer data. This enhancement facilitates more personalized interactions when querying customer details.
1.20.0
Minor Changes
- CHANGED Updated
@vue-storefront/middlewareto^3.5.0which introduces support for HTTP GET requests.
1.19.2
Patch Changes
- ADDED Allow importing cookie-related constants from the package
1.19.1
Patch Changes
- FIXED Fix circular dependencies within the package
1.19.0
Minor Changes
- ADDED Add support for Node 18: >= 16 && < 19
1.18.0
Minor Changes
- CHANGED Deprecated
SetupContext, context is now available onCommercetoolsContext
1.17.0
Minor Changes
- CHANGED Updated middleware to the latest version
Patch Changes
- FIXED Fixed incorrect context type
1.16.0
Minor Changes
- CHANGED Updated middleware to the latest version
1.15.0
Minor Changes
- ADDED
getStoresapi-client endpoint is now filterable - ADDED Added getStores method
Patch Changes
- CHANGED Updated
@vsf-enterprise/commercetools-typesto 1.12.0
1.14.0
Minor Changes
- ADDED Support for customer group's prices in each endpoint
1.13.0
Minor Changes
- ADDED We've added a middleware config property that forces recreation of the client for each request
Patch Changes
- CHANGED Disabled queryDeduplication in ApolloClient to prevent mixing responses when sharing its single instance between requests
1.12.0
- BREAKING In the response types of the
getFacetmethod, we've changed the type of the fieldsrootCategoryandcurrentCategorytoCategory. Previously the type of those fields was set toanyby mistake.import { sdk } from "~/sdk.config.ts"; const { rootCategory, currentCategory } = await sdk.getFacet({ categorySlug: "men", }); console.log(rootCategory?.name, currentCategory?.name); - ADDED Add new feature to fetch
attributeDefinitionsfor localized filter labels togetFacetProductProjectionAPI method (composables only)import { useFacet } from "@vsf-enterprise/commercetools"; import { defineComponent } from "@nuxtjs/composition-api"; export default defineComponent({ name: "MyComponent", setup() { const { search, result } = useFacet("relatedProducts"); search().then(() => { console.log(result.value.data.attributeDefinitions) }); } } - ADDED Add
SignInParamstype alias This aligns the name with the already existingSignUpParamsimport { SignInParams, SignUpParams } from "@vsf-enterprise/commercetools";
Migration guide
This migration guide describes how to migrate to @vsf-enterprise/commercetools@1.12.0.
Run the following command in your repository root, where the package.json file is located: yarn add @vsf-enterprise/commercetools@1.12.0
Remember that the type of rootCategory and currentCategory fields is now Category | null, and not any anymore.
Ensure that you get no TypeScript compilation errors in the files where getFacet is used and the rootCategory and currentCategory fields are used.
const someFunction = (category: Category) => {}
const { rootCategory, currentCategory } = await sdk.getFacet({ categorySlug: 'men' });
- someFunction(rootCategory);
- someFunction(currentCategory);
+ someFunction(rootCategory!);
+ someFunction(currentCategory!);
1.11.1
- FIXED We've added the missing
countproperty in thecategoriesofgetFacetendpoint responseconst facet = await sdk.commerce.getFacet({ categorySlug: "men" }); console.log(facet.categories[0].count); // before this update, accessing .count would result in TypeScript compilation error
Migration Guide
This migration guide describes how to migrate to @vsf-enterprise/commercetools@1.11.1.
Run the following command in your repository root, where the package.json file is located:
yarn add @vsf-enterprise/commercetools@1.11.1
1.11.0
As of version 1.11.0 of the @vsf-enterprise/commercetools-api integration, the recommended way of communicating with the middleware (where the integration runs) is through the Alokai SDK.
For Alokai, the SDK is the way forward. It's where the newest features will be developed and access to new Commercetools endpoints will be added. Composables on the other hand, will receive only critical fixes.
For an extensive overview of your migration options, please see the migration guide
Changes
- ADDED Ensured compatibility with the
@vsf-enterprisecommercetools-sdkpackage, in addition to the already existing@vsf-enterprise/commercetoolscomposable package. - ADDED
getFacetAPI endpoint
Consuming this endpoint is only possible through the SDK or by a raw request to the middleware. There is no equivalent in composables.
See the example usage of the associated getFacet method in the Alokai Commercetools SDK below:import { sdk } from "~/sdk.config.ts"; const { categories } = await sdk.getFacet({ categorySlug: "men" }); - ADDED
deleteReviewAPI endpoint
Consuming this endpoint is only possible through the SDK or by a raw request to the middleware. There is no equivalent in composables.
See the example usage of the associated deleteProductReview method in the Alokai Commercetools SDK:import { sdk } from "~/sdk.config.ts"; const { review } = await sdk.commerce.deleteProductReview({ id: "c9e9a3c8-547f-4bc0-907d-4805423e803b", version: 1, }); - REMOVED There is no longer a dependency on the
@vue-storefront/corepackage, because the SDK is framework agnostic and does not depend on Nuxt modules. - ADDED There is a new dependency on the
@vue-storefront/middleware@^3.0.0package.
Most importantly, it provides theapiClientFactoryfunction. It defines the plugin interface for how all integrations register themselves with the middleware. This Commercetools integration also needs to adhere to this interface.
1.10.0
- ADDED Added separated middleware support for multiple domains
- CHANGED Updated
@vue-storefront/coreand related Nuxt modules to packages in v2.7.5
1.9.0
- CHANGED init function and token flow improvement
- CHANGED Upgrade
@vsf-enterprise/middlewareto 2.7.2
1.8.5
- ADDED Allow using separated middleware with multiple domains
- CHANGED Return raw response when using customQuery in
useProductcomposable
1.8.4
- ADDED Allow passing custom query to
customerUpdateMe - CHANGED Improve Time To First Byte (TTFB) in benchmarks by reducing API response size
- CHANGED Revert
initfunction to previous version - FIXED Cart is no longer cleared when choosing store in shipping step
- FIXED Add missing key back to
getFacetCategories - FIXED Fixed links to products in order history
- FIXED Unable to place an order with an invalid coupon
- FIXED Handle cart discount invalid state
1.8.3
- ADDED Added
customFiltersoption touseProductcomposable insearchmethod - ADDED Added option to reload cart
- ADDED
initfunction for middleware - FIXED Product page SSR error
- FIXED "State" and "Province" fields in My Account page cover one another
- FIXED
getCategorieshardcoded limit param
1.8.2
- ADDED Separated middleware initialization
- ADDED Prevent out of stock purchase for
Click&Collect - ADDED Added empty cart page
- ADDED Reduced size of product page
- ADDED Language change without full page reload
- ADDED Added method
getCategorySlugsforproductGetters - FIXED Replaced
SfHerocarousel withSfBanneron homepage - FIXED Divided sections on shipping and billing pages
- FIXED Disappearing padding in
StoreLocatorcomponent - FIXED
clickOutsidedirective from SFUI - FIXED Title from
SfMegaMenuColumninSearchResultsis not clickable anymore - FIXED Unified order summary on desktop view
- FIXED Redirect to
404page on PDP when error occurs - FIXED Alignment of products on category page
1.8.1
- ADDED Saved checkout steps
- ADDED Unifying Click&Collect behavior - Storelocator page removal
- ADDED Remove all items from the cart
- ADDED Added login button in checkout
- ADDED Added loaders for product cards
- ADDED Added pagination for reviews on PDP
- FIXED Removed redundant aria-label from buttons / CLS on PLP
- FIXED Duplicated products in the cart
- FIXED Fixed adding promo code on payment step
- FIXED Fix redirect on checkout
- FIXED Unable to enter my account page
- FIXED Bottom navigation overlapping lang modal
- FIXED Payment method "cash on delivery" is cached after one purchase
1.8.0
- ADDED Seo improvements
- ADDED Add new checkout step - customer email
- ADDED Middleware separation
- ADDED Support for screen reader
- ADDED Added empty states
- ADDED Add linking to products in cart sidebar
- CHANGED Hide categories when it not contains any products
- CHANGED Links renamed
- CHANGED Update SFUI to 0.13.2
- CHANGED Change functional anchors to buttons
- CHANGED Node version bump, LTS
- CHANGED Bundle size optimization
- FIXED Adding and editing addresses in my account
- FIXED Breadcrumbs linking
- FIXED Edit button in payment does not work
- FIXED Wrong language icon
- FIXED Add custom ClientSideOnly component
- FIXED Use client-only instead isMounted
- FIXED Bug with
customQueryinuseUser.register - FIXED Search results cannot be closed
- FIXED Hide categories when it not contains any products
- FIXED Fixed
storelocatorbadge position - FIXED Lang files missing comma
- FIXED Pass custom query on to original api method
1.7.4
Bug Fixes
- add missing key back to
getFacetCategories - fixed images not showing on product list pages
Features
- custom query for
customerUpdateMe
1.7.3
Please note that these changes are available in version 1.8.3
Bug Fixes
getCategorieshardcoded limit param- added option
customFiltersforuseProductcomposable insearchmethod
1.7.2
Bug Fixes
- added missing store locator icon on mobile devices
- add option to overwrite
enhanceProductfunction - calculating shipping price with discount
- removed unnecessary checkbox on register screen
Features
- filter products by channel
getCartapi method is now deprecated- added
http-cachemodule
1.7.1
This version is now deprecated. Please use 1.7.2 instead.
Bug Fixes
- state dropdown is no longer shown when not needed
Features
- added support for custom field in
setShippingAddressActionandsetBillingAddressAction - added extra parameter for
addReviewandgetReviewinuseReviewcomposable - where - additional field in customer update api call - date of birth
- added form for submitting review
1.7.0
Bug Fixes
- added missing styles for
sf-store - PLP filters are removed on page reload
- selecting billing address redirects to the home page
- remove setting variable based on header's value
- missing app object for Category page
- pass
customQuerytouseFacet - thank you page
addBasePathFiltererror - unable to change language after store change
- wishlist import
Features
- upgrade SFUI in the theme
- add store configuration from
nuxt.config.js - add ui notification system
- store-locator design on channel change
- export composables helpers
- add
nuxt-imagemodule - remove mobile observer
- set modern=client mode
- click and collect shipping method
- add change method to
useChannel - add
agentkeepalive - update types
1.6.1
Bug Fixes
- change docker namespace
- security: added secure flag for token cookie
Features
- cache control module - remove cache from theme
- add
customQueryforgetCart - export composables helpers
- native API error handling
1.6.0
Bug Fixes
tokenProvider.invalidateTokenInfo() is not a functionerror- add missing env example for Multistore
- redis environment variables names collision
- use
localeparam instead ofacceptLanguagefor faceting api functions - fixes broken usage of
customQueryinuseProductcomposable - fix HTML missmatch onSSR for Home.vue
- add
languageMapconfiguration for facet accepted language - fixed logo not loading while page refresh
- fixed vue warn due to invalid component name
- removing
mockedSearchProducts - fix double mounting carousel component
- wishlist not being fetched nor refreshed upon login and logout actions
- breadcrumbs mismatch url
- added missing type for
ProductsSearchParams - remove deprecation warning for mode universal
- handle error after
createMyOrderFromCartrequest - nuxt module declaration
- possibility to add products to the cart/wishlist from related
- update deprecated
apollo-linkandapollo-client - error while deleting shipping addresses
- search results add to cart wishlist
Features
- billing and shipping address not present in checkout
- add composable to get all languages information
- get project settings
- upgrading from
nuxt-i18ntonuxtjs/i18n - added
priceTransformhelper - add base path in templates
- added
StoreLocatorcomponent - add channels api and composable
- add
useInventory - multistore feature flag
- add
SameSitecookie attribute - backport composables from enterprise packages
- performance improvements
- remove unnecessary css
- add multiple filtering strategy for faceting
- dockerfile update
- useFacet integration inside Home.vue
- optimise footer social icons
- switching currency
- add missing static translations within app via
vue-i18n
Please refer to the migration guide for more information.
1.5.0
Bug Fixes
- add wishlist build fix
- removing hardcoded categories from HeaderNavigation
- fixed issues with adding/removing products to/from wishlist
- fixed doubled review types export
- fixed navigate to MyAccount page
- fixed wishlist product prices
- fixed handleAfterAuth method for customToken
- bump SFUI version that fixes memory leak
- fix for ancestors on PDP page over SSR and fix for docs
- update use cart method for newer one
- added usage of FiltersSidebar component
- fixed issue related with building valid query
tokenProvider.invalidateTokenInfo() is not a functionerror- update deprecated apollo-link and apollo-client
- fixes broken usage of customQuery in useProduct composable
- handle error after createMyOrderFromCart request
- possibility to add products to the cart/wishlist from related
Features
- coupon codes display & removal (0e689b1)
- created product breadcrumbs getter (7260c18)
- moved packages from enterprise packages (223e649)
- changed faceting from rest to qraphql (#36) (3eefa3c)
- use cache mechanism with Redis driver (#29) (6343e66)
- create template for commercetools integration (#8) (b399f55)
- refactor of composables (#34) (e5af219)
- fetch categories with product data (8d0cd0f)
- preserve categories in enhanced product (1c977aa)
- useFacet integration inside Home.vue (1e8fd721)
- add SameSite cookie attribute (9a1f71f0)
BREAKING CHANGES
- faceting no longer uses REST API but GraphQL API instead
- changed organization's name under which we release the commercetools integration from
@vue-storefrontto@vsf-enterprise
Please refer to the migration guide for more information.
1.4.1
- Fixed handleAfterAuth method to handle customToken scenario correctly (6533)
1.4.0
- Fix UI for Click and Collect (6276)
- BREAKING Refactor token handling (6329)
- Fix bug with wrong version UI and resolve problems with parse negative number for css calc method(after upgrading SFUI to 0.11.0-rc.1) (6354)
- Added server access token (6365)
- Add @nuxtjs/google-fonts to improve performance (6374)
- use extractCSS rule in build to make the bundle smaller (6375) - Baroshem
- BREAKING Update GraphQL API types (6410)
Before After Comment Module Shipping address could contain contactInfoobject withphone,mobile,emailandtaxpropertiesphone,mobile,emailandtaxproperties should be used directly on the address object, not nested in thecontactInfoobjectIn the past, the application logged a warning when contactInfowas present on the address object. Now we are deprecating it to match commercetools API@vue-storefront/commercetools-api - Prevent cookie creation during SSR (6442)
Before After Comment Module Cookies for currency, locale and country were included in SSR response Cookies for currency, locale and country are generated on client side To prevent generating cookies during SSR (server-side rendering) and allowing caching, change in the nuxt.config.jsfile is required. Inside thei18nconfiguration, you should set thedetectBrowserLanguageoptions tofalse. Then change the order of loaded modules. In thebuildModulesconfiguration, move the@vue-storefront/commercetools/nuxtmodule before@vue-storefront/nuxt. Lastly, update the Vue components used to switch locales to use thenuxt-linkcomponent instead of theatag. By default it's located in theStoreLocaleSelector.vuefile.core - BREAKING Update Composition API to 1.2.4 (6452)
Before After Comment Module Composition API module was registered internally by Vue Storefront modules Composition API module must be registered inside projects Please refer to the migration guide for more information Theme
1.3.6
- Fixed close button placement (StoreLocaleSelector) . (6202)
- Fixed redirect to localized My Account page. (6474)
1.3.3
- Overwrite
CategoryPageHeadercomponent and remove filters from OS (5684) - Fix bug with raising exception when visiting /checkout/payment page directly from url (5983)
- Implemented pagination for orders history (6032)
- Enable payment summary section for desktop view (6104)
- Fix error thrown by the
searchmethod inuseProductcomposable when searching by product SKUs (6181) - Fix no property error in changePassword function in useUser composable (6231)
- Updated SFUI (6240)
- Fix missing addresses data in order summary (6282)
- pass cookies obj with cookie names to mapI18nSettings (6296)
- Improve A11Y in Core Web Vitals (6304)
- Improve SEO Core Web Vitals (6306)
- Make VSF PWA again (6307)
- Fix bug with redirect to home page after successful order placement (6309)
- Fix for unsuccessful login or register message (6311)
- getProduct custom query - productType doesnt get mapped to product response in enhanceProduct helper (6347)
- Fix bug with wrong version UI and resolve problems with parse negative number for css calc method(after upgrading SFUI to 0.11.0-rc.1) (6354)
- Fix
Insufficient scopeerror when resetting customer's password (6403_1) - Allow defining custom GraphQL operations that will be called with server API client (6403_2)
- include a copy of the product object in productResponse returned by the enhanceProduct helper (6405)
1.3.2
- BREAKING Fix loading user and cart
information (6265)
Before After Comment Module loadUserwas called directly insidesetupmethod inCartSidebar.vuecomponentloadUseris called insideonSSRcallback inCartSidebar.vuecomponentCalling loadUserdirectly insidesetupmethod caused hydration issues, since cart information was not properly loaded during SSR. Additionally cart will now be automatically updated after callingloadfrom theuseUsercomposable, the same way as it happens when callinglogIn,logOutandregister.commercetools theme - Add server-specific API client (6321)
1.3.1
- Revert changes to Webpack configuration and Google font loading (#6203)
1.3.0
- BREAKING Enable the purchase of item with selected supply channel and distribution
channel (#6161)
Before After Comment Module the addToCart method has the signature addToCart ({ id, version }: CartDetails, product: ProductVariant, quantity: number): Promise<CartResponse>; now the addToCart method was change to enable the supply and distribution channels with the signature addToCart ({ id, version }: CartDetails, params: { product: ProductVariant; quantity: number; supplyChannel?: string; distributionChannel?: string;}): Promise<CartResponse>; The composable was changed to match this signature. The changes from Click & Collect / MultiStore are required to use this feature on Product.vue api-client - Added missing mobile menu to CT (#6184)
- Added customQuery support for useUser factory params (#5883) - vn-vlad
- Fix locale links in core and commercetools integration (#5886)
- Remove SSR from personalized elements (#5925)
- Add "useStore" implementation and plugin for creating locale, currency and country cookies (#5945) - vn-vlad
- Add forgot password functionality (#5968)
- Click "Add New Address" button on the Checkout does not submit the form (#5994)
- Remove
generatecommand frompackage.json(#6035) - Refactor updateCart, fix retry logic in case of mismatch of cart (#6050)
- BREAKING refactor(commercetools): fix the frontend client bundling the commercetools-sdk and apollo
client (#6066) - bloodf
Before After Comment Module the "createCommerceToolsConnection" were being exported by the api-client the "createCommerceToolsConnection" is not being exported anymore to use the current connection, you will need to access the context to call the API api-client - Linked banner grids buttons on homepage (#6070)
- Replace mocked email address in MyProfile password change tab to active user email (#6079)
- Removed hardcoded link to category in SearchResults.vue (#6081)
- Added new product getter
getProductSku(#6107) - Smartphone only promo code input added (#6112)
- Updates form validation scheme for street, number and city in the checkout and profile editing pages (#6122)
- BREAKING updated the removeCoupon interface to match the
applyCoupon (#6126)
Before After Comment Module the useCart composable method removeCoupon was using this call signature: ({ coupon: COUPON, customQuery?: CustomQuery }) the method signature was changed to: ({ couponCode: string, customQuery?: CustomQuery }) on each removeCoupon composable usage need to change the "coupon" to "couponCode" composables - Add new getter for orders total and change return value of searchOrders (#6132)
- Phone number validation via awesome-phonenumber (#5951)
1.2.3
- Use cookies to read information about i18n (#5919)
- Resetting commercetools token when clearing user session (#5920)
- Fix calculation of cart totals (#5932)
1.2.2
1.2.1
- Add args parameter to custom queries (#5854)
- Export factory params for all composables to allow overriding (#5862)
- Export helper Apollo Link functions for easier overriding (#5873)
1.2.0
- Set 'vsf-commercetools-token' cookie expiration time to match token expiration time. (#5774)
- Reduce payload size for cart methods (#5836)
1.2.0-rc.3
- Fix getters in
cartGettersto not throw errors when some properties don't exist (#5699) - Fixed mapping for product attributes with
type
set(#5708) - Fixed CT wishlist throwing CAPI error (#5716)
1.2.0-rc.2
- Adjust Checkout UI (#5343)
- BREAKING Usage of api middleware (#5361)
Before After Comment Module one entrypoint multiple entrypoints We expose multiple entrypoints for server and client side interaction commercetools - New part of checkout - shipping details, inside core and commercetools (#5419)
- Added
is-authenticatedmiddleware to protect user profile routes from guest access (#5442) - Improvements for api middleware (#5500)
- BREAKING New part of checkout - Billing details, inside core and
commercetools (#5552)
Before After Comment Module UserBillingAddress works properly New API inside Checkout/UserBillingAddress.vue Customized components to work with new checkout commercetools-theme - BREAKING Quick search (#5566)
Before After Comment Module { changeSearchTerm } = useUiHelpers() { setTermForUrl } = useUiHelpers(); Changed changeSearchTerm name to setTermForUrl useUiHelpers/index.ts, { getSearchTermFromUrl } = useUiHelpers(); Created new function useUiHelpers/index.ts - BREAKING Implementation of api middleware (#5577)
| Before | After | Comment | Module |
|---|---|---|---|
| customQuery was used as a function | customQuery is a key-value object | The key is a query name, value is the name of a new query function, defined in the middleware config | commercetools |
- BREAKING New Payment API for Checkout (#5587)
Before After Comment Module Dedicated composable for whole checkout Dedicated composable for Shipping, Billing and Provider components undefined commercetools - State as a select field at both Checkout and MyAccount (shipping & billing). Support for freeAbove in shipping methods (#5628) - Fifciu
1.1.7
- fixed error with login to the account (#5613)
1.1.6
- fix register function from CT useUser composable allows user to log in #5613
1.1.5
- remove deprecated field
descriptionfrom shipping methods query #5614
1.1.6
- fix register function from CT useUser composable allows user to log in #5613
1.1.5
- remove deprecated field
descriptionfrom shipping methods query #5614
1.1.3
- cover errors in re-try apollo-link that are not comming from graphql (#5548)
1.1.2
- moved from using
attributesListtoattributesRaw - add 'once' to prevent font reload on each reactivity event (#5513)
1.1.1
- fixed
vue-lazy-hydrationdependency innuxt-theme-module(#5406)
1.1.0
- fix getOrders api (#5328)
- added bottom margin to fix visibility of last footer category (#5253)
- BREAKING refactored names of many factory methods and composable methods, details in linked PR (#5299)
- BREAKING changed signatures of factory methods to always 2 arguments, details in linked PR (#5299)
- BREAKING removed
totalOrdersandtotalProducts(#5330) - removed
formatPricefromuseUiHelpers, replaced by vue18n$nfunction (#5339) - added missing
i18ntags (#5337) - use updated factories
useUserBillingFactory,useUserShippingFactoryanduseWishlistFactory(5350) - use updated factories
useUserBillingFactory,useUserShippingFactoryanduseWishlistFactory(5350) - fix selecting country on checkout payment and shipping (5386)
createMyShoppingListas a restricted anonymous operation
1.0.1-rc.1
- updated version of core
1.0.0-rc.1
- removed
availableFiltersandavailableSortingOptionsfromuseProduct(#4856) - removed
@import "~@storefront-ui/vue/styles";from all components, because SFUI variables and mixins are now available globally and imports will drastically increase bundle size (#5195) - enabled "modern mode" in
yarn buildcommand (#5203) - added missing order getter to get item price (#5231)
- retry updating the cart with new version if previous request failed due to a version mismatch (#5264)
- removed logging level from nuxt.config.js to use defaults from core (#5304)
- fixed broken focus in login form (#5273)
- fixed select for changing variant on product page (#5281)
- added token re-try strategy (#5295)
- added discounts api getter (#5154)
- added context implementation (#5218)
- added context typings (5290)
0.2.6
- fix errors throw by some product getters (#5089)
- The address
contactInfofield is deprecated in the CT api. We have added support for the contact information fields directly in the address and will now show a warning when deprecated field is used (#5083) - removed
chosenShippingMethoddefaulting (#5073) - fix
useCheckout- set loading fields to false when api-client throws (#5096)
0.2.5
customQueryfor checkout composables (#5025)- api-client apollo client no longer shared between requests (#5056)
0.2.4
- Remove defaulting for checkout shipping details (#5026)
Changes
- added
getTotalReviewsandgetAverageRatingtoproductGetters(#4958) - added '_rating' back to the product (#4958)
- added mock for user shipping addresses in MyShippingDetails and Checkout's Shipping (#4841)
0.2.3
Changes
- adding ability to overriding
isTokenUserSessioncheck in api-client (#4959)
0.2.2
Breaking changes
- removed '_rating' from product (#4906)
Changes
- Fix types for CT api-client and composables packages (#4924)
- fixed updateUser on useUser composable (#4863)
- implemented useReviews on product page (#4800)
- implemented faceting using useFacet factory (#4853)
- fixed anonymous token loading (#4917)
- fixed bugs related to customQuery (#4933 , #4913)
0.1.0
- refactored setup using apiClientFactory (#4777)