Vue Storefront is now Alokai! Learn More
Change Log

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

3.0.0

This is the last version of the package that will be released as we decided deliver framework agnostic SDK instead of composables as a black box. This release adjusts composables to the newest version of @vsf-enterprise/commercetools-api package (5.0.1), exposes it's source code, and encourages you to move it inside your project. So you will be able to maintain it on your own.

Before you start, make sure you've already migrated to version ^2 of @vsf-enterprise/commercetools by following Update path 2 from this guide.

migration guide

  • update @vsf-enterprise/commercetools package to the 3.0.0 version,
yarn add @vsf-enterprise/commercetools@3.0.0
  • update @vue-storefront/middleware package to the 4.3.1 version,
yarn add @vue-storefront/middleware@4.3.1
  • copy composables to your Nuxt project using prepared by us script:
node node_modules/@vsf-enterprise/commercetools/copy-composables.js
  • adjust import paths from @vsf-enterprise/commercetools to the ~/composables/legacy everywhere in your project - we recommend using Search and Replace feature of your IDE. Be careful, to not accidentally replace imports from @vsf-enterprise/commercetools-api. The only one exception is useRawSources in nuxt.config.js, here we still need @vsf-enterprise/commercetools in both arrays:
// nuxt.config.js
// ...
[
  '@vue-storefront/nuxt',
    {
      useRawSource: {
        dev: ['@vue-storefront/core', '@vsf-enterprise/commercetools'],
        prod: ['@vue-storefront/core', '@vsf-enterprise/commercetools']
      }
    }
  ]
  • adjust nuxt.config.js by adding @vsf-enterprise/commercetools-api to build.transpile array.
export default {
  build: {
    // ...
    transpile: ['@glidejs/glide', '@vsf-enterprise/commercetools-api']
  }
}
  • adjust middleware/is-authenticated.js:
- const isLoggedIn = await $vsf.$ct.api.isLoggedIn();
+ const isLoggedIn = (await $vsf.$ct.api.isLoggedIn()).value;
  • adjust middleware/checkout.js:
- const isLoggedIn = await $vsf.$ct.api.isLoggedIn();
+ const isLoggedIn = (await $vsf.$ct.api.isLoggedIn()).value;
// ...
- const { data } = await $ct.api.getMe();
+ const data = await $ct.api.getMe();
  • adjust components/Checkout/VsfShippingProvider.vue:
- return shippingMethodsResponse.data;
+ return shippingMethodsResponse;
  • follow changelog of @vsf-enterprise/commercetools-api to adjust your application for version 5.0.1,
  • if you are using any function from context.$vsf.$ct.api object directly, adjust your codebase to match new response interfaces mentioned in steps above (isLoggedIn, getMe endpoints) and commercetools-api's changelog.

2.0.3

Bug Fixes

  • cutting response from useStore composable ES-284

2.0.2

Bug Fixes

  • missing supplyChannel and distributionChannel handling for the useCart

2.0.1

Bug Fixes

  • correct typings for the useReview composable

2.0.0

Features

  • add node 18 support
  • updated "@vue-storefront/core": 2.7.4 -> ^2.8.0
  • updated "@vsf-enterprise/commercetools-api": ^1.12.0 -> ^1.19.0

Breaking Changes

CustomQuery type

  • CustomQuery type is now imported from @vue-storefront/commercetools-api instead of @vue-storefront/core

useStores composable

  • useStores composable interface has changed

migration guide

  • If you are using the useStores composable, you need to update the load method call to pass the params as an array instead of an object. Also, the customQuery parameter is no longer accepted.
  • Response type of the load method has changed. If you are using the response type, you need to update it to match the new type.

1.12.0

This release bumps the @vsf-enterprise/commercetools-api dependency from ^1.11.0 to ^1.12.

1.11.1

Bug Fixes

  • Fix an issue where the filters?: field of the ProductSearchParams interface was wrongly typed as Record<string, Filter>. It is now correctly typed filters?: Filter[].

1.11.0

