Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
6277f34
Solve issue where reactCompiler was enabled but the babel package was…
paales Dec 31, 2025
64d843e
"No graphcommerce.config.js found in the project, using demo config" …
paales Dec 31, 2025
16efe30
Hide ActionCard-end if there is no content
paales Dec 31, 2025
f1b60ac
Solve issue where the cache wasn't available from the context anymore…
paales Dec 31, 2025
6714cbb
Deprecated globalApolloClient
paales Dec 31, 2025
dc57da4
Moved from form.watch to useWatch everywhere which works even if the …
paales Dec 31, 2025
0188c30
Moved the CmsPage query from the route query to the cmsPage query
paales Dec 31, 2025
71e2bcc
Peer dependency issues
paales Dec 31, 2025
ddeaf5d
Fix hydration error
paales Dec 31, 2025
ad747c9
Merge pull request #2568 from graphcommerce-org/fix/various
paales Dec 31, 2025
1ba54d4
Properly handle the new uid stuff
paales Dec 31, 2025
f76edb7
Fix issue with container sizing of breadcrumb
paales Dec 31, 2025
93e4c12
Docs
paales Dec 31, 2025
c7d0b83
Fix release
paales Dec 31, 2025
ec4c412
Merge pull request #2569 from graphcommerce-org/fix/various
paales Dec 31, 2025
fb68972
chore(release): update prerelease versions
github-actions[bot] Dec 31, 2025
2350c13
Show loading skeleton when loading and there is no data, but show whe…
paales Jan 4, 2026
591fb82
Make sure the default_display_currency_code is always fetched properl…
paales Jan 4, 2026
d9c7545
When switching stores unset the currency when there is no selection a…
paales Jan 4, 2026
a16bed1
Always copy the file if the original file is a core file, allowing ov…
paales Jan 5, 2026
6d5ff59
Do not send an unacceptable store currency due to a configuration err…
paales Jan 5, 2026
0146abe
Created a new GuestOrCustomerMask to show information based on their …
paales Jan 5, 2026
a188047
Comments
paales Jan 5, 2026
78a2a8a
Solve issue where the @client fields could not be resolved correctly …
paales Jan 5, 2026
6b982b0
Sovle build issues
paales Jan 5, 2026
4a8a60f
Fix tests
paales Jan 5, 2026
5ca16e9
Merge pull request #2571 from graphcommerce-org/fix/various
paales Jan 5, 2026
162b2ba
chore(release): update prerelease versions
github-actions[bot] Jan 5, 2026
32b80e2
Create a release to main
paales Jan 5, 2026
acd9973
Change release
paales Jan 5, 2026
266af38
Merge pull request #2572 from graphcommerce-org/fix/create-different-…
paales Jan 5, 2026
89189a7
chore(release): update prerelease versions
github-actions[bot] Jan 5, 2026
a4fbc02
Chagnes
paales Jan 5, 2026
100cd16
Forward Step when using assign for the order
paales Jan 5, 2026
c5d1abd
Merge pull request #2574 from graphcommerce-org/fix/create-different-…
paales Jan 5, 2026
0473b0e
chore(release): update prerelease versions
github-actions[bot] Jan 5, 2026
4d2adec
release again
paales Jan 5, 2026
9dce6f2
Merge pull request #2576 from graphcommerce-org/fix/create-different-…
paales Jan 5, 2026
e620116
chore(release): update prerelease versions
github-actions[bot] Jan 5, 2026
1b7c679
chore(release): version packages for stable release
github-actions[bot] Jan 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
587 changes: 0 additions & 587 deletions .changeset/RELEASE-10.0.0.md

This file was deleted.

32 changes: 20 additions & 12 deletions .github/workflows/release-canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,23 +59,31 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: create branch disable pre and version
- name: Create release branch and PR
shell: bash
run: |
# Exit pre-release mode and version for stable
yarn changeset pre exit
yarn changeset version
yarn install

# Commit the stable version changes
git add .
git commit -m "chore(release): version packages for stable release"

# Push to release branch (force to update if exists)
git push origin HEAD:changeset-release/from-canary --force

# Create or update PR using GitHub CLI
PR_URL=$(gh pr list --head changeset-release/from-canary --base main --json url --jq '.[0].url')
if [ -z "$PR_URL" ]; then
gh pr create \
--base main \
--head changeset-release/from-canary \
--title "Release ${{ steps.vars.outputs.date }}" \
--body "Automated release PR from canary branch"
else
echo "PR already exists: $PR_URL"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v7
with:
branch: changeset-release/from-canary
title: 'Release ${{ steps.vars.outputs.date }}'
- name: Check outputs
if: ${{ steps.cpr.outputs.pull-request-number }}
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
1,265 changes: 1,265 additions & 0 deletions RELEASE-10.0.0.md

