# ts-sdks-incubation
Incubation TypeScript packages for the [Sui](https://sui.io) blockchain ecosystem, published to
npm under the `@mysten-incubation` scope. They are pre-1.0 and unstable: the public surface can
break freely as we iterate toward a stable release.
## Packages
| Package | Description | Status |
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`@mysten-incubation/dev-wallet`](packages/dev-wallet) | Modular dev wallet for Sui dApp development and testing | [](https://www.npmjs.com/package/@mysten-incubation/dev-wallet) |
| [`@mysten-incubation/devstack`](packages/devstack) | Effect v4 devstack for local Sui app development, seeded services, codegen, and product tests | [](https://www.npmjs.com/package/@mysten-incubation/devstack) |
| [`@mysten-incubation/create-devstack-app`](packages/create-devstack-app) | Scaffolder for new devstack-backed apps | [](https://www.npmjs.com/package/@mysten-incubation/create-devstack-app) |
| [`@mysten-incubation/cctp-kit`](packages/cctp-kit) | Embeddable USDC bridge for Sui dapps, built on Circle CCTP v2 | [](https://www.npmjs.com/package/@mysten-incubation/cctp-kit) |
| [`@mysten-incubation/tsconfig`](packages/tsconfig) | Shared TypeScript configuration for the published packages and scaffolded apps | [](https://www.npmjs.com/package/@mysten-incubation/tsconfig) |
## Examples
Worked example apps live under [`examples/`](examples). Each example brings up its own
local stack via the devstack CLI, publishes Move packages, and serves a Vite frontend.
See [`examples/README.md`](examples/README.md) for the curated tour.
Fastest way in:
```bash
pnpm create @mysten-incubation/devstack-app@latest my-app
cd my-app
pnpm dev
```
Add devstack to an existing app:
```bash
pnpm add @mysten-incubation/devstack @mysten-incubation/dev-wallet @mysten/signers
pnpm add -D @mysten-incubation/tsconfig
```
## Documentation
https://ts-sdks-incubation.vercel.app
For contributors working on devstack, the living docs are:
- [`packages/devstack/STYLE_GUIDE.md`](packages/devstack/STYLE_GUIDE.md) — code-level patterns and explicit bans (Effect v4 idioms, tagged errors, atomic writes, span vocabulary, etc.).
- [`packages/devstack/ARCHITECTURE.md`](packages/devstack/ARCHITECTURE.md) — layer / capability-contract boundaries; the answer to "is this the right place for X?".
## Getting started
```bash
pnpm install
pnpm turbo build
```
## Development
```bash
# Run tests
pnpm test
# Lint and format
pnpm lint
pnpm lint:fix
# Build a specific package
pnpm turbo build --filter=@mysten-incubation/dev-wallet
# Run docs site locally
pnpm --filter @mysten-incubation/docs dev
```
## Preview releases
Every pull request publishes per-commit tarballs of each public package to
[pkg.pr.new](https://pkg.pr.new). The `pkg.pr.new` bot comments on the PR with
install URLs — they look like:
```bash
pnpm add https://pkg.pr.new/@mysten-incubation/dev-wallet@<commit-or-pr-sha>
```
Use these to try a change in a downstream app before it lands on `main`.
## Beta releases
To release a package on its own beta channel, set `publishConfig.tag` to `beta` in its
`package.json` and add changesets normally. The shared release PR versions stable and beta packages
together, using independent prerelease versions such as `0.6.0-beta.0` for beta packages. When the
release PR merges, each package is published to its configured npm tag.
To promote a package to stable, remove `publishConfig.tag`, add a changeset describing the stable
release, and merge the resulting release PR. Packages without an explicit tag continue to publish
to `latest` throughout.
## Contributing
The published packages use [changesets](https://github.com/changesets/changesets) for version
management — run `pnpm changeset` to record a version bump for any PR that changes published
behavior. The packages are pre-1.0, so breaking changes go in directly without deprecation cycles.
See [AGENTS.md](AGENTS.md) for repo-wide development guidance.
## License
Apache-2.0