# @icp-sdk/core Release Announcements

**URL:** <https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402>\
**Category:** Developers\
**Tags:** agent, JavaScript, TypeScript, release, sdk\
**Created:** [March 19, 2026, 9:05am UTC](https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402 "2026-03-19T09:05:03Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![nikosxenakis](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/nikosxenakis/32/36516_2.png) [@nikosxenakis](https://forum.dfinity.org/u/nikosxenakis)\
**Post date:** [March 19, 2026, 9:05am UTC](https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402/1 "2026-03-19T09:05:04Z")

</div>

This topic is used to announce new releases of [`@icp-sdk/core`](https://github.com/dfinity/icp-js-core), the official JavaScript/TypeScript SDK for the Internet Computer.

- **GitHub:** [GitHub - dfinity/icp-js-core: The base library to build applications on the Internet Computer. · GitHub](https://github.com/dfinity/icp-js-core)
- **npm:** [https://www.npmjs.com/package/@icp-sdk/core](https://www.npmjs.com/package/@icp-sdk/core)
- **Documentation:** [ICP JavaScript SDK Core | ICP JS SDK Docs](https://js.icp.build/core/latest/)
- **Changelog:** [icp-js-core/CHANGELOG.md at main · dfinity/icp-js-core · GitHub](https://github.com/dfinity/icp-js-core/blob/main/CHANGELOG.md)

Release announcements will be posted as replies to this topic.

---

<div class="post-metadata">

**Author:** ![kayicp](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/kayicp/32/36679_2.png) [@kayicp](https://forum.dfinity.org/u/kayicp)\
**Post date:** [March 19, 2026, 10:37am UTC](https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402/2 "2026-03-19T10:37:47Z")

</div>

i suppose `dfx new` will use @icp-sdk in the future instead of @dfinity ?

---

<div class="post-metadata">

**Author:** ![marc0olo](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/marc0olo/32/17290_2.png) [@marc0olo](https://forum.dfinity.org/u/marc0olo)\
**Post date:** [March 19, 2026, 12:02pm UTC](https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402/3 "2026-03-19T12:02:34Z")

</div>

@kayicp I am not sure if there is a plan to change this behavior in dfx (cc @raymondk)

I recommend to switch over to icp-cli for new project 😉

and if you need to switch over from existing projects, there is a [migration-guide](https://cli.internetcomputer.org/0.2/migration/from-dfx/) and an [icp-cli skill](https://skills.internetcomputer.org/skills/icp-cli/) that will help you doing this.

---

<div class="post-metadata">

**Author:** ![Vivienne](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/vivienne/32/29170_2.png) [@Vivienne](https://forum.dfinity.org/u/Vivienne)\
**Post date:** [March 19, 2026, 12:11pm UTC](https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402/4 "2026-03-19T12:11:06Z")

</div>

`dfx generate` already creates `@icp-sdk/core` imports. See changelog entry [here](https://github.com/dfinity/sdk/blob/master/CHANGELOG.md#chore-dfx-generate-now-imports-icp-sdkcore-instead-of-dfinity-packages). No other command is tied to the js agent

---

<div class="post-metadata">

**Author:** ![nikosxenakis](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/nikosxenakis/32/36516_2.png) [@nikosxenakis](https://forum.dfinity.org/u/nikosxenakis)\
**Post date:** [March 19, 2026, 3:10pm UTC](https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402/5 "2026-03-19T15:10:02Z")

</div>

## @icp-sdk/core v5.1.0

**Release:** [v5.1.0 on GitHub](https://github.com/dfinity/icp-js-core/releases/tag/v5.1.0)  
**npm:** `npm install @icp-sdk/core@5.1.0`

### Highlights

**New features:**

- `update` method on `HttpAgent`, combines call + polling in a single method (#1289)
- `rawCertificate` is now available in `pollForResponse` return type (#1287)
- New `queryStrategy` option on `ActorConfig` for controlling how query methods are executed (#1274)

**Bug fixes:**

- Simplified `getSubnetNodeKeys` to remove redundant cache re-reads (#1291)
- Improved error messages for candid decoding errors (#1292, #1270)
- Fixed incorrect types in `hashTreeToString` (#1290)
- Reject query responses with more signatures than subnet nodes (#1281)
- Deduplicate parallel `fetchSubnetKeys` requests to avoid redundant `read_state` round-trips (#1278)
- Resolved security vulnerabilities and upgraded dependencies (#1273)

**Refactoring:**

- Simplified Actor to delegate update calls to `agent.update` (#1294)
- Extracted `#handleV4SyncResponse` and `#handleV2Rejection` from update (#1306)
- Reduced circular dependencies in the agent (#1285)
- Made `CallContext.httpDetails` optional for polling error paths (#1284)
- Extracted `readCertifiedReject` helper to deduplicate certified reject logic (#1283)
- Use `globalThis.fetch` instead of custom environment detection (#1272)

Full changelog: [icp-js-core/CHANGELOG.md at main · dfinity/icp-js-core · GitHub](https://github.com/dfinity/icp-js-core/blob/main/CHANGELOG.md)

* * *

We’d love your feedback! If you run into any issues, please report them on [GitHub](https://github.com/dfinity/icp-js-core/issues). Contributions are always welcome.

Thank you to everyone who contributed to this release!

---

<div class="post-metadata">

**Author:** ![nikosxenakis](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/nikosxenakis/32/36516_2.png) [@nikosxenakis](https://forum.dfinity.org/u/nikosxenakis)\
**Post date:** [March 24, 2026, 12:06pm UTC](https://forum.dfinity.org/t/icp-sdk-core-release-announcements/65402/6 "2026-03-24T12:06:05Z")

</div>

# @icp-sdk/core v5.2.0

We’re happy to announce v5.2.0 of `@icp-sdk/core`, which brings improved error readability, a fix for a common bundler issue, and pluggable caching for subnet node keys.

## What’s New

### Pluggable ExpirableStore for Subnet Node Key Caching (#1280)

`HttpAgent` now accepts a `subnetNodeKeyExpirableStore` option, allowing cached subnet node keys to be shared across multiple agent instances and page reloads. In browsers, an IndexedDB-backed store is used by default, eliminating redundant key fetches for dApps that create multiple agents.

### Hex-Encoded Error Messages and Error Verbosity (#1312)

`Uint8Array` fields in error messages (e.g. `arg`, `certificate`, `nonce`) are now hex-encoded instead of being serialized byte-by-byte with `JSON.stringify`. This prevents multi-thousand-line error output that could freeze log viewers.

A new `ErrorVerbosity` setting lets you control the level of detail:

- **Normal** (default): omits large binary fields with a hint to enable verbose mode
- **Verbose** : includes full hex-encoded values

```ts
import { ErrorCode, ErrorVerbosity } from "@icp-sdk/core/agent";

ErrorCode.verbosity = ErrorVerbosity.Verbose;

```

## Bug Fixes

### Bind `globalThis.fetch` to Prevent “Illegal Invocation” (#1316)

Users of bundlers like Vite and webpack no longer need to manually pass `fetch: window.fetch.bind(window)` when creating an `HttpAgent`. The SDK now binds the default `fetch` to `globalThis` automatically, preventing the “Illegal invocation” error that occurred when bundlers stripped the `this` context.

## Upgrading

```bash
npm install @icp-sdk/core@latest

```

No breaking changes.
