graphcommerce

GraphCommerce® is a headless storefront replacement for Magento 2 (PWA), that delivers a faster, better user experience. Fully customizable (React, Next.js) and open-source.

OTHER License

Downloads
271.1K
Stars
303
Committers
37

Bot releases are visible (Hide)

graphcommerce - February 19, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2206 646db64 - Solves an issue where the billing address of a logged in customer would not set set when a shipping address was already set
    (@paales)

@graphcommerce/[email protected]

Patch Changes

graphcommerce - February 19, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2205 eb14696 - <WaitForQueries/> will default to loading, restoring the previous behavior. This might introduce , this might introduce an additional spinner but prevents a flash where it is shown that there is no cart
    (@paales)

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

  • #2205 d67c89d - Deprecate the allowUrl option for useCartQuery, it was already enabled by default and should never be set to false.
    (@paales)

  • #2205 3fbf3da - Solve an issue where the user would be presented with the Session expired dialog when the user would be logging in during the checkout process.
    (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2205 d67c89d - Deprecate the allowUrl option for useCartQuery, it was already enabled by default and should never be set to false.
    (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2205 3fbf3da - Solve an issue where the user would be presented with the Session expired dialog when the user would be logging in during the checkout process.
    (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2205 d67c89d - Deprecate the allowUrl option for useCartQuery, it was already enabled by default and should never be set to false.
    (@paales)
graphcommerce - February 16, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

  • #2207 4d7594c - After changing the default shipping or billing address in the account section other address would not properly update
    (@paales)
graphcommerce - February 16, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2208 3228ba8 - Images are not spread anymore but instead are contained within the borders of the image container.
    (@Jessevdpoel)
graphcommerce - GraphCommerce 8.0.2

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

  • #2197 044331c - Revert: Change sorting for customer orders in Descending Created at order
    (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2201 e16fea4 - Fix issue where patches would not be applied correctly on the AddProductsAddToCartForm
    (@paales)
graphcommerce - February 12, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2201 e16fea4 - Fix issue where Plugins would not be applied correctly on the AddProductsAddToCartForm
    (@paales)
graphcommerce - February 12, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2197 044331c - Revert: Change sorting for customer orders in Descending Created at order
    (@paales)
graphcommerce - February 12, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

graphcommerce - GraphCommerce 8.0.1

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

  • #2190 770a309 - Fixed a bug concerning customizable options. Customizable options of configurable products are shown again in the cart.
    (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • #2177 816d789 - Change sorting for customer orders in Descending Created at order
    (@LaurensFranken)

  • #2191 13ffa6b - When a user was logging in from the checkout react would be caught in an infinite loop and thus the page would hang
    (@JoshuaS98)

  • #2187 09a2cc3 - Do not try to automatically invalidate the current token and fully rely on the Session Expired dialog
    (@paales)

  • #2187 ee969bf - After signing out the currentCartId was still returning a value causing the cart to be shown after signing out
    (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2190 770a309 - Fixed a bug concerning customizable options. Customizable options of configurable products are shown again in the cart.
    (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

  • #2191 13ffa6b - When a user was logging in from the checkout react would be caught in an infinite loop and thus the page would hang
    (@JoshuaS98)

@graphcommerce/[email protected]

Patch Changes

graphcommerce - February 09, 2024 (canary)

Published by github-actions[bot] 8 months ago

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

Patch Changes

  • #2191 13ffa6b - When a user was logging in from the checkout react would be caught in an infinite loop and thus the page would hang
    (@JoshuaS98)

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

Patch Changes

  • #2191 13ffa6b - When a user was logging in from the checkout react would be caught in an infinite loop and thus the page would hang
    (@JoshuaS98)

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

graphcommerce - February 06, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

Patch Changes

  • #2190 770a309 - Fixed a bug concerning customizable options. Customizable options of configurable products are shown again in the cart.
    (@Jessevdpoel)

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

Patch Changes

  • #2190 770a309 - Fixed a bug concerning customizable options. Customizable options of configurable products are shown again in the cart.
    (@Jessevdpoel)

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

graphcommerce - February 05, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

Patch Changes

graphcommerce - February 01, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

graphcommerce - February 01, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

  • #2187 09a2cc3 - Do not try to automatically invalidate the current token and fully rely on the Session Expired dialog
    (@paales)

  • #2187 ee969bf - After signing out the currentCartId was still returning a value causing the cart to be shown after signing out
    (@paales)

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

graphcommerce - GraphCommerce 8.0.0

Published by github-actions[bot] 9 months ago

Upgrade docs 📖 · Previous 7.0.0 release notes ↩️ · Previous patch release 7.0.1 ➡️

A big thanks to the contributors who made this release possible! Here are some highlights ✨:

Special thanks to all these contributors: @Jessevdpoel, @FrankHarland, @mikekeehnen, @StefanAngenent, @JoshuaS98, @Giovanni-Schroevers, @bramvanderholst, @hnsr, @carlocarels90, @action-simon, @KMalkowski, @paales and all others who helped out!

Big changes

  • Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

  • Wishlist will now support configurable products and uses the <ActionCard/> on the wishlist page. (@Jessevdpoel)

  • Changed the layout of the succes page. Uses the <ActionCard/> to match the design of the cart. (@Jessevdpoel)

  • Accessibility improvements for the frontend: Added skip content link. Removed empty buttons from tab flow. Gave focus to elements (such as the menu) that appear when after clicking a button. Improved aria labels where needed (@FrankHarland)

  • Added a new Gallery Thumbnails feature that shows product thumbnails below the product gallery on the product page. (@mikekeehnen)

  • Added a new 'Session expired' dialog that is shown when a GraphQL query or mutation returns a graphql-authorization error. This error is returned when the user's session has expired. The dialog allows the user to sign in again and then the query or mutation is re-executed. (@paales)

  • Added a new enableGuestCheckoutLogin configuration: During customer login, GraphCommerce queries Magento to determine whether the customer account already exists or not. If not, the sign-up form is shown instead. To restore previous behavior, set enableGuestCheckoutLogin to true. For Magento versions, 2.4.7, 2.4.6-p1 and up, 2.4.5-p3 and up, 2.4.4-p4 and up, the following setting must be set to Yes: Stores -> Configuration -> Sales -> Checkout -> Checkout Options -> Enable Guest Checkout Login (@paales)

  • Added a new <CartCrosssellsScroller /> component to render crosssells in a horizontal scroller in the cart. (@StefanAngenent)

  • Created a new <RecentlyViewedProducts/> component and render it on product pages. (@bramvanderholst)

  • Order details page in the customer account section is completely redesigned to be more in line with other areas. (@StefanAngenent)

  • Provide instant feedback on availble attribute options when making a selection on a configurable product (@FrankHarland)

  • Performance: Added new <LazyHydrate/> component to improve the Total Blocking Time and implemented them in, <RowRenderer/>, <ProductListItemBase/>, <Footer/> and for the <NavigationProvider/>. Reduced the TBT by 50% on the homepage and other pages. (@Jessevdpoel)

  • Performance: Change the critical css injection location to be in the head instead of tags in the body. It had a number of negative consequences, such as the famous "flash of unstyled content" (FOUC) and the re-paint and re-layout required.

  • Hygraph: Add Dynamic Row UI for property UI field through a custom Hygraph application (@JoshuaS98)

  • Breaking change: Removed the legacyProductRoute configuration option from GraphCommerce and all /product/* routes. (@paales)

  • Developers: Added an eslint warning to restrict the import of useMediaQuery because it causes more trouble than it solves (@paales)

  • Developers: Support for Github Codespaces added: Created ./devcontainer/devcontainer.json to automatically run Graphcommerce (@action-simon)

Patch changes

  • Display the image of the configured product in the cart. (@mikekeehnen)
  • Created a new experimental mutation abort feature inside useFormGql. This will allow redundant mutations to be canceled. This is enabled when the experimental_useV2 prop on the useFormGql hook is used. (@mikekeehnen)
  • Created a debug.sessions config that allows debugging sessions. Enable with GC_DEBUG_SESSIONS=1 in your env or modify your graphcommerce.config.js and a button will show up on the bottom right. (@paales)
  • The ProductFilters and ProductList queries would only run after the hygraphPageContent query would be resolved, although they don't depend on each other, now they run in parallel. (@paales)
  • Removed the 'NoSSR' functionality from <WaitForQueries/> component as it slows down rendering. The 'feature' was necessary for the following use case: When hydrating a component that was server rendered and was living inside a <Suspense /> component. It would cause an hydration error and this was the workaround. With useSuspenseQuery and React 18, this problem will not occur. (@paales)
  • Fixed bug in Chrome where the mobile menu wouldn't open after the first selected level (@mikekeehnen)
  • Only show GraphQL network errors in development mode. (@Jessevdpoel)
  • Fixes issue where the <SidebarGallery /> would start jumping around if a user clicks the next button multiple times in short succession. (@Jessevdpoel)
  • Solved an issue where the Previous and Next buttons would become unclickable for Scrollers. (@Jessevdpoel)
  • Add showButtons prop to <ScrollerButton/> (@StefanAngenent)
  • Make sure the product image gallery traps focus and scrollbar doesn't disappear suddenly (@JoshuaS98)
  • Log the related element if the ScrollerProvider couldn’t find any children during load. (@paales)
  • Made all Magento dependencies optional in the googleanalytics and googletagmanager packages, allowing it to be installed in any project. (@Jessevdpoel)
  • Include @connection, @export, @defer and @nonreactive in schema, so they can be used, in queries (@paales)
  • Allow configurable_product_options_selection to be stored in the localStorage so queries do not need to be re-executed when the page loads. (@Jessevdpoel)
  • Remove requirement of toplevelAwait for graphqlSsrClient and solve logging issue in cli (@paales)
  • Don't render pseudo-locale in HTML lang attribute (@hnsr)
  • Added the customers order number to succes page. (@Jessevdpoel)
  • When a customer would return from a payment gateway and it would erroneously query the cart GraphCommerce would immediately create a new empty cart while it shouldn't. (@paales)
  • After signing in the <CartFab/> would not always properly reflect if there are items in the customers cart. (@paales)
  • The <CartFab/> wouldn't reflect that there are items in the cart when a customer refreshes the page after adding a product to the cart, without viewing the cart. (@carlocarels90)
  • Solved an issue where the inactive cart would set as the current cart when the customer had signed in, checked out their cart, session expired and tried to log in again. (@FrankHarland)
  • Remember email adress when going from checkout to signin/up form (@FrankHarland)
  • The <UpdateItemQuantity /> component now accepts textInputProps to be passed to the <TextInputNumber/>. (@paales)
  • When updating the quantity of the product in the cart it could happen that the form would become out of sync with the actual data. (@paales)
  • Updated styling <SelectedCustomizableOptions />, so items get more spacing and elements accessable via sx prop (@mikekeehnen)
  • Disabled ripple animations on all ActionCard ‘Select’ and ‘Change’ so the rendering is more subtle during checkout. (@Jessevdpoel)
  • Fixed bug where if the customer created a new address during checkout it would not be persisted when navigating back from the payment step. (@Jessevdpoel)
  • Solved an issue where the currently paginated page would be included in URL for the subcategory, resulting in a 404 error for some pages. (@Jessevdpoel)
  • Compare button didn't have a proper hover state on the product page. (@action-simon)
  • Autofill country dropdown in CreateCustomerAddressForm so AddPostcodeNLAddressFields plugin works by default (@Giovanni-Schroevers)
  • Allow passing skip to useCustomerQuery and useGuestQuery (@Jessevdpoel)
  • Fixed bug which caused region to not be set properly if user swapped countries in the checkout process. (@Jessevdpoel)
  • When a user is logged in the modal is dismissed immediately without showing a succes page. This speeds up the interaction with the site. (@FrankHarland)
  • The Snackbar message when a customers email was updated was unstyled. (@StefanAngenent)
  • Add 'Current email' translation (@StefanAngenent)
  • Fix <EditAddressForm /> when addition field is null or undefined (@JoshuaS98)
  • Filters which are not yet applied and all options have 0 results, will not be shown anymore. (@Jessevdpoel)
  • When a product has a discount price, render that on the product page (@paales)
  • The filter bar would completely disappear when there were no items returned. (@Jessevdpoel)
  • Solved an issue where the same product could not be added multiple times to the cart without reloading the page. (@Jessevdpoel)
  • Removed unwanted space below <ProductListItem/> images caused by line-height. Images are now perfectly square as expected. (@bramvanderholst)
  • The name of the product in the <ProductListItem/> would break words in the middle of a word instead of using a normal word break. (@paales)
  • Crosssell behavior now properly shows for the latest added product. Added latest submitted variables to be retrieved when using the useFormGql hook. (@JoshuaS98)
  • The product page will now also load all information that a ProductListItem will load (@Jessevdpoel)
  • Forward the maxWidth prop to the <ColumnTwoWithTop /> component from the <ProductPageDescription maxWidth='lg'/> component. (@StefanAngenent)
  • New <ProductListItemSkeleton /> component and added support to the productListRenderer. Used for the new Recently Viewed Products feature. (@bramvanderholst)
  • Solved an issue where the quantity selector was not working for bundled products (@Jessevdpoel)
  • When selecting a non-existing option on a configurable product page, the price would not be updated. (@Jessevdpoel)
  • Prevent aggregations from being excluded when executing the defaultConfigurableOptionsSelection (@Giovanni-Schroevers)
  • Make sure the search link in the header is a soft navigation instead of a hard browser navigation. (@paales)
  • Take the per_page configuration in account for the search results (@paales)
  • Prevent HandleRedirect errors by filtering out empty URL values from the candidates array. (@carlocarels90)
  • Solve incorrect redirect when locale has own domain (@hnsr)
  • Mollie: An error message would be shown when a payment was sucessfull instead of when an error occured. (@Giovanni-Schroevers)
  • Mollie: Fixed the issue where a guest returned to a empty cart after a canceled payment with Mollie (@mikekeehnen)
  • It is now allowed to pass children to the <Footer/> component (@Jessevdpoel)
  • On certain breakpoints the Product page gallery had additional padding applied. (@Jessevdpoel)
  • When viewing the homepage the logo will not have a <a/> tag wrapped anymore. (@carlocarels90)
  • The <Snackbar/> component now accepts an icon when severity is set to info (@bramvanderholst)
  • Fix incorrect canonical URLs when i18n domain routing is used (@hnsr)
  • Fixed ItemScroller component className. Changed from SidebarSlider to ItemScroller (@bramvanderholst)
  • Added disableBackdropClick prop to MessageSnackbar to allow page interaction without closing the snackbar (@bramvanderholst)
  • The filterNonNullable method would collapse TypeScript unions because of the Simplify<> helper, this is now omitted retulting in working unions. (@paales)
  • Added <DismissibleSnackbar/> component to allow messages to be shown only once (@bramvanderholst)
  • If there is an open dropdown in an overlay, pressing the escape button now closes the menu instead of the overlay. (@Jessevdpoel)
  • Upgraded the graphcommerce repo to the yarn 4 package manager (@paales)
  • Updated dependencies. Fixed trace-to-tree.mjs to debug build perf and added trace-to-event-format.mjs for compatibility with about://tracing. (@paales)
  • Added @graphcommerce packages in node_modules to nextjs watch options (@KMalkowski)
  • Moved all internal @graphcommerce/* dependencies to peerDependencies and resolve remaining peer dependency issues (@paales)
  • Node.js version of gitpod updated to node 18 (@action-simon)
  • Upgraded to nextjs 14.0.2, and updated other related dependencies. Removed @mui/material/modern alias as that doesnt work in combination with nextjs 14.0.2. (@paales)
  • Hygraph: Implemented 'Message' variant for <RowColumnOne/> to show an important message which, after dismissing, will not show again (@bramvanderholst)
  • Hygraph: Allow muiltiple rows for each Dynamic Row entry in Hygraph (@JoshuaS98)
  • Hygraph: Fix Hygraph CLI (Management SDK) | Add support for updating and deleting enumerations (@JoshuaS98)
  • Hygraph: Solve issue where a Hygraph DynamicRow conditions were missing fields in the OrCondition (@Jessevdpoel)
  • Hygraph: Dynamic rows would break page rendering if there was a dynamic row but no page returned (@paales)
  • Hygraph: Added support for the alt attribute for images inside Rich text areas coming from Hygraph. (@StefanAngenent)
  • Hygraph: Added support to add css class names to RichText elements from Hygraph (@FrankHarland)
  • Docs: Split off Magento known issues to separate page (@hnsr)
  • Docs: Make the "Search" string translatable and fix typo. (@carlocarels90)
  • Docs: Updated roadmap and feature-list (@paales)
  • Docs: Updated examples in the documentation to reflect the changes made in GraphCommerce. (@paales)
  • Docs: Clarify texts by adding formatting and correcting spelling. (@carlocarels90)
  • Docs: Document workaround/patch for broken cart error handling with Magento 2.4.6. (@hnsr)
  • Docs: Render framework/config.md more nicely, so that we follow a more typescript-esque style and inline the enums. (@bramvanderholst)
  • Demo: Added AddProductsToCartForm context provider to the recently viewed products demo to fix a bug surrounding a form that was null. (@Jessevdpoel)
  • Demo: Make sure the DemoRecentlyViewedProducts doesn't render without any items (@paales)

Detailed changelogs per package

@graphcommerce/[email protected]

Minor Changes

Patch Changes

@graphcommerce/[email protected]

Patch Changes

  • #2172 279599e - Updated examples in the documentation to reflect the changes made in GraphCommerce. (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2155 6a34c4a - Added AddProductsToCartForm context provider to the recently viewed products demo to fix a bug surrounding a form that was null. (@Jessevdpoel)

  • 38ec023 - Make sure the DemoRecentlyViewedProducts doesn't render without any items (@paales)

@graphcommerce/[email protected]

Minor Changes

Patch Changes

  • e33660f - Accessibility improvements for the frontend: Added skip content link. Removed empty buttons from tab flow. Gave focus to elements (such as the menu) that appear when after clicking a button. Improved aria labels where needed (@FrankHarland)

@graphcommerce/[email protected]

Patch Changes

  • #2085 3c92993 - Fixes issue where the <SidebarGallery /> would start jumping around if a user clicks the next button multiple times in short succession. (@Jessevdpoel)

  • e33660f - Accessibility improvements for the frontend: Added skip content link. Removed empty buttons from tab flow. Gave focus to elements (such as the menu) that appear when after clicking a button. Improved aria labels where needed (@FrankHarland)

  • #2157 b1afcd0 - Solved an issue where the Previous and Next buttons would become unclickable for Scrollers. (@Jessevdpoel)

  • #2066 3b1f585 - Add showButtons prop to <ScrollerButton/> (@StefanAngenent)

  • #2045 1ac1e09 - Make sure the product image gallery traps focus and scrollbar doesn't disappear suddenly (@JoshuaS98)

  • #2011 da821af - Added a new Gallery Thumbnails feature that shows product thumbnails below the product gallery on the product page. (@mikekeehnen)

  • dc86f2f - Log the related element if the ScrollerProvider couldn’t find any children during load. (@paales)

@graphcommerce/[email protected]

Minor Changes

  • #2099 ff796b8 - Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

  • #2127 124e6c9 - Made all Magento dependencies optional in the googleanalytics and googletagmanager packages, allowing it to be installed in any project. (@Jessevdpoel)

Minor Changes

  • #2127 124e6c9 - Made all Magento dependencies optional in the googleanalytics and googletagmanager packages, allowing it to be installed in any project. (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • #2048 4a29bf7 - Include @connection, @export, @defer and @nonreactive in schema, so they can be used, in queries (@Jessevdpoel)

  • #2048 072cd14 - Allow configurable_product_options_selection to be stored in the localStorage so queries do not need to be re-executed when the page loads. (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • #2113 bf5ae89 - Remove requirement of toplevelAwait for graphqlSsrClient and solve logging issue in cli (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2095 519531e - Fix Hygraph CLI (Management SDK) | Add support for updating and deleting enumerations (@JoshuaS98)

  • #2169 eab3f0b - Solve issue where a Hygraph DynamicRow conditions were missing fields in the OrCondition (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • df385d9 - Allow muiltiple rows for each Dynamic Row entry in Hygraph (@JoshuaS98)

  • #2182 a93c312 - Dynamic rows would break page rendering if there was a dynamic row but no page returned (@paales)

@graphcommerce/[email protected]

Minor Changes

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Minor Changes

Patch Changes

  • #2184 28b7e6e - When a customer would return from a payment gateway and it would erroneously query the cart GraphCommerce would immediately create a new empty cart while it shouldn't. (@paales)

  • #1999 6d7ed0a - After signing in the <CartFab/> would not always properly reflect if there are items in the customers cart. (@paales)

  • #2089 4b6bbf0 - The <CartFab/> wouldn't reflect that there are items in the cart when a customer refreshes the page after adding a product to the cart, without viewing the cart. (@carlocarels90)

  • #2170 f3e906f - Solved an issue where the inactive cart would set as the current cart when the customer had signed in, checked out their cart, session expired and tried to log in again. (@FrankHarland)

  • #2107 2f51504 - Remember email adress when going from checkout to signin/up form (@FrankHarland)

  • #1999 ab834fb - Added a new 'Session expired' dialog that is shown when a GraphQL query or mutation returns a graphql-authorization error. This error is returned when the user's session has expired. The dialog allows the user to sign in again and then the query or mutation is re-executed. (@paales)

@graphcommerce/[email protected]

Minor Changes

  • #2018 750aa6a - Changed the layout of the succes page. We are using ActionCards right now to match the design of the cart. (@Jessevdpoel)

@graphcommerce/[email protected]

Minor Changes

  • #2110 d2e716d - ---

    '@graphcommerce/magento-cart-email': minor '@graphcommerce/magento-customer': minor


    Added a new enableGuestCheckoutLogin configuration: During customer login, GraphCommerce queries Magento to determine whether the customer account already exists or not. If not, the sign-up form is shown instead.

    To restore previous behavior, set enableGuestCheckoutLogin to true. For Magento versions, 2.4.7, 2.4.6-p1 and up, 2.4.5-p3 and up, 2.4.4-p4 and up, the following setting must be set to Yes: Stores -> Configuration -> Sales -> Checkout -> Checkout Options -> Enable Guest Checkout Login (@Jessevdpoel)

Patch Changes

@graphcommerce/[email protected]

Minor Changes

  • #2108 b9ab035 - Added a new <CartCrosssellsScroller /> component to render crosssells in a horizontal scroller in the cart. (@StefanAngenent)

  • #2099 ff796b8 - Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

  • #2018 750aa6a - Changed the layout of the succes page. We are using ActionCards right now to match the design of the cart. (@Jessevdpoel)

Patch Changes

  • #2179 2e6afd9 - The <UpdateItemQuantity /> component now accepts textInputProps to be passed to the <TextInputNumber/>. (@paales)

  • #2183 afc8810 - When updating the quantity of the product in the cart it could happen that the form would become out of sync with the actual data. (@paales)

  • #2079 98799e0 - Updated styling <SelectedCustomizableOptions />, so items get more spacing and elements accessable via sx prop (@mikekeehnen)

@graphcommerce/[email protected]

Patch Changes

  • #2115 105a1af - Disabled ripple animations on all ActionCard ‘Select’ and ‘Change’ so the rendering is more subtle during checkout. (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • #2115 105a1af - Disabled ripple animations on all ActionCard ‘Select’ and ‘Change’ so the rendering is more subtle during checkout. (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • #2115 105a1af - Disabled ripple animations on all ActionCard ‘Select’ and ‘Change’ so the rendering is more subtle during checkout. (@Jessevdpoel)

  • #2118 0cdaad2 - Fixed bug where if the customer created a new address during checkout it would not be persisted when navigating back from the payment step. (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • #2093 112b041 - Created a new experimental mutation abort feature inside useFormGql. This will allow redundant mutations to be canceled. This is enabled when the experimental_useV2 prop on the useFormGql hook is used. (@mikekeehnen)

  • #2115 105a1af - Disabled ripple animations on all ActionCard ‘Select’ and ‘Change’ so the rendering is more subtle during checkout. (@Jessevdpoel)

@graphcommerce/[email protected]

Patch Changes

  • #2145 4fc2fda - Solved an issue where the currently paginated page would be included in URL for the subcategory, resulting in a 404 error for some pages. (@Jessevdpoel)

@graphcommerce/[email protected]

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Minor Changes

  • #2175 a6bcb87 - Autofill country dropdown in CreateCustomerAddressForm so AddPostcodeNLAddressFields plugin works by default (@Giovanni-Schroevers)

  • #2110 d2e716d -

    Added a new enableGuestCheckoutLogin configuration: During customer login, GraphCommerce queries Magento to determine whether the customer account already exists or not. If not, the sign-up form is shown instead.

    To restore previous behavior, set enableGuestCheckoutLogin to true. For Magento versions, 2.4.7, 2.4.6-p1 and up, 2.4.5-p3 and up, 2.4.4-p4 and up, the following setting must be set to Yes: Stores -> Configuration -> Sales -> Checkout -> Checkout Options -> Enable Guest Checkout Login (@Jessevdpoel)

Patch Changes

  • #2091 5b865d3 - Order details page in the customer account section is completely redesigned to be more in line with other areas. (@StefanAngenent)

  • #2048 a5c6550 - Allow passing skip to useCustomerQuery and useGuestQuery (@Jessevdpoel)

  • #2170 f3e906f - Solved an issue where the inactive cart would set as the current cart when the customer had signed in, checked out their cart, session expired and tried to log in again. (@FrankHarland)

  • #2107 2f51504 - Remember email adress when going from checkout to signin/up form (@FrankHarland)

  • #2128 2320f8f - Fixed bug which caused region to not be set properly if user swapped countries in the checkout process. (@Jessevdpoel)

  • #1999 ab834fb - Added a new 'Session expired' dialog that is shown when a GraphQL query or mutation returns a graphql-authorization error. This error is returned when the user's session has expired. The dialog allows the user to sign in again and then the query or mutation is re-executed. (@paales)

  • #2166 304b816 - When a user is logged in the modal is dismissed immediately without showing a succes page. This speeds up the interaction with the site. (@FrankHarland)

  • #1999 c11f3b8 - Created a debug.sessions config that allows debugging sessions. Enable with GC_DEBUG_SESSIONS=1 in your env or modify your graphcommerce.config.js (@paales)

  • #2087 42c33c6 - The message when the email was updated was unstyled. (@StefanAngenent)

  • #2082 2e8d19c - Add 'Current email' translation (@StefanAngenent)

  • #2098 ca45472 - Fix <EditAddressForm /> when addition field is null or undefined (@JoshuaS98)

@graphcommerce/[email protected]

Major Changes

  • #2041 bc3a833 - Removed the legacyProductRoute configuration option from GraphCommerce (@paales)

Minor Changes

  • #2133 133f908 - Added new <LazyHydrate/> component to improve the Total Blocking Time and implemented them in, <RowRenderer/>, <ProductListItemBase/>, <Footer/> and for the <NavigationProvider/>. Reduced the TBT by 50% on the homepage and other pages. (@Jessevdpoel)

  • #2099 ff796b8 - Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

  • #2048 13e23e4 - Wishlist will now support configurable products and uses the <ActionCardLayout/> (@Jessevdpoel)

Patch Changes

  • #2083 ca493c7 - Filters which are not yet applied and all options have 0 results, will not be shown anymore. (@Jessevdpoel)

  • #2160 89b58be - The ProductFilters and ProductList queries would only run after the hygraphPageContent query would be resolved, although they don't depend on each other, now they run in parallel. (@paales)

  • #2048 8d4f1ef - When a product has a discount price, render that on the product page (@Jessevdpoel)

  • e33660f - Accessibility improvements for the frontend: Added skip content link. Removed empty buttons from tab flow. Gave focus to elements (such as the menu) that appear when after clicking a button. Improved aria labels where needed (@FrankHarland)

  • #2058 16dc488 - Provide instant feedback on availble attribute options when making a selection on a configurable product (@FrankHarland)

  • #2164 5224755 - The filter bar would completely disappear when there were no items returned. (@Jessevdpoel)

  • #2150 59844cd - Solved an issue where the same product could not be added multiple times to the cart without reloading the page. (@Jessevdpoel)

  • #2077 0d2cb22 - Removed unwanted space below images caused by line-height. Images are now perfectly square as expected. (@bramvanderholst)

  • #2160 154cd12 - The name of the product in the <ProductListItem/> would break words in the middle of a word instead of using a normal word break. (@paales)

  • #2007 f59c276 - Crosssell behavior now properly shows for the latest added product. Added latest submitted variables to be retrieved when using the useFormGql hook. (@JoshuaS98)

  • #2048 0335dd9 - The product page will now also load all information that a ProductListItem will load (@Jessevdpoel)

  • #2076 f860e68 - Forward the maxWidth prop to the <ColumnTwoWithTop /> component from the <ProductPageDescription maxWidth='lg'/> component. (@StefanAngenent)

  • #2077 5f4455b - New <ProductListItemSkeleton /> component and added support to the productListRenderer. Used for the new Recently Viewed Products feature. (@bramvanderholst)

@graphcommerce/[email protected]

Minor Changes

  • #2099 ff796b8 - Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

  • #2048 13e23e4 - Wishlist will now support configurable products and uses the <ActionCardLayout/> (@Jessevdpoel)

Patch Changes

  • #2115 105a1af - Disabled ripple animations on all ActionCard ‘Select’ and ‘Change’ so the rendering is more subtle during checkout. (@Jessevdpoel)

  • #2028 dd5499d - Solved an issue where the quantity selector was not working for bundled products (@Jessevdpoel)

@graphcommerce/[email protected]

Minor Changes

  • #2099 ff796b8 - Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

  • #2048 13e23e4 - Wishlist will now support configurable products and uses the <ActionCardLayout/> (@Jessevdpoel)

Patch Changes

@graphcommerce/[email protected]

Minor Changes

  • #2099 ff796b8 - Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

@graphcommerce/[email protected]

Minor Changes

  • #2099 ff796b8 - Support for all customizable product options (except file upload) on the product pages and in the cart. (@Jessevdpoel)

@graphcommerce/[email protected]

Minor Changes

@graphcommerce/[email protected]

Patch Changes

  • e33660f - Accessibility improvements for the frontend: Added skip content link. Removed empty buttons from tab flow. Gave focus to elements (such as the menu) that appear when after clicking a button. Improved aria labels where needed (@FrankHarland)

@graphcommerce/[email protected]

Patch Changes

  • #2160 9091dbb - Make sure the search link in the header is a soft navigation instead of a hard browser navigation. (@paales)

  • e33660f - Accessibility improvements for the frontend: Added skip content link. Removed empty buttons from tab flow. Gave focus to elements (such as the menu) that appear when after clicking a button. Improved aria labels where needed (@FrankHarland)

  • #2160 fe37229 - Take the per_page configuration in account for the search results (@paales)

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Minor Changes

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

Minor Changes

  • #2133 133f908 - Added new <LazyHydrate/> component to improve the Total Blocking Time and implemented them in, <RowRenderer/>, <ProductListItemBase/>, <Footer/> and for the <NavigationProvider/>. Reduced the TBT by 50% on the homepage and other pages. (@Jessevdpoel)

  • #2073 05ce566 - It is now allowed to use children inside the footer component (@Jessevdpoel)

  • #2018 750aa6a - Changed the layout of the succes page. We are using ActionCards right now to match the design of the cart. (@Jessevdpoel)

Patch Changes

  • #2161 cc5c636 - On certain breakpoints the Product page gallery had additional padding applied. (@Jessevdpoel)

  • #2138 a057d62 - When viewing the homepage the logo will not have a <a/> tag wrapped anymore. (@carlocarels90)

  • #2004 da21357 - The <Snackbar/> component now accepts an icon when severity is set to info (@bramvanderholst)

  • #2135 7b017f5 - Fix incorrect canonical URLs when i18n domain routing is used (@hnsr)

  • #2077 727d100 - Fixed ItemScroller component className. Changed from SidebarSlider to ItemScroller (@bramvanderholst)

  • e33660f - Accessibility improvements for the frontend: Added skip content link. Removed empty buttons from tab flow. Gave focus to elements (such as the menu) that appear when after clicking a button. Improved aria labels where needed (@FrankHarland)

  • #2108 7fc4bb9 - Removed the 'NoSSR' functionality from <WaitForQueries/> component as it slows down rendering. The 'feature' was necessary for the following use case: When hydrating a component that was server rendered and was living inside a <Suspense /> component. It would cause an hydration error and this was the workaround. With useSuspenseQuery and React 18, this problem will not occur. (@StefanAngenent)

  • #2004 d608830 - Added disableBackdropClick prop to MessageSnackbar to allow page interaction without closing the snackbar (@bramvanderholst)

  • #2048 695f40c - The filterNonNullable method would collapse TypeScript unions because of the Simplify<> helper, this is now omitted retulting in working unions. (@Jessevdpoel)

  • #2066 3b1f585 - Add showButtons prop to <ScrollerButton/> (@StefanAngenent)

  • #2045 1ac1e09 - Make sure the product image gallery traps focus and scrollbar doesn't disappear suddenly (@JoshuaS98)

  • #2105 185f9dd - Fixed bug in Chrome where the mobile menu wouldn't open after the first selected level (@mikekeehnen)

  • #2004 94e1ae8 - Added <DismissibleSnackbar/> component to allow messages to be shown only once (@bramvanderholst)

  • #2137 df507b1 - Don't render pseudo-locale in HTML lang attribute (@hnsr)

  • #2125 5224ee5 - If there is an open menu in an overlay, pressing the escape button now closes the menu instead of the overlay. (@Jessevdpoel)

  • #2004 53947d3 - Implemented 'Message' variant for <RowColumnOne/> to show an important message which, after dismissing, will not show again (@bramvanderholst)

  • #2121 a5da6ff - Change the critical css injection location to be in the head instead of <style> tags in the body. It had a number of negative consequences, such as the famous "flash of unstyled content" (FOUC) and the re-paint and re-layout required. (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2093 112b041 - Created a new experimental mutation abort feature inside useFormGql. This will allow redundant mutations to be canceled. This is enabled when the experimental_useV2 prop on the useFormGql hook is used. (@mikekeehnen)

  • #2007 f59c276 - Crosssell behavior now properly shows for the latest added product. Added latest submitted variables to be retrieved when using the useFormGql hook. (@JoshuaS98)

@graphcommerce/[email protected]

Patch Changes

  • #2035 08f1ae1 - Added an eslint warning to restrict the import of useMediaQuery because it causes more trouble than it solves (@paales)

@graphcommerce/[email protected]

Patch Changes

  • #2077 2e46389 - Render framework/config.md more nicely, so that we follow a more typescript-esque style and inline the enums. (@bramvanderholst)

@graphcommerce/[email protected]

Minor Changes

Patch Changes

  • #2156 69b816c - Updated dependencies. Fixed trace-to-tree.mjs to debug build perf and added trace-to-event-format.mjs for compatibility with about://tracing. (@paales)

  • #2078 5f409e6 - Added @graphcommerce packages in node_modules to nextjs watch options (@KMalkowski)

  • #2129 dca4490 - Created ./devcontainer/devcontainer.json to automatically run Graphcommerce after opening Codespaces (@action-simon)

  • #2113 6306182 - Moved all internal @graphcommerce/* dependencies to peerDependencies and resolve remaining peer dependency issues (@paales)

  • d267f19 - Disable the pagination thumbnails (@paales)

  • #2172 279599e - Updated examples in the documentation to reflect the changes made in GraphCommerce. (@paales)

  • #2116 e0e5e82 - Node.js version of gitpod updated to node 18 (@action-simon)

  • #2113 77b1bac - Upgraded to nextjs 14.0.2, and updated other related dependencies. Removed @mui/material/modern alias as that doesnt work in combination with nextjs 14.0.2. (@paales)

  • #2169 eab3f0b - Solve issue where a Hygraph DynamicRow conditions were missing fields in the OrCondition (@Jessevdpoel)

graphcommerce - January 30, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2184 28b7e6e - When a customer would return from a payment gateway and it would erroneously query the cart GraphCommerce would immediately create a new empty cart while it shouldn't.
    (@paales)
graphcommerce - January 29, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2183 afc8810 - When updating the quantity of the product in the cart it could happen that the form would become out of sync with the actual data.
    (@paales)
graphcommerce - January 29, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

Patch Changes

  • #2182 a93c312 - Dynamic rows would break page rendering if there was a dynamic row but no page returned
    (@paales)
graphcommerce - January 29, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

Minor Changes

graphcommerce - January 23, 2024 (canary)

Published by github-actions[bot] 9 months ago

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

Patch Changes

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]

@graphcommerce/[email protected]