Run these from the repo root:
pnpm build # Build all packages
pnpm typecheck # Type checking
pnpm test # Unit tests
pnpm lint # Linting
pnpm run prettier:format # Code formattingUse conventional commits:
feat: add new wallet connection flow
fix: resolve QR code rendering on mobile
chore: update WalletConnect dependency
refactor: simplify chain switching logic
test: add swap controller tests
docs: update adapter creation guide
All publishable changes need a changeset:
pnpm changesetThis creates a markdown file in .changeset/ describing the change. All @reown/appkit-* packages are versioned together as a fixed group.
Every PR is validated by DangerJS (dangerfile.ts). Key checks:
pnpm-lock.yamlmust be updated whenpackage.jsonchanges- No
yarn.lockorpackage-lock.jsonallowed - No loose dependency versions (
^,~) except whitelisted packages
- Components must apply
resetStyles - No
@state()decorator allowed - No imports from
@reown/appkit-controllers - Required section comments:
// -- Render ----,// -- State & Properties ----,// -- Private ---- - Must use
wui-prefix - Must have corresponding Storybook stories
- Must use
w3m-prefix - Must have proper unsubscribe cleanup
- Must use relative imports
- Must have section comments:
// -- Types ----,// -- State ----,// -- Controller ---- - Must use
valtio/vanilla - Must have corresponding tests
PR checks:
- Setup and build
- Code style validation (Prettier, ESLint)
- Unit tests (Vitest)
- Bundle size checks
- UI tests (Playwright in Laboratory app, sharded across runners)
- The
exportsentrypoints inpackages/appkit/exports/*.tsdefine the public SDK surface - Treat changes to exported functions, classes, or types as potentially breaking
- Follow semver: breaking changes require major bump + clear changeset
- Prefer additive changes; deprecate with
@deprecatedJSDoc first - Keep exports stable; avoid re-exporting deep internals
| Channel | Purpose |
|---|---|
latest |
Stable production releases |
alpha |
Alpha pre-releases |
beta |
Beta pre-releases |
canary |
Canary releases for testing |
Publishing is handled through GitHub Actions workflows. @examples/* and @apps/* are excluded.