Skip to content

Releases: graphcommerce-org/graphcommerce

Release 10.1.0-canary.26

12 Jun 14:21

Choose a tag to compare

Pre-release
chore(release): update prerelease versions

Release 10.1.0-canary.25

04 Jun 13:44

Choose a tag to compare

Pre-release

@graphcommerce/magento-cart@10.1.0-canary.25

Patch Changes

@graphcommerce/next-ui@10.1.0-canary.25

Minor Changes

  • #2637 bdaa6ec - Refactored LayoutNavigation into composable pieces (Header, HeaderContainer, MenuOverlay, project-local LayoutDefault). LayoutDefault / LayoutDefaultProps in @graphcommerce/next-ui are marked @deprecated. If you are upgrading and do not want these changes, you can just discard them. This is just a structural change for more ease of use. No visually change. (@bramvanderholst)

Patch Changes

Release 10.1.0-canary.24

01 Jun 11:48

Choose a tag to compare

Pre-release

@graphcommerce/next-config@10.1.0-canary.24

Patch Changes

  • #2636 78f9803 - Fix Turbopack panic ("Cannot find module …graphcommerce.config.cjs") when loading graphcommerce.config.ts. cosmiconfig's sync TypeScript loader transpiles the config to a fixed temp .cjs path on disk and deletes it again, which races between Next.js worker processes. The .ts loader now transpiles via SWC and writes to a per-process unique filename next to the source so concurrent loads never collide. (@bramvanderholst)

Release 10.1.0-canary.23

29 May 09:20

Choose a tag to compare

Pre-release

@graphcommerce/graphql@10.1.0-canary.23

Patch Changes

  • #2634 06082ad - Make GraphCommerce compatible with Apollo Client 4.2+ by augmenting Apollo's DefaultOptions type with the preview extension and the SSR clients' errorPolicy: 'all' default. (@bramvanderholst)

@graphcommerce/storyblok-ui@10.1.0-canary.23

Patch Changes

Release 10.1.0-canary.22

20 May 15:14

Choose a tag to compare

Pre-release

@graphcommerce/magento-product@10.1.0-canary.22

Minor Changes

  • #2627 95c188f - Add YoutubeEmbed component — a lightweight lazy-loading YouTube player that defers iframe creation until the user clicks the poster. Uses preconnect on hover for fast playback start and is styled with MUI sx, so no external CSS is required. Supports playlists, no-cookie mode, custom aspect ratios and ad-network preconnect hints.

    ProductVideo (used by ProductPageGallery) now delegates YouTube playback to YoutubeEmbed, so any product whose Magento media_gallery contains a YouTube video entry gets the new lazy-loading player on its product page. Vimeo and self-hosted video paths are unchanged. The Magento preview image is passed as the YoutubeEmbed thumbnail so the visible poster stays consistent with the rest of the gallery.

    Fix SidebarGallery so it forwards the Additional and slotProps from each image to MotionImageAspect. Before this fix the gallery silently dropped both props, which meant any Additional overlay configured by ProductPageGallery (the <ProductVideo> overlay with its PlayCircle and the new YoutubeEmbed) never reached the DOM. That was a latent regression that made all video-gallery entries render as static images, with or without this PR's YouTube changes.

    Fix playwright.config.ts so npx playwright test actually loads. The config previously imported examples/magento-graphcms/next.config.ts, which transitively pulled @graphcommerce/next-config's ESM build into a CJS context and crashed with ReferenceError: exports is not defined. Replaced with an opt-in PLAYWRIGHT_LOCALES env var for the multi-locale projects that the next.config import was meant to drive. (@paales)

@graphcommerce/next-ui@10.1.0-canary.22

Minor Changes

  • #2627 95c188f - Add YoutubeEmbed component — a lightweight lazy-loading YouTube player that defers iframe creation until the user clicks the poster. Uses preconnect on hover for fast playback start and is styled with MUI sx, so no external CSS is required. Supports playlists, no-cookie mode, custom aspect ratios and ad-network preconnect hints.

    ProductVideo (used by ProductPageGallery) now delegates YouTube playback to YoutubeEmbed, so any product whose Magento media_gallery contains a YouTube video entry gets the new lazy-loading player on its product page. Vimeo and self-hosted video paths are unchanged. The Magento preview image is passed as the YoutubeEmbed thumbnail so the visible poster stays consistent with the rest of the gallery.

    Fix SidebarGallery so it forwards the Additional and slotProps from each image to MotionImageAspect. Before this fix the gallery silently dropped both props, which meant any Additional overlay configured by ProductPageGallery (the <ProductVideo> overlay with its PlayCircle and the new YoutubeEmbed) never reached the DOM. That was a latent regression that made all video-gallery entries render as static images, with or without this PR's YouTube changes.

    Fix playwright.config.ts so npx playwright test actually loads. The config previously imported examples/magento-graphcms/next.config.ts, which transitively pulled @graphcommerce/next-config's ESM build into a CJS context and crashed with ReferenceError: exports is not defined. Replaced with an opt-in PLAYWRIGHT_LOCALES env var for the multi-locale projects that the next.config import was meant to drive. (@paales)

