Release Overview
Curated overview of releases across P2P's building blocks and helpers—Hypercore, Hyperdrive, HyperDHT, and Corestore—breaking changes, removals, and additions.
A curated record of changes across P2P's building blocks and helpers, newest first. For the raw upstream record, see each module's GitHub releases; this page is the docs-team view of what the changes mean for your application.
Looking for pear CLI or pear-* module releases instead? See Pear's release overview. For Bare's releases, see Bare's release overview.
2026-09-22 — P2P module updates
The module releases that Pear 3.5.0 bundles. An application pins its own copies in its package.json, so upgrade these dependencies directly to pick the changes up.
Hypercore — v11.36.1, v11.36.0, v11.35.4
- Added (v11.36.0):
await core.setAlwaysLatestBlock(enabled). - Changed (v11.35.4): a session opened with a
groupoption assigns that group to a core that has none, so a core first opened without a group can join one later. Previously the option only took effect when the core was created.
HyperDHT — v6.34.0
- Changed:
node.statsreports more counters—punches.tryLaterandpunches.tryLaterRelayedHandshakesAtLeastOncefor rate-limited hole-punch attempts, and asocketPoolgroup for socket pool lifecycle. The existingpunchesandrelayingcounters are unchanged.
Hyperswarm — v4.17.1
- Changed: a client connection that fails with
CANNOT_HOLEPUNCHis now retried throughrelayThrough, joiningHOLEPUNCH_ABORTED,HOLEPUNCH_DOUBLE_RANDOMIZED_NATSandREMOTE_NOT_HOLEPUNCHABLE. For Pear this means a relay registered with--relayis also used when the DHT reports that a hole punch cannot succeed.
Compact-encoding — v3.5.0, v3.4.0
- Added (v3.5.0):
cenc.fixed8,cenc.fixed16andcenc.fixed24, alongside the existingfixed32andfixed64. - Added (v3.4.0):
cenc.bitarray.
Corestore — v7.12.5, v7.12.3
- Changed (v7.12.5):
store.get()forwardsallowLatestBlockto the Hypercore it returns, so the option can be set per session through the store rather than only on a directly constructed core. - Fixed (v7.12.3):
store.get({ group })on a core that is already open without a group now assigns it, so the core reachesstore.notifyGroup(topic). The assignment moved into Hypercore (v11.35.4, above).
Protomux — v3.12.0
- Changed: an async channel handler (
onmessage,onopen,onclose,ondrain,ondestroy) whose returned promise rejects after its channel has closed now makes the underlying stream emit awarningevent carrying the error, instead of destroying the stream. A rejection while the channel is still open still destroys the stream, and a synchronous throw is unaffected. Listen forwarningif you relied on the old behaviour to surface post-close errors.
Secretstream — v6.9.2
- Added: a
filterZeroByteMessagesoption, which drops zero-byte messages before they reach the message handler. It is on implicitly wheneverkeepAliveis set—so keep-alive users already had this behaviour—and can now be enabled on its own.
Hyperschema — v1.24.0, v1.23.0
- Breaking (wire format, v1.23.0): a field with
array: trueand typeboolis packed into a bitfield—auintlength followed byceil(length / 8)bytes—instead of one byte per value. A spec regenerated with 1.23.0 or later cannot decode bool arrays written by a spec generated with 1.22.x or earlier, and the reverse. Check any schema with a bool array before regenerating, and migrate data already written in the old layout. - Changed (v1.23.0): the bitwise types
uint1–uint7used as an array now fail at build time withcannot be used as an array; they only exist inside a struct's flags byte. - Added (v1.24.0):
fixed8,fixed16andfixed24types, backed by the new compact-encoding codecs.
See RPC and schemas for where Hyperschema fits.
blind-peering — v2.9.0, v2.8.0
- Changed (v2.8.0):
sendNotification()is rate-limited by default—10 per second, each waiting up to 10 seconds for a slot. Tune it with the newnotificationRateLimitconstructor option ({ capacity, interval, timeout }), or passnullto disable it. - Changed (v2.9.0):
addAutobase()finds every view and writer core through the Autobase itself, so itsadditionalViewsoption is ignored. Register cores that are not part of the Autobase withaddCore()instead. - Added (v2.9.0):
addAutobase()accepts an Autobee.
blind-peer — v3.15.0, v3.14.0
- Added: constructor options
perReferrerRateLimitParams(v3.15.0), a per-referrer rate limit on notification requests, andnotificationErrorSnapshotDelay(v3.14.0). - Changed (v3.15.0): the default
notificationTimeoutrises from 10 to 30 seconds.
2026-08-24 — P2P module updates
Hypercore — v11.35.2, v11.35.1, v11.35.0
- Added (v11.35.0):
core.getManifest([options])returns the manifest, optionally in its encoded wire form viaoptions.raw. - Added (v11.35.0):
Hypercore.parseManifest(manifest, [key])decodes and validates a manifest, optionally checking it hashes to a given key. - Changed (v11.35.0): the
manifestoption accepts an encoded manifest Buffer—a Buffer is read as a public key only when it is exactly 32 bytes. - Fixed (v11.35.1): the idle range completion scan.
- Fixed (v11.35.2): the replicator bails out when the core is closing, instead of continuing work against a closing session.
HyperDHT — v6.33.2, v6.33.1
- Fixed (v6.33.1): a node was pushed twice during HyperDHT initialization.
- Fixed (v6.33.1): the clearing timeout is unreferenced, so it no longer holds the process open.
- Fixed (v6.33.2): handshakes received while suspended are cleaned up, and clearing is reordered to match.
Compact-encoding — v3.3.2, v3.3.1
- Added (v3.3.2): TypeScript typings.
- Added (v3.3.1): validation on the signed integer codecs, so out-of-range values are rejected rather than silently encoded.
2026-07-30 — P2P module updates
Hypercore — v11.34.0–v11.35.1
- Changed (v11.34.0): the tree-node proof cache is enabled, cutting repeated proof work for peers that serve many connections.
- Added (v11.35.0): a manifest can be supplied as a raw buffer.
- Fixed (v11.35.1): the idle range-completion scan.
- Fixed (v11.34.1): the latest batch is always selected.
Hyperdrive — v13.3.3
- Fixed:
drive.download()anddrive.has()silently stalled or fetched the wrong data for entries written withdedup: true. Those entries store blobs as a non-contiguous block map rather than a contiguous range, and the contiguous form was being used for every entry.downloadDiff()had the same bug.
HyperDHT — v6.33.0
- Fixed: relayed server connections now inherit
connectionKeepAlivethe way direct sockets already did, and a relay-to-direct upgrade sends an explicit handoff packet so the peer observes the direct path before the relay is torn down. - Fixed: a LAN shortcut no longer blocks hole-punch fallback, and relay sockets close once a direct connection is established.
- Removed: the internal
global.Pearreference, following the Pear v3 removal of the ambient Pear API.
Corestore — v7.12.0, v7.11.1
- Changed (v7.12.0):
suspend()no longer performs an implicit flush. Write-ahead-log filtering makes reopening cheap, so the flush is no longer needed on every suspend. - Added (v7.11.1): a
treeCacheoption for tuning Hypercore's tree-node cache—raisemaxSizeon peers that serve more connections than usual.
See also
- Pear's release overview—
pearCLI andpear-*module releases. - Bare's release overview—Bare runtime and bare-* module releases.
- Building blocks reference—current API for Hypercore, Hyperdrive, and other building blocks.
- Helpers reference—current API for Corestore.
Last updated on
Was this helpful?