Solid
Use the Solid package for common rendering and effects. Solid Router and SolidStart share the same boundary implementation.
Common setup
Install @ssgoi/solid and keep one Ssgoi provider above the routed children. The provider is independent of Solid Router.
import { Ssgoi } from "@ssgoi/solid";
import { drill } from "@ssgoi/solid/view-transitions";Solid Router
Experimental APIUse the Solid Router entry for Solid applications. SolidStart’s existing entry uses this same implementation.
Wrap the routed children
The keyed boundary recreates the changing region while routeKey can preserve an outer shell.
import { SsgoiRouteBoundary } from "@ssgoi/solid/solid-router";
<SsgoiRouteBoundary>{props.children}</SsgoiRouteBoundary>Route lifetime
The default key follows the pathname. resolve can return separate id and key values; use a stable shell key only around content that should remain mounted.
SolidStart
Experimental APIUse the same Solid Router boundary through the SolidStart entry.
Setup
// src/app.tsx
import { Router } from "@solidjs/router";
import { FileRoutes } from "@solidjs/start/router";
import { Suspense } from "solid-js";
import { Ssgoi } from "@ssgoi/solid";
import { SsgoiRouteBoundary } from "@ssgoi/solid/solidstart";
import { drill } from "@ssgoi/solid/view-transitions";
const config = {
transitions: [{ on: "/**", except: "/", transition: drill() }],
};
export default function App() {
return (
<Router root={(props) => (
<main class="relative z-0 min-h-dvh overflow-x-clip">
<Ssgoi config={config}>
<Suspense>
<SsgoiRouteBoundary>{props.children}</SsgoiRouteBoundary>
</Suspense>
</Ssgoi>
</main>
)}>
<FileRoutes />
</Router>
);
}Beyond the basics
For a persistent /products shell, return the full pathname as id and /products as key from the root boundary's resolve, then put a second default pathname boundary only around props.children in routes/products.tsx. The stable outer key preserves header/tabs; the inner boundary produces child transitions.
The helpers connect your router to the common implementation. Route boundaries explains how to connect another router directly. Transitions and route rules apply across the web frameworks.