@dfinity/pic-js — Release Announcements

@dfinitydfinity/pic — Release Announcements

This topic tracks releases of @dfinity/pic, an ICP canister testing library for TypeScript and JavaScript.

Source code: GitHub - dfinity/pic-js: An Internet Computer Protocol canister testing library for TypeScript and JavaScript. · GitHub
Documentation: PicJS | PicJS
Releases: https://www.npmjs.com/package/@dfinity/pic

Install

npm i -D @dfinity/pic

Follow this topic to get notified about new releases. If you run into any issues, please report them on GitHub Issues. Contributions are also very welcome — check out our contributing guide to get started.

v0.19.0 (2026-03-10)

GitHub Release: Release 0.19.0 · dfinity/pic-js · GitHub
Changelog: pic-js/CHANGELOG.md at main · dfinity/pic-js · GitHub

Changes

Breaking changes

  • PocketIC server upgraded to v12.0.0 — make sure to update your local PocketIC server binary (#231)

New features

  • Chunked WASM upload — large WASM modules are now uploaded in chunks (#239)
  • HTTP gateway support — PocketIC now supports an HTTP gateway for canister HTTP requests (#233)

Bug fixes

  • Fail immediately on non-retryable PocketIC server errors — errors that cannot be resolved by retrying now fail fast instead of timing out (#242)

Upgrade

npm install -D @dfinity/pic@0.19.0

Give it a try and let us know how it goes! :folded_hands:

Thank you to everyone who contributed to this release:

RIP my custom chunked uploading code. You served our bloated binaries well.

I had to downgrade PicJS back to v0.17.2 :smiling_face_with_tear:.

I’m not sure whether the issue is related to v0.18.x or v0.19.x, but my test suite became flaky after upgrading - “heavy” tests (those in which I assert behavior of canister upgrades) started timing out regularly at 60000ms.

Is there a known performance regression in the recent versions of PicJS, or any change that could cause these tests to fail?

Example: https://github.com/junobuild/juno/actions/runs/23088589705/job/67071317699?pr=2666

Thanks for reporting this @peterparker! I had a look and found a probable cause.

PicJS currently polls for update call completion using individual tick() + ingressStatus() HTTP requests in a loop.

PocketIC’s changelog (v10.0.0) explicitly acknowledges this pattern has a performance regression and introduced a dedicated await_ingress_message endpoint to solve it pocketic/CHANGELOG.md at main · dfinity/pocketic · GitHub.

The performance issue is fix in https://www.npmjs.com/package/@dfinity/pic/v/0.21.0, could you please try if this version resolves the issue?

The first CI run using this version of PicJS went through on first try, it looks promising :+1:. I’ll monitor it the next few days. Thanks!