CCC Package Guide
A complete overview of every NPM package in CCC. Choose the right package based on your runtime environment, framework, and feature requirements — covering the core SDK, wallet integrations, protocol extensions, and more.
CCC is a monorepo of focused packages — pick what you need.
CCC ships as a collection of focused npm packages. Install only what your project requires.
Most projects only need one entry-point package. Use @ckb-ccc/shell for Node.js, @ckb-ccc/connector-react for React apps, or @ckb-ccc/ccc when you need a fully custom wallet UI.
At a glance
CCC offers multiple packages to serve different development scenarios. Choosing the right package based on your runtime (frontend/backend), framework (React/other), and feature needs (wallet integration/protocol support) can dramatically speed up development.
- Core packages —
@ckb-ccc/coreand@ckb-ccc/shellprovide foundational functionality, ideal for deep customization or backend development. - Wallet integration —
@ckb-ccc/cccaggregates all wallets for custom UIs;@ckb-ccc/connector-reactprovides pre-built components for rapid React integration. - Protocol SDKs —
@ckb-ccc/spore,@ckb-ccc/udt, and@ckb-ccc/ssrisupport specific CKB protocol standards. - Individual wallet packages — Standalone packages for specific wallets (JoyID, OKX, UniSat, etc.), installed as needed.
@ckb-ccc/core
Core SDK — provides Transaction, Client, Signer abstractions and cryptographic utilities. Best for advanced scenarios requiring deep customization.
@ckb-ccc/shell
Backend / Node.js aggregate — bundles the core SDK with protocol extensions (Spore, UDT, etc.), purpose-built for server environments. Ideal for Node.js backends, CLI tools, or scripts.
@ckb-ccc/ccc
Wallet integration aggregate — includes every wallet integration (EVM, BTC, Nostr, JoyID, etc.) in a single import. The best choice when you need a custom wallet-connection UI without pre-built components.
@ckb-ccc/connector
Web Components wallet connector — a framework-agnostic Lit-based component usable in any frontend framework. Ideal for non-React projects or cross-framework reuse.
@ckb-ccc/connector-react
React wallet connector — pre-built React Hooks and components for quickly adding wallet-connection features. Ideal for React apps with no manual connection logic required.
@ckb-ccc/spore
Spore NFT Protocol SDK — create, transfer, and melt on-chain Digital Objects (DOBs) and Clusters. Ideal for CKB apps that need NFT capabilities.
@ckb-ccc/udt
UDT/xUDT token SDK — issue, transfer, and mint User Defined Tokens on CKB. Ideal for CKB apps that need fungible token functionality.
@ckb-ccc/ssri
SSRI (Script-Sourced Rich Information) protocol support for interacting with CKB smart contracts. Ideal for CKB apps that call on-chain contract methods.
@ckb-ccc/lumos-patches
Lumos compatibility patches — enable existing Lumos apps to work with JoyID, Nostr, and Portal Wallet. Ideal for legacy Lumos projects migrating to new wallets.
@ckb-ccc/joy-id
JoyID Passkey wallet — WebAuthn-based passwordless signing with multi-chain support (CKB, EVM, BTC, Nostr). Ideal for apps that need biometric or passwordless experiences.
@ckb-ccc/eip6963
EVM wallet discovery — auto-detects MetaMask, Rabby, and other EVM wallets via the EIP-6963 standard. Ideal for frontend apps supporting multiple EVM wallets.
@ckb-ccc/nip07
Nostr wallet integration — signs via NIP-07 browser extensions, supporting the Nostr protocol. Ideal for Nostr ecosystem apps or those requiring Nostr signatures.
@ckb-ccc/utxo-global
UTXO Global wallet integration — signs via the UTXO Global browser extension, supporting the BTC, CKB, and DOGE ecosystems.
@ckb-ccc/rei
REI wallet integration — signs via the REI browser extension.
@ckb-ccc/xverse
Xverse wallet integration — BTC ecosystem browser extension signing.
@ckb-ccc/okx
OKX multi-protocol wallet — supports EVM, Nostr, and BTC signing via the OKX browser extension.
@ckb-ccc/uni-sat
UniSat wallet integration — BTC ecosystem browser extension signing.
NPM package reference
The tables below list all CCC packages with their latest version and weekly download count. Use version numbers to gauge update freshness and download counts to assess community adoption and maintenance activity. When choosing a package, prefer recently updated ones for better community support and bug fixes.
Core packages
| Package (click for docs) | Purpose | Latest version & weekly downloads |
|---|---|---|
@ckb-ccc/core | Core SDK — Transaction, Client, Signer abstractions and cryptographic utilities | |
@ckb-ccc/shell | Backend / Node.js aggregate — core SDK + protocol extensions |
Aggregates & UI components
| Package (click for docs) | Purpose | Latest version & weekly downloads |
|---|---|---|
@ckb-ccc/ccc | Wallet integration aggregate — all wallets in a single import | |
@ckb-ccc/connector | Web Components wallet connector — framework-agnostic | |
@ckb-ccc/connector-react | React wallet connector — pre-built Hooks and components |
Protocol SDKs
| Package (click for docs) | Purpose | Latest version & weekly downloads |
|---|---|---|
@ckb-ccc/spore | Spore NFT Protocol SDK — DOB/Cluster management | |
@ckb-ccc/udt | UDT/xUDT token SDK — issuance, transfer, minting | |
@ckb-ccc/ssri | SSRI protocol support — smart contract interaction and metadata queries | |
@ckb-ccc/lumos-patches | Lumos compatibility patches — JoyID, Nostr, Portal Wallet support |
Wallet integrations
| Package (click for docs) | Purpose | Latest version & weekly downloads |
|---|---|---|
@ckb-ccc/joy-id | JoyID Passkey wallet — WebAuthn passwordless signing, multi-chain | |
@ckb-ccc/eip6963 | EVM wallet discovery — EIP-6963 standard, MetaMask, Rabby, etc. | |
@ckb-ccc/nip07 | Nostr wallet integration — NIP-07 browser extension signing | |
@ckb-ccc/utxo-global | UTXO Global wallet — BTC/CKB/DOGE ecosystem support | |
@ckb-ccc/rei | REI wallet — REI browser extension signing | |
@ckb-ccc/xverse | Xverse wallet — BTC ecosystem browser extension signing | |
@ckb-ccc/okx | OKX multi-protocol wallet — EVM/Nostr/BTC signing | |
@ckb-ccc/uni-sat | UniSat wallet — BTC ecosystem browser extension signing |
Import pattern
All packages expose their public API on a single ccc namespace object:
import { ccc } from "@ckb-ccc/<package-name>";Advanced (unstable) APIs are available via cccA:
import { cccA } from "@ckb-ccc/<package-name>/advanced";Your tsconfig.json must set moduleResolution to node16, nodenext, or bundler and must not disable resolvePackageJsonExports. CCC uses Package Entry Points for tree shaking.