Choosing a Canton dApp SDK
Choose the integration layer that fits the application: Sigilry’s typed provider toolkit, DA’s wallet-discovery SDK, PartyLayer’s native provider with an adapter bridge and UI components, or a Console-focused SDK. These are different documented integration surfaces, not a ranking. Sigilry, Canton dApp SDK, PartyLayer, Console.
Scope and versions
Section titled “Scope and versions”Snapshot checked 2026-10-05 with npm view:
- Sigilry:
@sigilry/dapp3.4.0,@sigilry/react3.2.2, and@sigilry/cli0.3.3. - DA:
@canton-network/dapp-sdk1.7.1. This is the official Canton dApp SDK linked from Canton’s introduction to CIP-0103 and documented in the Canton developer docs. - PartyLayer:
@partylayer/sdk0.19.0. The cells below describe documentation at source commitc0d6ddd, not verified behavior of that npm release or every PartyLayer package. - Console:
@console-wallet/dapp-sdk2.4.0, with its versioned README and distributed type declarations.
Sigilry source links are pinned to public mirror commit c264b6e; DA source links are pinned to d8b41d9. Website documentation describes the pages inspected on the snapshot date and can change independently of npm releases.
Documented means a maintainer describes the capability. Unknown means the named capability was not established by the cited sources; it does not mean unsupported. This comparison is based on documentation, source, and package metadata. It does not establish interoperability, conformance certification, relative performance, or successful installation in a particular application.
Documented capabilities
Section titled “Documented capabilities”On narrow screens, scroll the table horizontally to see all four SDKs.
| Capability | Sigilry | @canton-network/dapp-sdk (DA) | PartyLayer | @console-wallet/dapp-sdk |
|---|---|---|---|---|
| Main integration surface / CIP-0103 | Typed CIP-0103 provider and RPC client/server toolkit. Docs | High-level API over CIP-0103 providers and adapters. Docs | Native CIP-0103 provider plus adapter-based client/bridge. Provider | Console Wallet API; README states CIP-0103 compatibility. README |
| Licence / inspectable implementation | MIT; public source. Metadata, source | Apache-2.0; public source. Metadata, source | MIT; public source. README | ISC; distributed JS/types inspectable. Public development repository: unknown from metadata. Metadata, types |
| Wallet discovery and selection | Discovery store, provider selection, React WalletPicker. dApp, React | Announced browser wallets, remote wallets, configurable adapters; built-in picker Web Component. Discovery, README | Injected-provider discovery, registry/adapters, React modal and ConnectButton. Provider, React, README | Console extension availability; local, remote, or combined target. General multi-wallet picker: unknown. README |
| Transport / remote connection | Documented WindowTransport and custom RpcTransport seam; WalletConnectTransport exported in inspected source. Docs, exports | Browser postMessage, remote HTTP/SSE; optional WalletConnect adapter. README, discovery | Native sync/async flows; opt-in WalletConnect adapter. Legacy provider bridge is sync-only. README, adapter | Browser postMessage and mobile QR/deep-link flow. Generic WalletConnect adapter: unknown. README |
| React integration | @sigilry/react context/hooks using TanStack Query. Docs | Framework-agnostic SDK and picker usable in React. Dedicated React hooks package: unknown in inspected SDK docs. Overview, README | Hooks/components; separate TanStack Query entry point. React | Typed application SDK. Dedicated React hooks package: unknown in inspected README/exports. README, types |
| Ledger reads / application data | ledgerApi; React ledger and active-contract hooks. dApp, React | Wallet-session JSON Ledger API proxy. Overview | Native-provider ledgerApi; legacy bridge differs. Query hooks wrap application-supplied fetchers. README, React | ledgerApi, contract, balance, and history methods. README, types |
| Daml types / action abstraction | CLI wraps alpha DAR-to-TypeScript tooling; inspected source requires Java and pins the DPM SDK. Generated choice-action workflow: unknown as a shipped end-to-end integration here. CLI, codegen, config | Typed SDK calls. Automatic DAR-to-typed create/exercise binding generation: unknown in inspected SDK README. README | requestTransfer intent API, gated by wallet capability. Generic generated DAR choice bindings: unknown in this transfer guide. Transfer guide | Typed request/response exports. Automatic DAR-to-typed choice binding generation: unknown in inspected README. README |
| Account / status / transaction updates | Provider events and React subscription helpers. dApp, React | Status, account, and transaction subscriptions. README | Provider and client events, plus the legacy provider bridge. Provider, README | Account, connection, and transaction callbacks. README |
Console documents wallet-side encryption/decryption and batch transaction signing. Console README. Message signing is also documented by Sigilry, DA, and PartyLayer; this table does not compare algorithms or encodings. Include Console’s additional signing APIs in an evaluation when the application needs them.
Choose by required surface
Section titled “Choose by required surface”The following fit guidance is an editorial interpretation of the documented surfaces, not a result of comparative testing:
- Evaluate Sigilry when the application needs explicit typed RPC/provider building blocks, custom transports, and its React layer. dApp, transports, React.
- Evaluate DA’s official SDK when the framework-independent wallet picker and remote-wallet adapters fit the onboarding flow. Its Web Component supplies a documented UI without requiring React-specific hooks. Canton introduction, README, discovery.
- Evaluate PartyLayer when the native provider, adapter bridge, and ready-made React modal/button fit. Select the native or bridge path deliberately: the inspected README documents different async and ledger behavior. Provider, README, React.
- Evaluate Console’s SDK for Console-specific accounts, queries, mobile QR/deep links, and its additional signing/encryption APIs. README.
Separate SDK capability from wallet capability
Section titled “Separate SDK capability from wallet capability”An adapter or transport does not establish that every wallet supports every method or network. PartyLayer explicitly gates typed transfers by wallet capability; DA documents adapter registration and discovery configuration. PartyLayer transfer guide, DA discovery.
For the actual package, wallet version, and network, record the results of this integration checklist:
- Discover/select the intended wallet and connect.
- Observe account, network, and connection changes.
- Read application data through the intended ledger path.
- Request and verify a signed message using that wallet’s documented algorithm, encoding, and key authorization rules.
- Handle user rejection and unsupported methods.
- Submit a representative transaction and observe completion or failure.
- Tear down listeners, disconnect, and test session restoration where offered.
This checklist is proposed verification work; no results are asserted for the four SDKs here. A reproducible integration recipe should pin the package, wallet, and network versions and report these outcomes after it has been run.
Understand the type boundary
Section titled “Understand the type boundary”Typed RPC envelopes, generated Daml record types, and generated action functions are separate layers. Sigilry documents typed provider/RPC calls and a CLI wrapping dpm codegen-alpha-typescript. Those sources alone do not establish a shipped workflow that generates a choice action from a DAR and executes it through a wallet. PartyLayer’s documented transfer intent is another abstraction: the wallet receives a transfer request, subject to capability support. Sigilry dApp, CLI, codegen, PartyLayer transfers.
Sources and corrections
Section titled “Sources and corrections”Capabilities change. Use the versioned metadata and pinned sources linked above, alongside current maintainer documentation. Send corrections with the relevant package version, public source, and a reproducible example through the public Sigilry issue tracker.