Large diffs are not rendered by default.

25 changes: 25 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Change Log

## 10.0.1

## 10.0.1-canary.4

## 10.0.1-canary.3

## 10.0.1-canary.2

## 10.0.1-canary.1

## 10.0.1-canary.0

## 10.0.0

### Major Changes
Expand All @@ -11,6 +23,7 @@
### 🚀 Turbopack-Compatible Interceptor System

The entire plugin/interceptor system has been rewritten to work with Turbopack:

- **No more Webpack plugins** - Removed `InterceptorPlugin` webpack plugin entirely
- **File-based interception** - Original files are moved to `.original.tsx` and replaced with interceptor content
- **Direct imports** - Interceptors import from `.original` files instead of embedding source
Expand All @@ -22,13 +35,15 @@
### ⚙️ Treeshakable Configuration System

Replaced Webpack `DefinePlugin`-based `import.meta.graphCommerce` with a new generated configuration system:

- **New `codegen-config-values` command** - Generates TypeScript files with precise typing
- **Schema-driven** - Dynamically introspects Zod schemas to determine all available properties
- **Fully treeshakable** - Unused config values are eliminated from the bundle
- **Type-safe** - Uses `Get<GraphCommerceConfig, 'path'>` for nested property access
- **Separate files for nested objects** - Optimal treeshaking for complex configurations

### 🔧 withGraphCommerce Changes

- **Removed** `InterceptorPlugin` - No longer needed with file-based interception
- **Removed** `DefinePlugin` for `import.meta.graphCommerce` - Replaced with generated config
- **Removed** `@mui/*` alias rewrites - No longer required
Expand All @@ -38,33 +53,39 @@
- **Added** `images.qualities: [52, 75]` for Next.js image optimization

### 📦 Lingui Configuration

- **Renamed** `lingui.config.js` → `lingui.config.ts` with TypeScript support
- **Updated** `@graphcommerce/lingui-next/config` to TypeScript with proper exports
- **Simplified** formatter options

### ⚛️ React 19 & Next.js 16 Compatibility

- Updated `RefObject<T>` types for React 19 (now includes `null` by default)
- Replaced deprecated `React.VFC` with `React.FC`
- Fixed `useRef` calls to require explicit initial values
- Updated `MutableRefObject` usage in `framer-scroller`

### 📋 ESLint 9 Flat Config

- Migrated from legacy `.eslintrc` to new flat config format (`eslint.config.mjs`)
- Updated `@typescript-eslint/*` packages to v8
- Fixed AST selector for `SxProps` rule (`typeParameters` → `typeArguments`)

### 🔄 Apollo Client

- Fixed deprecated `name` option → `clientAwareness: { name: 'ssr' }`
- Updated error handling types to accept `ApolloError | null | undefined`

### ⚠️ Breaking Changes