This release bumps the @vsf-enterprise/commercetools-types and @vsf-enterprise/commercetools-api dependencies from ^1.10.0 to ^1.11.0.

1.10.0 (2022-12-27)

Bug Fixes

  • remove dead code (7a4e39e)
  • update core package 2.7.2 -> 2.7.4 (053e6bb)

Features

1.9.0

Features

  • feat!: init function and token flow improvement
  • chore: upgrade middleware 2.7.1 -> 2.7.2

1.8.5 (2022-11-03)

Bug Fixes

  • allow using separated middleware with multiple domains
  • return raw response when using customQuery in useProduct composable

1.8.4 (2022-08-26)

Bug Fixes

  • cart is no longer cleared when choosing store in shipping step
  • add missing key back to getFacetCategories
  • fixed links to products in order history
  • unable to place an order with an invalid coupon

Features

  • handle cart discount invalid state
  • improve TTFB by reducing api response size
  • custom query for customerUpdateMe

Reverts

  • init function

1.8.3 (2022-08-11)

Bug Fixes

  • added option to reload cart
  • product page ssr error
  • state/province in my account is covered with one of it
  • getCategories hardcoded limit param
  • added option customFilters for useProduct composable in search method

Features

  • implementing init function for middleware

1.8.2 (2022-07-25)

Bug Fixes

  • replaced SfHero carousel with SfBanner on homepage
  • divided sections on shipping and billing pages
  • fixed disappearing padding in StoreLocator component
  • added clickOutside directive from SFUI
  • title from SfMegaMenuColumn in SearchResults is not clickable anymore
  • unified order summary on desktop view
  • redirect to 404 page on PDP when error occurs
  • fixed alignment of products on category page

Features

  • separated middleware initialization
  • prevent out of stock purchase for Click&Collect
  • added empty cart page
  • reduced size of product page
  • language change without full page reload
  • added method getCategorySlugs for productGetters

1.8.1 (2022-07-11)

Bug Fixes

  • removed redundant aria-label from buttons / CLS on PLP
  • duplicated products in the cart
  • fixed adding promo code on payment step
  • fix redirect on checkout
  • unable to enter my account page
  • bottom navigation overlapping lang modal
  • payment method "cash on delivery" is cached after one purchase

Features

  • saved checkout steps
  • unifying Click&Collect behavior - Storelocator page removal
  • remove all items from the cart
  • added login button in checkout
  • added loaders for product cards
  • added pagination for reviews on PDP

1.8.0 (2022-06-29)

Bug Fixes

  • adding and editing addresses in my account
  • breadcrumbs linking
  • edit button in payment does not work
  • wrong language icon
  • add custom ClientSideOnly component
  • use client-only instead isMounted
  • bug with customQuery in useUser.register
  • search results cannot be closed
  • hide categories when it not contains any products
  • fixed storelocator badge position
  • lang files missing comma
  • pass custom query on to original api method

Features

  • change functional anchors to buttons
  • seo improvements
  • bundle size optimization
  • add new checkout step - customer email
  • middleware separation
  • node version bump, LTS
  • support for screen reader
  • added empty states
  • add linking to products in cart sidebar
  • hide categories when it not contains any products
  • links renamed
  • update SFUI to 0.13.2

1.7.4 (2022-08-26)

Bug Fixes

  • add missing key back to getFacetCategories
  • fixed images not showing on product list pages

Features

  • custom query for customerUpdateMe

1.7.3 (2022-08-05)

Please note that these changes are available in version 1.8.3

Bug Fixes

  • getCategories hardcoded limit param
  • added option customFilters for useProduct composable in search method

1.7.2 (2022-05-24)

Bug Fixes

  • added missing store locator icon on mobile devices
  • add option to overwrite enhanceProduct function
  • calculating shipping price with discount
  • removed unnecessary checkbox on register screen

Features

  • filter products by channel
  • getCart api method is now deprecated
  • added http-cache module

