Delightful JavaScript/TypeScript client for Polkadot & Polkadot SDK-based blockchains.
π Join our Telegram group to receive the latest updates and support!! π
Dedot is the next-generation JavaScript client for Polkadot and Polkadot SDK-based blockchains. Designed to elevate the dapp development experience, Dedot is built & optimized to be lightweight and tree-shakable, offering precise Types & APIs suggestions for individual Polkadot SDK-based blockchain network and ink! Smart Contracts. Dedot also helps dapps efficiently connect to multiple chains simultaneously as we head toward a seamless multi-chain future.
- β Fully support light clients (e.g: smoldot)
- β Small bundle size, tree-shakable (no more bn.js or wasm-blob tight dependencies)
- β Types & APIs suggestions for each individual Polkadot SDK-based blockchain network (@dedot/chaintypes)
- β
Familiar api style with
@polkadot/api, easy & fast migration! - β Native TypeScript type system for scale-codec
- β
Compatible with
@polkadot/extension-based wallets - β Support Metadata V14, V15, V16 (latest)
- β Built-in metadata optimization (caching)
- β Build on top of both the new & legacy ( deprecated soon) JSON-RPC APIs
- β Unified Typesafe Contract APIs for ink! v5 (WASM, pallet-contracts), ink! v6 and solidity contracts (PVM, pallet-revive)
- β Fully-typed low-level JSON-RPC client
Tip
Are you building dapps on Polkadot?
Check out Typink (https://typink.dev), a comprehensive toolkit for dapps development, powered by Dedot!
Check out Dedot documentation on the website: https://dedot.dev
- Install packages
npm i dedot # or yarn, pnpm
npm i -D @dedot/chaintypes- Connect to the network
import { DedotClient, WsProvider } from 'dedot';
import type { PolkadotApi } from '@dedot/chaintypes';
const provider = new WsProvider('wss://rpc.polkadot.io');
const client = await DedotClient.new<PolkadotApi>(provider);
// Get current best block
const bestBlock = await client.block.best();
console.log('Best block:', bestBlock.number, bestBlock.hash);
// Subscribe to finalized blocks
const unsub = client.block.finalized((block) => {
console.log('Finalized block:', block.number);
});
// Query on-chain storage
const balance = await client.query.system.account(<address>);
console.log('Balance:', balance);
// Get pallet constants
const ss58Prefix = client.consts.system.ss58Prefix;
console.log('Polkadot ss58Prefix:', ss58Prefix);
// Call runtime api
const pendingRewards = await client.call.nominationPoolsApi.pendingRewards(<address>);
console.log('Pending rewards:', pendingRewards);
// Sign and send transaction
const result = await client.tx.balances.transferKeepAlive(<dest>, 1_000_000_000_000n)
.signAndSend(signer).untilFinalized();
// Disconnect
await client.disconnect();- Polkadot Live App (Github)
- Polkadot Staking Dashboard (Github)
- Typink (Github)
- Allfeat SDK (Github)
- Polkadot UI (Github)
- Create Dot App
- LunoKit - Wallet Developer Tools (Github)
- ... add yours? PRs are more than welcome!
Dedot take a lot of inspirations from project @polkadot/api. A big thank to all the maintainers/contributors of this awesome library.
Proudly supported by Web3 Foundation Grants Program.

