---
title: "Migrations"
description: "Release cadence, versioning policy, and per-version migration guides for Sigilry packages."
url: "https://sigilry.org/migrations"
---

Sigilry’s dApp RPC contract evolves alongside [CIP-0103](https://github.com/canton-foundation/cips/blob/main/cip-0103/cip-0103.md) and downstream implementations. This section tracks breaking changes and gives consumers a concrete migration path per release line.

## Release cadence

Each published package follows semver, but the way we cut versions differs by maturity:

| Package                    | Line  | dist-tag | Stability                                                                 |
| -------------------------- | ----- | -------- | ------------------------------------------------------------------------- |
| `@sigilry/dapp`            | `3.x` | `latest` | **Stable** — additive changes are minors; breaking changes bump the major |
| `@sigilry/react`           | `3.x` | `latest` | **Stable** — tracks `@sigilry/dapp` (majors move together)                |
| `@sigilry/canton-json-api` | `1.x` | `latest` | Stable on wire shape; new endpoints are additive                          |
| `@sigilry/cli`             | `0.x` | `latest` | Pre-1.0; breaking changes bump `0.MINOR`                                  |
| `@sigilry/splice-dars`     | `0.x` | `latest` | Tracks a vendored Splice release; bumps with upstream                     |

### Versioning policy (`@sigilry/dapp`, `@sigilry/react`)

`@sigilry/dapp` and `@sigilry/react` ship on the `latest` dist-tag and move together — a `@sigilry/dapp` major is matched by a `@sigilry/react` major. Install the stable line directly:

```bash
yarn add @sigilry/dapp@^3 @sigilry/react@^3
```

The `next` dist-tag carries the frozen `2.0.0-next.*` pre-release line from early development and is **no longer updated**; all new work lands on `latest`. Within a stable major, minors are additive (new hooks, exports, subpaths, optional props) and patches are fixes; the next breaking change cuts the following major.

### When to expect a break

* CIP-0103 spec changes in `hyperledger-labs/splice-wallet-kernel` that we track.
* Ledger API wire shape changes in Canton’s JSON API v2.
* Internal shape changes in provider types, ConnectionState, or event payloads that only become observable once we move off the pre-release series.

### What is **not** a break

* Added optional hook options, new exported types, or new RPC methods that older wallets return `-32601` for.
* Bug fixes that make implementations match the existing documented contract.

## Migration guides

Start at the guide for your current version and apply each subsequent guide in order.

* [`1.x → 2.0`](./v1-to-v2/) — CIP-0103 alignment, EIP-6963-style discovery, nested `StatusEvent`, `ConnectResult`, `isConnected`, `ledgerApi` contract rewrite, command-atom payloads.
* [`2.x → 3.0`](./v2-to-v3/) — `latest` promotion off the `next` pre-release line, the `statusChanged`/`connected` push events on the provider, the `@sigilry/dapp/discovery` subpath, and `@sigilry/react` discovery hooks + controlled provider.

## Canton-Send specific notes

dApps integrating against the **Send Connect** wallet extension should also read [Connect to Send Connect testnet](../guides/send-connect-testnet/) for its network settings and API gateway behavior, which are layered on top of the Sigilry contract.