1.7.1 (2022-04-26)

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 setShippingAddressAction and setBillingAddressAction
  • added extra parameter for addReview and getReview in useReview composable - where
  • additional field in customer update api call - date of birth
  • added form for submitting review

1.7.0 (2022-04-20)

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 customQuery to useFacet
  • thank you page addBasePathFilter error
  • 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-image module
  • remove mobile observer
  • set modern=client mode
  • click and collect shipping method
  • add change method to useChannel
  • add agentkeepalive
  • update types

1.6.1 (2022-03-24)

Bug Fixes

  • change docker namespace
  • security: added secure flag for token cookie

Features

  • cache control module - remove cache from theme
  • add customQuery for getCart
  • export composables helpers
  • native API error handling

1.6.0 (2022-02-18)

Bug Fixes

  • tokenProvider.invalidateTokenInfo() is not a function error
  • add missing env example for Multistore
  • redis environment variables names collision
  • use locale param instead of acceptLanguage for faceting api functions
  • fixes broken usage of customQuery in useProduct composable
  • fix HTML missmatch onSSR for Home.vue
  • add languageMap configuration 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 createMyOrderFromCart request
  • nuxt module declaration
  • possibility to add products to the cart/wishlist from related
  • update deprecated apollo-link and apollo-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-i18n to nuxtjs/i18n
  • added priceTransform helper
  • add base path in templates
  • added StoreLocator component
  • add channels api and composable
  • add useInventory
  • multistore feature flag
  • add SameSite cookie 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 function error
  • 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-storefront to @vsf-enterprise

Please refer to the migration guide for more information.

1.4.1

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 contactInfo object with phone, mobile, email and tax properties | phone, mobile, email and tax properties should be used directly on the address object, not nested in the contactInfo object | In the past, the application logged a warning when contactInfo was 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.js file is required. Inside the i18n configuration, you should set the detectBrowserLanguage options to false. Then change the order of loaded modules. In the buildModules configuration, move the @vue-storefront/commercetools/nuxt module before @vue-storefront/nuxt. Lastly, update the Vue components used to switch locales to use the nuxt-link component instead of the a tag. By default it's located in the StoreLocaleSelector.vue file. | 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

1.3.3

1.3.2

  • BREAKING Fix loading user and cart information (6265)
    | Before | After | Comment | Module | | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | | loadUser was called directly inside setup method in CartSidebar.vue component | loadUser is called inside onSSR callback in CartSidebar.vue component | Calling loadUser directly inside setup method caused hydration issues, since cart information was not properly loaded during SSR. Additionally cart will now be automatically updated after calling load from the useUser composable, the same way as it happens when calling logIn, logOut and register. | 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 generate command from package.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

1.2.2

1.2.1

1.2.0

1.2.0-rc.3

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-authenticated middleware 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)
BeforeAfterCommentModule
customQuery was used as a functioncustomQuery is a key-value objectThe key is a query name, value is the name of a new query function, defined in the middleware configcommercetools
  • 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 description from 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 description from 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 attributesList to attributesRaw
  • add 'once' to prevent font reload on each reactivity event (#5513)

1.1.1

  • fixed vue-lazy-hydration dependency in nuxt-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 totalOrders and totalProducts (#5330)
  • removed formatPrice from useUiHelpers, replaced by vue18n $n function (#5339)
  • added missing i18n tags (#5337)
  • use updated factories useUserBillingFactory, useUserShippingFactory and useWishlistFactory (5350)
  • use updated factories useUserBillingFactory, useUserShippingFactory and useWishlistFactory (5350)
  • fix selecting country on checkout payment and shipping (5386)
  • createMyShoppingList as a restricted anonymous operation

1.0.1-rc.1

  • updated version of core

1.0.0-rc.1

  • removed availableFilters and availableSortingOptions from useProduct (#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 build command (#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 contactInfo field 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 chosenShippingMethod defaulting (#5073)
  • fix useCheckout - set loading fields to false when api-client throws (#5096)

0.2.5

  • customQuery for 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 getTotalReviews and getAverageRating to productGetters (#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 isTokenUserSession check 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)