Skip to content

Release January 20, 2026#2582

Open
github-actions[bot] wants to merge 218 commits into
mainfrom
changeset-release/from-canary
Open

Release January 20, 2026#2582
github-actions[bot] wants to merge 218 commits into
mainfrom
changeset-release/from-canary

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated release PR from canary branch

@vercel

vercel Bot commented Jan 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
graphcommerce-246 Ready Ready Preview Jul 2, 2026 11:52am
graphcommerce-247 Ready Ready Preview Jul 2, 2026 11:52am
graphcommerce-hygraph-dynamic-rows-ui Ready Ready Preview Jul 2, 2026 11:52am
graphcommerce-open-source Ready Ready Preview Jul 2, 2026 11:52am
graphcommerce-storyblok Ready Ready Preview Jul 2, 2026 11:52am

Request Review

DivaniNL and others added 30 commits June 1, 2026 09:23
…w local LayoutDefault in new LayoutNavigation

Unchaged for now (except import paths). Changes coming in next commits.
… components

LayoutNavigation was a big file that mixed the navigation overlay,
the header content, and the layout shell.
Customizing the header — sticky behavior, owning the container styling,
or adding a beforeHeader slot — required forking the whole file or
copying chunks of @graphcommerce/next-ui's LayoutDefault.

The header is now four reusable pieces:

  - HeaderContainer  the <Container component='header'> wrapper, lifted
                     out of LayoutDefault so each project owns its
                     header container.
  - Header           the header content (Logo, DesktopNavBar,
                     DesktopNavActions, MobileTopRight).
  - MenuOverlay      the NavigationProvider + NavigationOverlay.
  - LayoutDefault    a local copy that renders the `header` slot raw,
                     since the wrapping now lives in HeaderContainer.

Keeping LayoutDefault as a project-local copy makes the layout shell
itself customizable: tweaking the grid, the fab container, the
beforeHeader slot or the sticky behavior no longer requires patching
@graphcommerce/next-ui or copying the file — the example owns it.
Combined with the extracted Header / MenuOverlay / HeaderContainer,
projects can override any single piece without forking the rest.

LayoutNavigation becomes a slim orchestrator that composes them.
LayoutMinimal is updated to use the same local LayoutDefault +
HeaderContainer so both layouts share the canonical header pattern.

There is no visual change:
HeaderContainer carries the same styling that the
header slot of next-ui's LayoutDefault used to apply.
Blog pages never fetched the global config in getStaticProps, so
GlobalConfigProvider received undefined and the footer
rendered empty. Add fetchGlobalConfig + globalConfig prop to the blog
index/post/tagged pages, matching the pattern in pages/[...url].tsx.
…content

fix: fetch globalConfig on blog pages so global content renders
storyblok-js-client pins the space cache-version (cv) per process on the first
published request and never refreshes it (cache.clear defaults to 'manual'), so
published content stays frozen at the process-start cv until restart. On
long-lived servers (multi-pod Kubernetes) published edits never become visible.

Add refreshStoryblokCacheVersion(), which re-fetches cdn/spaces/me at most once
per the new storyblok.cacheVersionTtl config (seconds, default 60; 0 refreshes
on every read) to advance the pinned cv, and call it before published
fetchStory/fetchStories/fetchAllStories reads. Skipped for preview/draft and in
dev. Exported so on-demand revalidation can force an immediate refresh.
@tiptap/suggestion (pulled in transitively via @storyblok/react →
@storyblok/richtext) declares @floating-ui/dom as a peerDependency, which Yarn
does not auto-install. Nothing provided it, so production builds failed with
"Module not found: Can't resolve '@floating-ui/dom'". Declare it directly in the
example so it ships with the seed project.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…storyblok

feat(storyblok-ui): refresh pinned Storyblok cache-version on a TTL
…ning

On-demand revalidation had to call refreshStoryblokCacheVersion(), which calls
getStoryblokApi(); in a context where storyblokInit has not run (e.g. a
serverless cache-notify route) that logs "You can't use getStoryblokApi if
you're not loading apiPlugin". Replace it with the exported
requestStoryblokCacheVersionRefresh(), which only flips a flag the next
published read consumes — it never touches the Storyblok client, so it never
warns. The internal refresh keeps running in the fetch functions, where
Storyblok is always initialized.

The previously exported refreshStoryblokCacheVersion() is removed;
use requestStoryblokCacheVersionRefresh() instead.
…storyblok

fix(storyblok-ui): flag-based cache-version refresh, no apiPlugin war…
Bug: The `up` (back/breadcrumb) link title is a Lingui `t` macro string,
but it was constructed inline in the returned `props` object, after
`await`ing the layout/page/config GraphQL queries. Lingui translates
against a single global active-locale i18n instance, so a concurrent
static-generation request for a different locale could call
`i18n.activate()` during those awaits and cause the `t\`...\`` title to be
rendered in the wrong language for the page being generated.

Fix: Compute the `up` object (and its `t\`...\`` title) synchronously at
the top of every affected `getStaticProps`, before any `await` yields
control, so the translation is captured with the correct locale for the
current request. Applied uniformly across the magento-graphcms,
magento-open-source, and magento-storyblok example pages and the
demo-magento-graphcommerce copy pages.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…b-locale-race

Fix/i18n up breadcrumb locale race
Disabled PaginationItems were still given a `component`/`href`, turning
them into anchors. Crawlers follow those links to an unbounded number of
list pages, needlessly building up the static page cache.

Only pass `component`/`href` when the item is enabled; disabled items
fall back to a plain button, so bots no longer have a link to crawl.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ed-no-link

fix(next-ui): don't render disabled pagination items as links
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants