# SSGOI
Native app-like page transitions for mobile web apps, PWAs, and WebView apps.
**Router agnostic · Cross-browser · SSR ready · Web Animations API powered**
[Live showcase](https://ssgoi.dev) · [Documentation](https://ssgoi.dev/docs)
| Drill | Sheet |
| :---------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
|
| Navigate through a mobile app with spatial depth | Present focused tasks above the current page |
## Why SSGOI?
| | |
| ---------------------------------- | --------------------------------------------------------------------------- |
| **Router agnostic** | Keep your existing router and let it own navigation. |
| **Cross-browser** | Use the same transitions across Chrome, Safari, Firefox, and Edge. |
| **Optimized motion** | Spring physics are precomputed into Web Animations API keyframes. |
| **Beyond the View Transition API** | Build transitions that need live DOM, runtime layers, and precise geometry. |
| **Easy to adopt** | Add SSGOI by changing only two files. |
---
## Set it up with one link
Give this URL to Claude, Codex, Cursor, or another coding agent:
```text
https://ssgoi.dev/llms.txt
```
It contains the full setup for React and Next.js, Svelte and SvelteKit, Vue and
Nuxt, Solid and SolidStart, Angular, and Qwik.
---
## Or install the agent plugin
The same `mobile-web-app` skill works in Codex and Claude Code.
Codex:
```bash
codex plugin marketplace add meursyphus/ssgoi
codex plugin add ssgoi@ssgoi
```
Claude Code:
```bash
claude plugin marketplace add meursyphus/ssgoi
claude plugin install ssgoi@ssgoi
```
Then ask the agent to apply SSGOI to the current mobile web app. The skill reads
the canonical `llms.txt`, selects the matching framework guide, and follows the
app's existing router and layout structure.
---
## Or add it in just two files
The Next.js setup is one config, one provider, and one simple
ready-made route boundary.
```bash
npm install @ssgoi/react
```
```tsx
// app/ssgoi-provider.tsx
"use client";
import { type ReactNode } from "react";
import { Ssgoi } from "@ssgoi/react";
import { drill } from "@ssgoi/react/view-transitions";
const config = {
transitions: [{ on: "/**", except: "/", transition: drill() }],
};
export function SsgoiProvider({ children }: { children: ReactNode }) {
return
|
|
|
| The whole detail page unfolds from its image | Runtime scene, live video, and multiple springs | A live backdrop sits between the two pages |
[Read why SSGOI doesn't use the View Transition API →](https://ssgoi.dev/blog/view-transition-api-limitations)
---
## License
[MIT Licensed](./LICENSE) © [MeurSyphus](https://github.com/meursyphus)