@graphcommerce/misc@10.1.0-canary.22

Patch Changes

  • #2627 95c188f - Add YoutubeEmbed component — a lightweight lazy-loading YouTube player that defers iframe creation until the user clicks the poster. Uses preconnect on hover for fast playback start and is styled with MUI sx, so no external CSS is required. Supports playlists, no-cookie mode, custom aspect ratios and ad-network preconnect hints.

    ProductVideo (used by ProductPageGallery) now delegates YouTube playback to YoutubeEmbed, so any product whose Magento media_gallery contains a YouTube video entry gets the new lazy-loading player on its product page. Vimeo and self-hosted video paths are unchanged. The Magento preview image is passed as the YoutubeEmbed thumbnail so the visible poster stays consistent with the rest of the gallery.

    Fix SidebarGallery so it forwards the Additional and slotProps from each image to MotionImageAspect. Before this fix the gallery silently dropped both props, which meant any Additional overlay configured by ProductPageGallery (the <ProductVideo> overlay with its PlayCircle and the new YoutubeEmbed) never reached the DOM. That was a latent regression that made all video-gallery entries render as static images, with or without this PR's YouTube changes.

    Fix playwright.config.ts so npx playwright test actually loads. The config previously imported examples/magento-graphcms/next.config.ts, which transitively pulled @graphcommerce/next-config's ESM build into a CJS context and crashed with ReferenceError: exports is not defined. Replaced with an opt-in PLAYWRIGHT_LOCALES env var for the multi-locale projects that the next.config import was meant to drive. (@paales)

Release 10.1.0-canary.21

20 May 14:36

Choose a tag to compare

Pre-release

@graphcommerce/next-ui@10.1.0-canary.21

Patch Changes

  • #2633 7554ad4 - Fix: <Fab variant="extended"> no longer gets a fixed width from MuiFabSizes. The size-based width/height variants are now scoped to variant: 'circular' only, so extended Fabs can grow with their label (controlled via min-width instead) as MUI intends. Previously every extended Fab without an explicit size matched the default large rule and was forced to 54px wide. (@paales)

Release 10.1.0-canary.20

20 May 14:29

Choose a tag to compare

Pre-release

@graphcommerce/next-config@10.1.0-canary.20

Patch Changes

  • #2632 c25106b - Regenerate the mergeEnvIntoConfig snapshot so yarn test passes on canary. The test input already feeds GC_DEMO_MODE and GC_STOREFRONT_<i>_HYGRAPH_LOCALES_0 into the env-schema parser, but the snapshot it was compared against still reflected the pre-demoMode / pre-flattened-hygraphLocales schema, so every CI run since those config fields were added has been failing the test job on every PR with a snapshot mismatch unrelated to the PR's own changes. (@paales)

Release 10.1.0-canary.18

20 May 13:09

Choose a tag to compare

Pre-release

@graphcommerce/misc@10.1.0-canary.18

Patch Changes

  • #2629 ab82fcf - Clarify the type-check workflow in CLAUDE.md: type checking is per-example only, and optional/private packages must be activated via PRIVATE_ADDITIONAL_DEPENDENCIES and codegen must be re-run before tsgo sees their fragments. (@paales)

Release 10.1.0-canary.17

20 May 12:04

Choose a tag to compare

Pre-release

@graphcommerce/hygraph-dynamic-rows-ui@10.1.0-canary.17

Patch Changes

  • #2623 241576a - Bump Next.js from 16.1.1 to 16.2.6 across the framework and example storefronts. Also bumps the matching @next/env and @next/eslint-plugin-next pins. (@paales)

@graphcommerce/magento-customer@10.1.0-canary.17

Minor Changes

  • #2624 cbad1fd - CustomerUpdateForm now accepts useFormGqlOptions and mutationOptions props that get forwarded to its underlying useCustomerUpdateForm hook. Lets consumers attach an onComplete (e.g. to close an overlay and navigate back on a successful save), an onBeforeSubmit (to amend or veto the variables), or any other option already supported by useFormGqlMutation/useMutation — without having to drop down and rebuild the form from scratch.

    Defaults preserve existing behaviour, so the change is backwards compatible. (@paales)

