SSGOI 7.5.0 promotes the 7.5 beta to the stable npm latest tag. All eight @ssgoi/* packages release in lockstep. These notes also cover 7.4.1, which shipped to npm without a GitHub release.
Highlights since 7.4.0
- Router injection and layout boundaries: Pass your router to
<Ssgoi framework={...}>and wrap layouts inSsgoiLayoutBoundary, which takes no SSGOI props. Persistent layouts are declared once inconfig.layoutsas a tree of{ paths, except?, layouts? }; depth comes from nesting. Every binding gets the same model: React, Vue, Solid, Svelte, Angular (*ssgoiLayoutBoundary), Qwik (useSsgoiLayoutBoundary()), and Expo. #456 - Next.js Cache Components: React adds
SsgoiPageBoundaryfor routes kept alive inside<Activity>. It never re-keys; SSGOI turns the route's own hide/show into the exit and entry transitions. Put it on every route-group layout and page, and keep only<Ssgoi>in the root layout. #456 - Late-arriving pages: Hero and zoom wait up to 500 ms for a shared element that mounts after the page boundary, so a slow Suspense body no longer cuts the navigation. With no pair, hero falls back to its chrome crossfade. When the router removes or hides the outgoing page before the next one arrives, that page stays on screen at its scroll position, and going Back restores the position it had. #457
- Transition state hooks:
getTransitionState()/subscribe()on the core context, plususeSsgoiTransition()(React, Vue, Solid, Qwik),getSsgoiTransition()(Svelte), andinjectSsgoiTransition()(Angular). Use them to delay anchor jumps,scrollIntoView, or focus until the transition ends. #444 - WebKit memory (7.4.1): Canceled or finished animations no longer keep detached pages alive. After 40 departed pages, retained node wrappers dropped from 10,280 to 257 in WebKit. #448, #449
- Backdrop filters (7.4.1): Moving pages use
contain: layoutinstead ofcontain: layout paint, so a descendantbackdrop-filter: url(#…)is no longer dropped in Chromium. A moving page no longer clips content that overflows its own box. #443 - Smaller fixes: TanStack Router boundaries are keyed by the rendered match, the React Router template skips a hoisted
react-router-dom, and the npm descriptions mention PWAs and WebViews. #445
Deprecations
Router subpaths (for example @ssgoi/react/nextjs), SsgoiTransition, and @ssgoi/react/unplugin are deprecated and will be removed in 8.0.0. Their import paths still work in 7.x. The resolve + routeKey boundary props are replaced by a single boundary input.
Upgrade
Install the matching 7.5.0 version of every @ssgoi/* package in use:
npm install @ssgoi/react@7.5.0If you use SsgoiPageBoundary, read route params from the page's params prop, not useParams() / usePathname(): hidden kept-alive routes re-render against the current URL. Next.js reordering kept-alive routes can still reset inner scroll positions and reload iframes; see the Cache Components docs (vercel/next.js#98623).
The Next.js agent quick start at https://ssgoi.dev/llms.txt now points to 7.5.0.
Validation: all eight package builds; core 406, React 60, Svelte 14, Solid 8, Qwik 6, Angular 10, and React Native 25 tests pass. Vue passes 7 of 8: one test checks synchronously that the old boundary node has left the DOM, and core now removes it one microtask later, before any paint. Router export, docs, and isolation checks pass. The browser suite was not re-run for this release; 7.5.0-beta.9 has been in production on Comwit.
Full changelog: v7.4.0...v7.5.0