Vue
Use the Vue package for the provider and effects. Choose the helper for the router already installed in your app.
Common setup
Install @ssgoi/vue and keep one Ssgoi provider above RouterView or NuxtPage. It receives the shared route configuration.
import { Ssgoi } from "@ssgoi/vue";
import { drill } from "@ssgoi/vue/view-transitions";Vue Router
Experimental APIUse the helper with Vue Router 4 inside the common Vue provider.
Wrap the routed region
The boundary follows the committed router path and replaces its DOM root when the route key changes.
<script setup lang="ts">
import { RouterView } from "vue-router";
import { SsgoiRouteBoundary } from "@ssgoi/vue/vue-router";
</script>
<template>
<SsgoiRouteBoundary><RouterView /></SsgoiRouteBoundary>
</template>Persistent shells
Use routeKey for the outer shell and a changing inner boundary for the page. resolve receives { pathname } and returns { id, key? }.
Nuxt
Experimental APIUse the Nuxt-specific entry inside the common Vue provider. It observes the committed router state rather than Nuxt’s delayed useRoute value.
Wrap NuxtPage
Keep the provider above the layout and page. Do not add a provider for every page.
<script setup lang="ts">
import { SsgoiRouteBoundary } from "@ssgoi/vue/nuxt";
</script>
<template>
<SsgoiRouteBoundary><NuxtPage /></SsgoiRouteBoundary>
</template>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 the nested <NuxtPage />. 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.