Release notes.
What shipped in each minor + major. Authoritative source: npm + GitHub releases, this page is the navigable summary.
- v1.1.12026-06-23
- ·Testnet faucet SDK surface for Sepolia TTT + CTTT, including headless clients, ABIs, types, errors, and React hooks.
- ·Faucet quickstart, hooks catalog, ABI/type/error reference pages, and API reference coverage.
- ·Canonical Sepolia faucet registry resolution for React read hooks, plus clearer mint hook TSDoc.
- ·First faucet release on npm: v1.1.0 was tagged but never published (release-pipeline fix), so v1.1.1 is the registry version.
- v1.0.02026-05-29
- ·Public release. Three FHE products (vesting, airdrop, disperse) under their own subpaths.
- ·Branded primitives: VestingId, AirdropId, DisperseId, EncryptedHandle, plus 4 more.
- ·Eager + lazy encryptor injection (React lazy-factory pattern, Node eager).
- ·DEPLOYED_ADDRESSES baked in for Sepolia (all 3) + Ethereum mainnet (fhe-disperse).
- ·Per-product React subpaths under @tokenops/sdk/<product>/react; vesting and airdrop also expose @tokenops/sdk/<product>/advanced/react for advanced factory helpers.
- ·Two optional Zama peer deps: @zama-fhe/react-sdk and @zama-fhe/sdk (both ^3.0.0); root package ships zero FHE runtime deps (only abitype in dependencies).
- ·Security: OpenZeppelin audits published — fhe-disperse + fhe-vesting (May 2026) and fhe-airdrop (Jan 2026), 0 critical / 0 high; reports linked from /resources.
Upstream dependencies
Known breaking changes in the @zama-fhe/sdk peer dependency, verified against the published npm typings + release notes.
npm view @zama-fhe/sdk time lists every published version with its date.encrypt() now returns contract-ready hex instead of raw bytes, and the handles field was renamed encryptedValues (release note: “return encrypt handles and proof as contract-ready hex”, SDK-200). Code that destructures handles gets undefined at runtime.
// @zama-fhe/sdk <= 3.0.1
interface EncryptResult {
handles: Uint8Array[];
inputProof: Uint8Array;
}
// @zama-fhe/sdk >= 3.1.0 — field renamed, raw bytes -> contract-ready hex
type EncryptResult = {
encryptedValues: `0x${string}`[]; // bytes32 hex
inputProof: `0x${string}`;
};handles from the encryptor result internally, so it breaks at runtime with @zama-fhe/sdk 3.1.0 or later — even though the ^3.0.0 peer range lets the newer version install. Pin the peer until a @tokenops/sdk release notes compatibility:{
"dependencies": {
"@tokenops/sdk": "^1.1.1",
"@zama-fhe/sdk": "~3.0.1"
}
}Often blamed for the encrypt-shape change — it shipped two days after 3.1.0, so upgrades from 3.0.x that landed on 3.2.0 saw the breakage here first. The published 3.1.0 and 3.2.0 typings declare an identical EncryptResult; the actual boundary is 3.0.x → 3.1.0. What 3.2.0 did ship: upgrade codemods for the 3.1.0 migration and configurable, silent-by-default logging.
0.x history
Earlier work happened in the pre-launch sprint and isn't versioned here. See the SDK repo's git log for the rounds-pattern commit history.
npm publishes
Every release pushes a tarball to npm view @tokenops/sdk versions , the cleanest source-of-truth.