@graphcommerce/eslint-config-pwa@10.1.0-canary.17

Patch Changes

  • #2623 241576a - Bump Next.js from 16.1.1 to 16.2.6 across the framework and example storefronts. Also bumps the matching @next/env and @next/eslint-plugin-next pins. (@paales)

@graphcommerce/misc@10.1.0-canary.17

Patch Changes

  • #2622 f310cfd - Add yarn packages:build one-shot script and document the packagesDev/* rebuild workflow in CLAUDE.md. Also adds guidance on changeset bump-type selection (avoid major) and the @graphcommerce/misc fallback for docs-only / placeless changes. (@paales)

Release 10.1.0-canary.13

20 May 10:44

Choose a tag to compare

Pre-release

@graphcommerce/magento-customer@10.1.0-canary.13

Minor Changes

  • #2620 43a0ed2 - SignUpForm now accepts fieldsets and render props (mirroring CustomerUpdateForm), so consumers can group dynamic customer attributes into custom labelled sections via AttributesFormAutoLayout. Defaults to the existing [nameFieldset(attributes)] / CustomerAttributeField behaviour, so unchanged for projects that don't supply the props.

    This avoids the unstyled, untranslated Other fallback header that AttributesFormAutoLayout adds whenever attributes don't fit any registered fieldset — projects that extend the customer schema (e.g. with a club attribute) can now declare their own fieldset alongside nameFieldset.

    The fallback header itself in AttributesFormAutoLayout is now wrapped in <Trans>Other</Trans> so it picks up project translations instead of rendering as a hardcoded English string.

    Bug fix in nameFieldset: when a store doesn't register dob/gender on the registration form, the additional row was empty and the helper produced grid-template-areas: "firstname lastname" "", which is invalid CSS and made the whole declaration fall back to the default single-column layout — firstname/lastname stacked on separate rows even at md+. Empty rows are now filtered out, so the side-by-side md layout works as intended. (@paales)

@graphcommerce/magento-store@10.1.0-canary.13

Patch Changes

  • #2625 539b353 - CustomAttributesField_to_AttributeValueInputs was filtering out any falsy form value (if (!value) return), so empty strings and false booleans never made it into the resulting AttributeValueInput[]. That meant a consumer who picked the empty-string option of a SELECT attribute (e.g. a "-- None --" option used to undo a previous choice) couldn't actually clear the attribute — the mutation simply omitted it and Magento kept the old value.

    Skip only when the value is undefined (the attribute was never touched). Pass empty strings and false booleans through to the mutation so the backend can interpret them as "clear this attribute". (@paales)

  • #2620 43a0ed2 - SignUpForm now accepts fieldsets and render props (mirroring CustomerUpdateForm), so consumers can group dynamic customer attributes into custom labelled sections via AttributesFormAutoLayout. Defaults to the existing [nameFieldset(attributes)] / CustomerAttributeField behaviour, so unchanged for projects that don't supply the props.

    This avoids the unstyled, untranslated Other fallback header that AttributesFormAutoLayout adds whenever attributes don't fit any registered fieldset — projects that extend the customer schema (e.g. with a club attribute) can now declare their own fieldset alongside nameFieldset.

    The fallback header itself in AttributesFormAutoLayout is now wrapped in <Trans>Other</Trans> so it picks up project translations instead of rendering as a hardcoded English string.

    Bug fix in nameFieldset: when a store doesn't register dob/gender on the registration form, the additional row was empty and the helper produced grid-template-areas: "firstname lastname" "", which is invalid CSS and made the whole declaration fall back to the default single-column layout — firstname/lastname stacked on separate rows even at md+. Empty rows are now filtered out, so the side-by-side md layout works as intended. (@paales)

@graphcommerce/next-config@10.1.0-canary.13

Patch Changes

  • #2621 4eccccd - graphcommerce cleanup-interceptors now actually finds and restores .original.tsx / .original.ts files when run from a consumer project. Previously findDotOriginalFiles walked up looking for a @graphcommerce/* parent package; from a consumer project (where there is no such parent) parentPath ended up null and the glob expanded to literally null/**/*.original.tsx, so the command silently restored nothing. Now it falls back to cwd and cwd/node_modules/@graphcommerce where interceptors actually live for consumers.

    Also fixes a display bug — the final X files restored from .original line printed an always-0 counter (restoredCount was declared but never incremented; the now-removed removedCount was the one being incremented). Counter and message are now consistent. (@paales)