# qiankun examples
Two identical shells hosting the same five independent micro apps, every one running with the JS
sandbox and runtime style isolation (`@scope`) explicitly enabled. Both mount them with `` from our own
UI bindings — dogfooded rather than bypassed: `main` is the React shell (`@qiankunjs/react`) and
`vue-host` is the Vue one (`@qiankunjs/vue`). See [DESIGN.md](./DESIGN.md) for the shared design language.
They are deployed from `next` to **https://examples.qiankunjs.com** — see [Deployment](#deployment).
| app | port | stack | loading path |
| ------------------ | ---- | --------------------------------------------- | -------------------------------- |
| main | 7099 | React 19 + Vite 8 + Tailwind 4 | host (`@qiankunjs/react`) |
| vue-host | 7105 | Vue 3.5 + Vite 8 | host (`@qiankunjs/vue`) |
| react | 7100 | React 19 + Vite 8 (`bundler-plugin/vite`) | ESM sandbox |
| vue | 7101 | Vue 3.5 + Vite 8 (`bundler-plugin/vite`) | ESM sandbox |
| webpack | 7102 | React 19 + webpack 5 (`QiankunWebpackPlugin`) | classic (window library) |
| standalone-sandbox | 7103 | TypeScript + Vite 8 | direct `@qiankunjs/sandbox` use |
| purehtml | 7104 | no build, vendored jQuery | classic (inline global) |
| streaming | 7106 | no build, chunk-flushing Node server | classic, entry HTML streamed |
## Run
From the repo root:
```bash
pnpm install
pnpm start:example
```
This builds the workspace packages and starts every app's dev server in parallel. Open
http://localhost:7099 for the React host, http://localhost:7105 for the Vue host, or
http://localhost:7103 for the standalone sandbox lab. The examples consume `qiankun`,
`@qiankunjs/react`, `@qiankunjs/vue` and `@qiankunjs/bundler-plugin` via `workspace:*`, so they always
demo the in-repo code — rebuild packages (`pnpm build:packages`) after changing them.
## What each app demonstrates
The framework apps implement the same "isolation lab":
- **Window probe** — writes `window.__SANDBOX_PROBE__` inside its sandbox; the dashboard's
host realm check proves the host window never sees it.
- **Timer probe** — starts a deliberately-leaked `setInterval`; qiankun reclaims it on unmount.
- **Style probe** — appends a `