- **Node.js 24.x not supported** - Restricted to `>=20 <24.0.0` due to [nodejs/undici#4290](https://github.com/nodejs/undici/issues/4290)
- **Interceptor files changed** - Original components now at `.original.tsx`
- **Config access changed** - Use generated config values instead of `import.meta.graphCommerce`
- **ESLint config format** - Must use flat config (`eslint.config.mjs`)
- **Lingui config** - Rename `lingui.config.js` to `lingui.config.ts`

### 🗑️ Removed

- `InterceptorPlugin` webpack plugin
- `configToImportMeta` utility
- Webpack `DefinePlugin` usage for config
Expand Down Expand Up @@ -207,6 +228,7 @@
### Patch Changes

- [#1752](https://github.com/graphcommerce-org/graphcommerce/pull/1752) [`2a6a4d9ec`](https://github.com/graphcommerce-org/graphcommerce/commit/2a6a4d9ecfa1b58a66ba9b9d00016d6feda9aa95) - Updated dependencies to latest versions, except for nextjs; Solve tons of peer dependency issues.

- Updated the @mui/material package
- Removed dependencies on react-hook-form-mui and @playwright/test
- Upgraded dependencies including type-fest and graphql-mesh
Expand All @@ -225,6 +247,7 @@
- [#1729](https://github.com/graphcommerce-org/graphcommerce/pull/1729) [`c37187a51`](https://github.com/graphcommerce-org/graphcommerce/commit/c37187a513670ebcf09e99eb4a762c8bdb5df7e4) - Moved Magento Cart Pickup shipping method to the [GraphCommerce plugin system](https://www.graphcommerce.org/docs/framework/plugins)

Upgrade guide:

- The upgrade removes `@graphcommerce/magento-cart-pickup` package from your `package.json`, remove them for now.
- Proceed to upgrade normally
- Add back `@graphcommerce/magento-cart-pickup`, following the [GraphCommerce Magento docs](https://graphcommerce.org/docs/magento). ([@paales](https://github.com/paales))
Expand All @@ -242,6 +265,7 @@
- [#1718](https://github.com/graphcommerce-org/graphcommerce/pull/1718) [`f08bffd63`](https://github.com/graphcommerce-org/graphcommerce/commit/f08bffd63780cb626f072b25c2fd4da37543b6f7) - Moved all Payment methods to the [GraphCommerce plugin system](https://www.graphcommerce.org/docs/framework/plugins)

Upgrade guide:

- The upgrade removes all the payment gateway packages from the `package.json`, remove them for now.
- Proceed to upgrade normally
- Add back all the payment modules following the [GraphCommerce Magento docs](https://graphcommerce.org/docs/magento).
Expand Down Expand Up @@ -547,6 +571,7 @@
* [#1278](https://github.com/ho-nl/m2-pwa/pull/1278) [`81ea406d5`](https://github.com/ho-nl/m2-pwa/commit/81ea406d54d6b5c662c030a7fea444abc4117a20) Thanks [@ErwinOtten](https://github.com/ErwinOtten)! - Written documentation for GraphCommerce! 👩‍🏫🧑‍🏫📚📖

- [#1284](https://github.com/ho-nl/m2-pwa/pull/1284) [`5ffcb56bf`](https://github.com/ho-nl/m2-pwa/commit/5ffcb56bfcbe49ebeaf24f9341e819a145ab9a14) Thanks [@paales](https://github.com/paales)! - SvgIcon is now more extenable and flexible:

- It will automatically calculate the stroke-width of the SVG based on the rendered size, allowing for a more flexible use for icons.

- Make SvgIcon themable in your own Theme.
Expand Down
62 changes: 41 additions & 21 deletions docs/feature-list.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ metaUrl: magento-open-source-full-feature-list-with-graphcommerce

- [Feature] GraphCommerce _unique_ feature
- [Commerce] Requires Adobe Commerce
- [Pro] Requires [GraphCommerce Pro](./gc-pro)

</div>

Expand Down Expand Up @@ -86,9 +87,11 @@ Features taken from the Magento Commerce 2 Feature List
[Enhanced]
- [x] Blend content and commerce by adding products to content pages and rich
content to product pages. — [Enhanced]
- [x] Create reusable dynamic blocks targeted to customer segments. — [Commerce]
- [x] Create reusable dynamic blocks targeted to customer segments. — [Pro]
`@graphcommerce/adobe-commerce-dynamic-blocks`
- [x] Easily stage and preview content for seamless updates. — [Partial]
- [x] Manage upcoming site changes with a timeline dashboard. - [Commerce]
- [x] Manage upcoming site changes with a timeline dashboard. — [Pro]
`@graphcommerce/adobe-commerce` (staging preview)
- [x] Organize content pages and add pagination, navigation, and menus with a
page hierarchy tool. — [Enhanced]
- [x] Track and restore previous versions of content pages. — [Enhanced]
Expand All @@ -110,7 +113,8 @@ Features taken from the Magento Commerce 2 Feature List
- [x] Decrease time to market using the multi-language Venia reference
storefront. — [Enhanced]
- [x] Give marketers control with Page Builder to manage content and layouts on
PWA Studio-powered storefronts. — [Enhanced]
PWA Studio-powered storefronts. — [Pro]
`@graphcommerce/magento-pagebuilder`
- [x] Build PWA experiences using open standards including React, Redux, and
Webpack. — [Enhanced]
- [x] Boost developer productivity with real-time, guided development. —
Expand Down Expand Up @@ -158,6 +162,11 @@ Features taken from the Magento Commerce 2 Feature List
automated sorting rules. — [Commerce]
- [ ] Control which products and categories can be viewed by each customer
group. — [Commerce]
- [x] Hide prices for guest users with "Login for prices" messaging. — [Pro]
`@graphcommerce/magento-private-pricing`
- [x] Frontend price display mode switcher (Incl./Excl. VAT). — [Pro]
`@graphcommerce/magento-price-view`
`@graphcommerce/magento-price-view-vat`
- [x] Show side-by-side product comparisons with two or more products. —
[Enhanced]
- [x] Display recently viewed products. — [Enhanced]
Expand Down Expand Up @@ -224,8 +233,13 @@ Features taken from the Magento Commerce 2 Feature List
checkout thank you page.
- [x] Allow customers to save their shopping carts to complete their purchases
later.
- [ ] Offer gift wrapping and gift messages per order and per item. — [Todo]
- [ ] Configure pricing and taxes for gift-wrapping options. — [Todo]
- [x] Manage multiple shopping carts per customer. — [Pro]
`@graphcommerce/magento-multi-cart`
- [x] Offer gift wrapping and gift messages per order and per item. — [Pro]
`@graphcommerce/adobe-commerce-gift-wrapping`
`@graphcommerce/magento-gift-message`
- [x] Configure pricing and taxes for gift-wrapping options. — [Pro]
`@graphcommerce/adobe-commerce-gift-wrapping`
- [x] Manage complex tax calculations and prepare signature-ready returns with
Vertex.
- [x] Improve order processing capacity with the option to defer stock updates
Expand Down Expand Up @@ -264,8 +278,8 @@ Features taken from the Magento Commerce 2 Feature List
for split fulfillment.
- [x] Print invoices, packing slips, and shipping labels.
- [x] Create custom order status labels to track progress.
- [ ] Use return management authorization (RMA) to efficiently process returns.
— [Commerce]
- [x] Use return management authorization (RMA) to efficiently process returns.
— [Pro] `@graphcommerce/adobe-commerce-returns`
- [x] Enable customer service representatives to create orders and customer
accounts.
- [x] Allow customer service to update products, prices, and coupons in
Expand All @@ -280,17 +294,18 @@ Features taken from the Magento Commerce 2 Feature List

### Customer loyalty

- [ ] Offer reward points for purchases, registration, product reviews and other
actions. — [Commerce]
- [ ] Configure reward point redemption rules, caps, and expiration dates. —
[Commerce]
- [ ] Enable customers to save products to multiple wish lists that can be made
public. — [Commerce]
- [ ] Allow customers to create gift registries and send emails to shop the
registry. — [Commerce]
- [ ] Automatically update item counts and notify the registry owner as
purchases are made. — [Commerce]
- [x] Allow customers to purchase physical and virtual gift cards. — [Commerce]
- [x] Offer reward points for purchases, registration, product reviews and other
actions. — [Pro] `@graphcommerce/adobe-commerce-reward-points`
- [x] Configure reward point redemption rules, caps, and expiration dates. —
[Pro] `@graphcommerce/adobe-commerce-reward-points`
- [x] Enable customers to save products to multiple wish lists that can be made
public. — [Pro] `@graphcommerce/adobe-commerce-multi-wishlists`
- [x] Allow customers to create gift registries and send emails to shop the
registry. — [Pro] `@graphcommerce/adobe-commerce-gift-registry`
- [x] Automatically update item counts and notify the registry owner as
purchases are made. — [Pro] `@graphcommerce/adobe-commerce-gift-registry`
- [x] Allow customers to purchase physical and virtual gift cards. — [Pro]
`@graphcommerce/adobe-commerce-gift-c`
- [ ] Offer exclusive shopping experiences with private or flash sale sites. —
[Commerce]
- [ ] Streamline re-ordering by enabling shoppers to add products to the cart by
Expand All @@ -307,9 +322,10 @@ Features taken from the Magento Commerce 2 Feature List
- [x] See order status and history.
- [x] Re-order from the customer account.
- [x] View recently ordered items.
- [x] Track available store credits — [Commerce]
- [ ] Track gift card totals — [Commerce]
- [ ] Track reward points — [Commerce]
- [x] Track available store credits — [Pro]
`@graphcommerce/adobe-commerce-store-credit`
- [x] Track gift card totals — [Pro] `@graphcommerce/adobe-commerce-gift-c`
- [x] Track reward points — [Pro] `@graphcommerce/adobe-commerce-reward-points`
- [x] Manage newsletter subscriptions.
- [x] View submitted product reviews.
- [ ] Access downloadable/digital products. — [Todo]
Expand Down Expand Up @@ -461,6 +477,10 @@ Features taken from the Magento Commerce 2 Feature List
[Feature]
- [x] Accelerate site performance with image compression, srcset, and edge CDN
level caching. — [Feature]
- [x] Near-realtime SSG revalidation via webhooks from Magento/Hygraph. — [Pro]
`@graphcommerce/cache-notify`
- [x] Cache GraphQL POST requests in Varnish. — [Pro]
`@graphcommerce/graphql-mesh-cache-varnish`

### Managed cloud

Expand Down
77 changes: 77 additions & 0 deletions docs/framework/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,73 @@ GoogleDatalayerConfig to allow enabling certain aspects of the datalayer

Enable core web vitals tracking for GraphCommerce

### GraphCommerceAlgoliaConfig

Algolia configuration for GraphCommerce.

#### applicationId: string (required)

Configure your Algolia application ID. [Algolia API Keys Dashboard](https://www.algolia.com/account/api-keys)

#### indexNamePrefix: string (required)

Stores > Configuration > Algolia Search > Credentials and Basic Setup > Index name prefix

#### searchOnlyApiKey: string (required)

Configure your Search API Key. [Algolia API Keys Dashboard](https://www.algolia.com/account/api-keys)

Make sure the API key has the following ACL: search, listIndexes and settings [Lookup here](https://dashboard.algolia.com/account/api-keys/restricted)

#### catalogEnabled: boolean

By default the catalog will not use algolia. Set this to true to enable Algolia for the catalog.

#### customerGroupPricingEnabled: boolean

Enable Algolia customer group pricing.

Please be aware that personalization needs to be enabled to make this work.

#### frequentlyBoughtTogether: CROSSSELL_PRODUCTS | DISABLED | RELATED_PRODUCTS | UPSELL_PRODUCTS

https://www.algolia.com/doc/guides/algolia-recommend/overview/#frequently-bought-together

Set the location where the frequently bought together model should be shown.
Good default is CROSSSELL_PRODUCTS, which is shown on the Cart page.

Before enabling, make sure the model is trained in Algolia.
Do not assign multiple recommendation models to the same location.

#### lookingSimilar: CROSSSELL_PRODUCTS | DISABLED | RELATED_PRODUCTS | UPSELL_PRODUCTS

https://www.algolia.com/doc/guides/algolia-recommend/overview/#looking-similar

Set the location where the looking similar model should be shown.
Good default is UPSELL_PRODUCTS, which is shown on the Product page by default.

Before enabling, make sure the model is trained in Algolia.
Do not assign multiple recommendation models to the same location.

#### relatedProducts: CROSSSELL_PRODUCTS | DISABLED | RELATED_PRODUCTS | UPSELL_PRODUCTS

https://www.algolia.com/doc/guides/algolia-recommend/overview/#related-products-and-related-content

Set the location where the related products model should be shown.
Good default is RELATED_PRODUCTS, which is shown on the Product page by default.

Before enabling, make sure the model is trained in Algolia.
Do not assign multiple recommendation models to the same location.

#### suggestionsSuffix: string

To enable Algolia suggestions, please provide the Suffix that is used for your suggestions index.

The pattern is `${indexNamePrefix}_{storeCode}_{suggestionsSuffix}`.
Something like `_suggestions` or `_query_suggestions`

For the index `magento2_demo_en_US_suggestions` this would be `_suggestions`

# GraphCommerce configuration system

Global GraphCommerce configuration can be configured in your `graphcommerce.config.js` file
Expand Down Expand Up @@ -85,6 +152,12 @@ Below is a list of all possible configurations that can be set by GraphCommerce.

### GraphCommerceConfig

#### algolia: [GraphCommerceAlgoliaConfig](#GraphCommerceAlgoliaConfig) (required)

Configure your Algolia application ID.

Stores > Configuration > Algolia Search > Credentials and Basic Setup > Application ID

#### canonicalBaseUrl: string (required)

The canonical base URL is used for SEO purposes.
Expand Down Expand Up @@ -399,6 +472,10 @@ Allows customers to change their billing address or locks it down.

Changes the availability of the add to cart buttons and the cart page to either customer only or completely disables it.

#### catalogPricing: CUSTOMER_ONLY | ENABLED

Permissions to show the catalog pricing on the frontend.

#### checkout: CUSTOMER_ONLY | DISABLED | ENABLED

Changes the availability of the checkout to either customer only or completely disables it.
Expand Down
Loading
Loading