Skip to content

Which packages to install for a Product project. Your app code needs the Product SDK, pinned to the version the hosts speak. The CLIs register names and publish bundles.

Most projects only need a few direct dependencies:

PackageInstallPurposeBin
@parity/product-sdknpm i @parity/product-sdk@0.39.0TypeScript SDK for building apps: multi-chain access, transactions, signing, contract calls, cloud storage, and identity. Pinned: see Install the SDK version the hosts speak.—
@polkadot-community-foundation/dotns-clinpm i -g @polkadot-community-foundation/dotns-cli@latestCLI for the .dot naming system: register names, set content/address records, manage reverse names and stores.dotns
@polkadot-community-foundation/polkadot-app-deploynpm i -g @polkadot-community-foundation/polkadot-app-deploy@latestDeploy CLI: uploads a built static bundle to Bulletin, and binds it to a .dot domain. pad-bootstrap (same package) authorizes the Bulletin storage pool.pad, pad-bootstrap

pad requires Node 22+. On Node 20 it fails at startup with an unrelated-looking error, so check node --version first.

Install the CLIs at their latest release, and re-run the same command to upgrade. They carry network presets and contract addresses, and a stale copy is the usual cause of a command that succeeds while nothing changes on chain. The Product SDK is the one package to pin, as described below.

Both CLIs select a network preset with --env, and for this Devnet it is --env devnet.

@parity/product-sdk is the main dependency for Product app code. It gives an app access to wallet, storage, chain, contract and identity services through the host: the Polkadot app or the web gateway. This is deliberate. Your app should not manage private keys or build its own wallet layer.

PackagePurpose
@parity/product-sdkMain SDK entry point for Product apps.
@parity/product-sdk-chain-clientTyped access to the Devnet chains.
@parity/product-sdk-descriptorsChain descriptors used by the SDK.
@parity/product-sdk-signerHost-backed signing, plus development signers for tests.
@parity/product-sdk-contractsContract calls and ABI handling for PolkaVM contracts.
@parity/product-sdk-cloud-storageBulletin-backed content storage helpers.
@parity/product-sdk-hostHost detection and host-provided services.

These packages live in the Product SDK monorepo and are versioned separately. @parity/product-sdk pins a matching version of each, so install them through it, not one by one.

Apps talk to their host over TrUAPI. The Devnet hosts speak the TrUAPI version that Product SDK 0.39.0 speaks, so install exactly that version:

Terminal window
npm i @parity/product-sdk@0.39.0

Newer SDK releases speak a newer TrUAPI that these hosts do not. If you add SDK packages one by one, use the versions @parity/product-sdk@0.39.0 depends on.

The Devnet chains run newer runtimes than the metadata in @parity/product-sdk-descriptors. For typed access to the current pallets, swap in the Polkadot Community Foundation's build of the same package. Add it as a dependency and as an override, with the same value in both:

{
"dependencies": {
"@parity/product-sdk-descriptors": "npm:@polkadot-community-foundation/product-sdk-descriptors@0.14.0-pcf.1"
},
"overrides": {
"@parity/product-sdk-descriptors": "npm:@polkadot-community-foundation/product-sdk-descriptors@0.14.0-pcf.1"
}
}

Your imports stay the same (@parity/product-sdk-descriptors/...), and every SDK package uses the same copy.

@parity/product-sdk-host speaks TrUAPI to the host for you, so apps rarely import it directly. For end-to-end tests, use the test host in @parity/truapi-host; see Test without the real host. TrUAPI lives in trinity-user-agents.

@novasamatech/host-api, @novasamatech/host-api-wrapper and @parity/host-api-test-sdk do not speak the Devnet hosts' current protocol.

CLIPackageBinWhat it does
Deploy@polkadot-community-foundation/polkadot-app-deploypadPublishes a built static bundle, stores it on Bulletin, and points a .dot domain at it.
Storage bootstrap@polkadot-community-foundation/polkadot-app-deploypad-bootstrapAuthorizes the Bulletin storage pool pad uploads with, using an authorizer key. Ships in the same package as pad.
DotNS@polkadot-community-foundation/dotns-clidotnsRegisters and manages .dot domains: register, lookup, content, primary, transfer, store, pop, and more.

A typical deploy binds a built bundle to a name on a chosen network:

Terminal window
pad ./dist my-app.dot --env devnet

The account pad deploys with must hold a live Bulletin storage authorization, because pad never authorizes itself. See Get storage authorization.

Your Product runs inside the Polkadot app or the web gateway. Download links, the deployed reference Products and source repositories are in More resources.

Last updated: