@ssgoi/vue
| Install | |
|---|---|
npm install @ssgoi/vue |
|
| Latest Version: | 7.4.1 |
| Vue: | 3 |
| License: | MIT |
| Last Updated: | Oct 12, 2026 |
| Links: | GitHub · npm |
@ssgoi/vue
Native app-like page transitions for Vue and Nuxt. Make a web app, PWA or WebView app (Capacitor, Tauri, Ionic) feel like a native app without replacing your router.
Live demos · Hero, Zoom, Film, and Sheet in motion
npm install @ssgoi/vue
Agent setup guide: https://ssgoi.dev/llms/vue.txt
Router helpers
Install this framework package once; router helpers are optional subpaths. These router helpers are experimental APIs and may change.
| Router | Import | API |
|---|---|---|
| Vue Router | @ssgoi/vue/vue-router |
SsgoiRouteBoundary |
| Nuxt | @ssgoi/vue/nuxt |
SsgoiRouteBoundary |
See the framework guide for wiring and limits.
Root
<script setup lang="ts">
import { Ssgoi } from "@ssgoi/vue";
import { drill } from "@ssgoi/vue/view-transitions";
const config = {
transitions: [{ on: "/posts/**", except: "/posts", transition: drill() }],
};
</script>
<template>
<main class="ssgoi-shell">
<Ssgoi :config="config">
<NuxtPage />
</Ssgoi>
</main>
</template>
<style>
.ssgoi-shell {
position: relative;
z-index: 0;
min-height: 100dvh;
overflow-x: clip;
}
</style>
Route boundary
Mark page roots:
<template>
<section data-ssgoi-transition="/posts">Posts</section>
</template>
Dynamic route:
<section :data-ssgoi-transition="`/posts/${route.params.id}`">
...
</section>
Persistent layouts
Use the parent page/layout as the outer boundary and child page roots as inner boundaries:
<template>
<section :data-ssgoi-transition="route.path">
<ProductTabs />
<NuxtPage />
</section>
</template>
Nuxt keeps the parent during child navigation. Leaving the parent uses the outer boundary; changing a child route uses the child boundary.
If a Vue Router layout reuses the same component where a fresh DOM boundary is required, use a resolved key:
<section :key="resolveKey(route.path)" :data-ssgoi-transition="route.path">
<RouterView />
</section>
Config
import { drill, slide, zoom } from "@ssgoi/vue/view-transitions";
const config = {
transitions: [
{
on: "/posts/**",
except: "/posts",
transition: drill(),
},
{
from: "/gallery",
to: "/gallery/*",
transition: zoom(),
},
{
ordered: ["/tabs/a", "/tabs/b"],
transition: slide(),
},
],
};
Scroll is automatic: on and from/to restore from and reset to;
ordered restores both. Override with
preserveScroll: { from: boolean, to: boolean }, or share one position across
the rule's pages with preserveScroll: "shared".
Effect index
fade: unrelated pages.drill: list → detail.slideoraxis: ordered tabs.sheet: modal-like routes.zoomorhero: shared-element details.scroll: vertical sequences.
All effects: https://ssgoi.dev/llms.txt#7-transition-index
SsgoiTransition is deprecated. Use the data attribute directly.
License
MIT
Related Packages
iOS/Android style page transitions for Vue using View Transitions API
Extend the default layout or create custom layouts for your SPA Vue.js
Theme switch animation library built on the View Transitions API. Works with Rea...
vue-cli 3 plugin Multiple layouts in your SPA with vue-extend-layout
Version History
| Version | Released | License |
|---|---|---|
| 7.4.1 | MIT | |
| 7.4.0 | MIT | |
| 7.3.2 | MIT | |
| 7.3.1 | MIT | |
| 7.3.0 | MIT | |
| 7.2.0 | MIT | |
| 7.1.2 | MIT | |
| 7.1.1 | MIT | |
| 7.1.0 | MIT | |
| 7.0.4 | MIT | |
| 7.0.3 | MIT | |
| 7.0.2 | MIT | |
| 7.0.1 | MIT | |
| 7.0.0 | MIT | |
| 6.6.10 | MIT | |
| 6.6.6 | MIT | |
| 6.6.5 | MIT | |
| 6.6.4 | MIT | |
| 6.5.0 | MIT | |
| 6.4.0 | MIT | |
| 6.3.0 | MIT | |
| 6.2.0 | MIT | |
| 6.1.0 | MIT | |
| 6.0.0 | MIT | |
| 5.2.0 | MIT | |
| 5.0.0 | MIT | |
| 4.0.0 | MIT | |
| 3.1.0 | MIT | |
| 3.0.0 | MIT | |
| 2.5.2 | MIT |
Showing the latest 30 of 35. See every release on npm
Pre-releases (19)
| Version | Released | License |
|---|---|---|
| 7.4.0-beta.3 | MIT | |
| 7.4.0-beta.2 | MIT | |
| 7.4.0-beta.1 | MIT | |
| 7.3.0-beta.4 | MIT | |
| 7.3.0-beta.3 | MIT | |
| 7.3.0-beta.2 | MIT | |
| 7.3.0-beta.1 | MIT | |
| 7.1.3-beta.5 | MIT | |
| 7.1.3-beta.4 | MIT | |
| 7.1.3-beta.3 | MIT | |
| 7.1.3-beta.2 | MIT | |
| 7.1.3-beta.1 | MIT | |
| 7.1.3-beta.0 | MIT | |
| 7.1.0-beta.4 | MIT | |
| 7.1.0-beta.3 | MIT | |
| 7.1.0-beta.2 | MIT | |
| 7.1.0-beta.1 | MIT | |
| 7.1.0-beta.0 | MIT | |
| 7.0.1-beta.0 | MIT |
