Packages

@ckb-ccc/ccc

All-in-one browser bundle — core primitives, all wallet signers, and protocol SDKs in a single ccc namespace.

Edit on GitHub

@ckb-ccc/ccc is the all-in-one package for browser environments. It bundles @ckb-ccc/core with every wallet signer and protocol package into a single ccc namespace. Use it when you want full wallet discovery but prefer to build your own connection UI instead of using the built-in connector modal.

When to use this package

ScenarioPackage
React app with built-in wallet modal@ckb-ccc/connector-react
Non-React frontend with built-in modal@ckb-ccc/connector
Custom wallet UI (no built-in modal)@ckb-ccc/ccc ← you are here
Node.js backend or script@ckb-ccc/shell

Installation

@ckb-ccc/ccc npm version@ckb-ccc/ccc npm downloads per week
npm install @ckb-ccc/ccc
yarn add @ckb-ccc/ccc
pnpm add @ckb-ccc/ccc

What's included

@ckb-ccc/ccc re-exports everything from:

Sub-packageNamespaceContents
@ckb-ccc/joy-idccc.*JoyID wallet signer
@ckb-ccc/eip6963ccc.*MetaMask, Rabby, and any EIP-6963 wallet
@ckb-ccc/uni-satccc.*UniSat Bitcoin wallet signer
@ckb-ccc/okxccc.*OKX wallet signer (BTC + Nostr)
@ckb-ccc/xverseccc.*Xverse / SATS Connect wallet signer
@ckb-ccc/nip07ccc.*NIP-07 Nostr extension signer
@ckb-ccc/reiccc.*REI CKB-native wallet signer
@ckb-ccc/utxo-globalccc.*UTXO Global wallet signer (CKB + BTC + DOGE)

It also adds one package-level export:

  • SignersController — discovers and manages the lifecycle of all available wallet signers automatically.

Usage

import { ccc } from "@ckb-ccc/ccc";

const client = new ccc.ClientPublicTestnet();

// Discover all wallets available in the current browser environment
const controller = new ccc.SignersController(client);
controller.subscribeSigners((signerInfo) => {
  console.log(`Found wallet: ${signerInfo.name}`);
});

// Or instantiate a specific signer directly
const signer = new ccc.SignerCkbPrivateKey(client, "0x...");
await signer.connect();
const balance = await signer.getBalance();

Advanced exports

import { cccA } from "@ckb-ccc/ccc/advanced";

cccA exposes internal APIs that may change between minor versions without notice. Only reach for them when the stable ccc API doesn't cover your use case.

On this page