All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Changes before Tatum release are not documented in this file.
103.3.1 - 2026-02-03
- Add
timers-browserifypolyfill to@streamr/dhtfor standalone browser usage (#3379)
103.3.0 - 2026-01-29
-
BREAKING CHANGE: The following packages no longer include all source files in
dist. They now export bundled artifacts for ESM, CJS, and TypeScript declarations only:@streamr/sdk@streamr/utils@streamr/dht@streamr/proto-rpc@streamr/test-utils@streamr/autocertifier-client@streamr/trackerless-network
If you previously relied on importing internal files directly from
dist, you must update your imports to use the package's public exports.
- Expose cross-environment cryptographic utilities from
@streamr/utilsfor both browser and Node.js (#3342):- AES cipher utilities:
createCipheriv,createDecipheriv - Hash functions:
computeMd5,computeSha1 - RSA utilities:
publicEncrypt,privateDecrypt - Random bytes:
randomBytes(re-exported from@noble/post-quantum/utils) - Types:
CryptoKey,Jwk
- AES cipher utilities:
- Bundle a limited browser-compatible version of
autocertifier-client(#3340)
- Internal packages now produce separate bundles for browser and Node.js environments, improving tree-shaking and reducing polyfill requirements (#3321, #3322, #3330, #3333, #3335, #3336, #3337, #3338, #3339)
- Bundle
@streamr/sdkfor browser (no polyfills required!) and for Node.js (#3358)
- BREAKING CHANGE: The package no longer provides a default export. Use named imports instead:
import { StreamrClient } from '@streamr/sdk'. The UMD bundle remains accessible viawindow.StreamrClient. (#3358) - Use named
StreamrClientexport and explicittypeimport syntax (#3369) - Use named imports for
EventEmitterfromeventemitter3(#3366)
- Resolve circular dependencies in the SDK package (#3361, #3367)
- Clean-up
tsyringesetup (#3362) - Fix ES module compatibility for migrations URL resolution (#3373)
- Support TypeScript karma-setup files (#3368)
103.2.2 - 2026-01-19
- Update package lock files
103.2.1 - 2026-01-19
- Fix outdated GitHub URLs referencing old
network-monoreporepository instead ofnetwork(#3348)
- Resolve selected circular dependencies in the SDK package (#3351)
- Make
executeSafePromisework in browsers without polyfills (#3310) - Use explicit logger scopes instead of NodeJS-specific
module(#3309, #3317)
- Fix logger id type handling after minimization
- Delete unused DNS records in batches from Route53 (#3346)
- Wait for acme-challenge record to propagate (#3347)
- Add error handling for delete records operation (#3349)
- Only delete existing records from Route53 (#3350)
103.2.0 - 2025-12-18
- Proxy connections now support bidirectionality and it is the default behavior (#3260)
- Add
StreamrClient#findProxyNodes()function for discovering proxy nodes via Operator nodes (#3257) - Add
StreamrClient#publishRaw()for publishing raw messages (#3280) - Add new
keysconfiguration to theencryptionsection (#3284) - Add new
validationconfiguration section (#3302) - Add new configuration options for controlling content delivery buffering (#3305)
- Remove
StreamrClient#findOperators()function which was marked as internal (#3257)
- Bump autostaker's fixed gas limit for actions from 500k gas to 750k gas
- Add
--partitionflag tostream publish(#3262) - Add
--with-metadataflag tostream publish(#3265) - Add
--binaryflag tostream publishandstream subcribe(#3282) - Add
--rawflag tostream publish(#3282)
- Signature output in
subscribe --with-metadata(#3245) - Error handling of
--partitionflag insubscribe(#3263)
103.1.2 - 2025-11-21
- Update default list of JSON RPC urls for Polygon (removed a dead one)
Autostaker changes:
- transaction timeouts (#3236)
- queries filter by required block number (#3238)
- autostaker fixes and optimizations (#3237)
103.1.1 - 2025-11-11
- Update default list of JSON RPC urls for Polygon (replace a dead one with a working one) (#3227)
- Autostaker changes: (#3227)
- bump gas limit on stake/unstake calls by 20% to defend against too low estimates in case contract change rapidly changes
- retry actions that fail in preflight check
- guard against subgraph not being up to date when a new sponsorship event is seen on chain
- broadcast autostaker stake/unstake transactions in parallel to speed up action execution
103.1.0 - 2025-10-14
- Add support for using the plumtree optimization in stream partitions (#3147)
- Add listenable event
sponsorshipCreated(#3191) - Add config option
contracts.sponsorshipFactoryChainAddress(#3191)
- Optimize
StreamrClient#searchStreams()(#3132)
103.0.0 - 2025-06-10
- Add support for quantum resistant key exchange using ML-KEM (#3060)
- Add support for quantum resistant signatures using ML-DSA (#3074)
- Add support for ECDSA on secp256r1 curve (#3088)
- Add new storage node address
STREAMR_STORAGE_NODE_ADDRESS(#3020) - Add
peaqenvironment (#3111) - Add
iotexenvironment (#3142)
- BREAKING CHANGE: Browser exports improved, but polyfills now required
- The package now correctly exposes a
scriptexport and maps Node-specific modules via thebrowserfield - Some Node.js modules are no longer automatically polyfilled. Use tools like
node-polyfill-webpack-plugin(Webpack) orvite-plugin-node-polyfills(Vite) - Refer to the docs for migration details
- The package now correctly exposes a
- BREAKING CHANGE: The string values in
Message.signatureTypenow correspond with theKeyTypevalues. This means the previously output valueSECP256K1is nowECDSA_SECP256K1_EVM. - BREAKING CHANGE: Rename
groupKeyIdfieldencryptionKeyIdinMessageinterface (#3084) - BREAKING CHANGE: Node.js v20 or higher is required (#3138)
- Deprecate storage node address
STREAMR_STORAGE_NODE_GERMANY(#3020)
- BREAKING CHANGE: Remove lit protocol integration and related config options
encryption.litProtocolEnabledandencryption.litProtocolLogging(#3036) - BREAKING CHANGE: Remove
StreamrClient#generateEthereumAccount()in favour ofEthereumKeyPairIdentity#generate() - BREAKING CHANGE: Remove
orderByparameter fromStreamrClient#searchStreams()(#3131)
- Fix memory leak in
DhtNode(#3065)
- Add experimental
autostakerplugin that manages sponsorship staking and unstaking automatically for operators (#3086)
- BREAKING CHANGE: Node.js v20 or higher is required (#3138)
- CLI tool allows generating key pairs with
streamr identity generate --key-type [...](#3074)
- BREAKING CHANGE: CLI tool command
streamr wallet whoamiis nowstreamr identity whoami(#3074) - BREAKING CHANGE: Node.js v20 or higher is required (#3138)
102.1.1 - 2025-04-29
- Update internal list of JSON RPC urls for Polygon
102.1.0 - 2025-02-19
- Fix false flagging issue (#3006)
- Add new sub command
streamr storage-node registerto register a storage node (#2982) - Add new sub command
streamr storage-node unregisterto unregister a storage node (#2982) - Add new sub command
streamr storage-node showto display the metadata of a storage node (#2982)
102.0.0 - 2025-01-27
- Add support for arbitrary length user IDs: (#2774, #2780)
- it is supported for
PUBLISHandSUBSCRIBEpermissions - new
StreamrClient#getUserId()method
- it is supported for
- Method
StreamrClient#getDiagnosticInfo()provides diagnostic info about network (#2740, #2741) - Add accessors for stream metadata fields: (#2825, #2845, #2883)
Stream#getPartitionCount()Stream#getDescription()andStream#setDescription()Stream#getStorageDayCount()andStream#setStorageDayCount()
- Add method
StreamrClient#getStreamMetadata()(#2883) - Add validation for public permissions (#2819)
- Add
optsparameter toStreamrClient#addStreamToStorageNode(#2858)- controls how long to wait for storage node to pick up on assignment
- BREAKING CHANGE: Rename
usertouserIdin these interfaces: (#2811)UserPermissionAssignment- used in
grantPermissions(),revokePermissions(),getPermissions()andsetPermissions()
- used in
UserPermissionQuery- used in
hasPermission()
- used in
SearchStreamsPermissionFilter- used in
searchStreams()
- used in
- BREAKING CHANGE: Type
StreamMetadataisRecord<string, unknown>(#2825, #2845)- some new accessors available, see above
- no default values are injected (#2851)
- BREAKING CHANGE: Method
Stream#addToStorageNode()doesn't wait for acknowledgment by default (#2810) - BREAKING CHANGE: Replace methods
StreamrClient#updateStream()andStream#update(): (#2826, #2855, #2859, #2862)- use
StreamrClient#setStreamMetadata()andStream#setMetadata()instead - both methods overwrite metadata instead of merging it
- use
- BREAKING CHANGE: Methods
Stream#getMetadata()andStream#getStreamParts()are async (#2883) - BREAKING CHANGE: Rename event
streamRemovedFromFromStorageNodetostreamRemovedFromStorageNode(#2930) - BREAKING CHANGE: Replace custom errors with
StreamrClientError: (#2895, #2927)StreamrClientErrorcontainsMessageIDinstead ofStreamMessage
- Caching changes:
- Upgrade
StreamRegistryfrom v4 to v5 (#2780) - Network-level changes:
- BREAKING CHANGE: Remove
Stream#detectFields()method (#2864) - BREAKING CHANGE: Remove
Stream#delete()method (#2863)- use
StreamrClient#deleteStream()instead
- use
- BREAKING CHANGE: Remove
StreamrClient#findOperators()method (#2876) - Remove support for legacy encryption keys (#2757)
- Remove obsolete config options:
- Fix WebRTC connections in Firefox (#2746)
- Fix flag expiration time in
Operator#getExpiredFlags()(#2739) - Network-level fixes:
- Add new operator plugin config options (for testing purposes) (#2742)
- The
environmentconfig option now applies additional settings ifdev2value is used (#2813)- e.g. disables
entryPointDiscoveryandmetrics
- e.g. disables
- BREAKING CHANGE: Remove deprecated
bin/config-wizardscript (i.e. thestreamr-broker-initcommand) (#2830)- use
streamr-node-initcommand instead
- use
- BREAKING CHANGE: Remove deprecated command
streamr-broker(#2881)- use
streamr-nodecommand instead
- use
- Fix operator flag voting behavior when using custom gas estimation (#2784)
- Fix a bug causing the inspection process to freeze (#2893)
- Fix analysis of WebRTC private address probing warning (#3070)
- Add binary data support to
streamr stream publish(#2947) - Add binary data support to
streamr stream susbcribe(#2948) - Add binary data support to
streamr mock-data generatecommand (#2946)
- BREAKING CHANGE: Replace
--devflag with--envflag (#2817, #2834)- the
--envflag supports multiple environments - if there is a value for
environmentin a config file, this overrides it - use
--env dev2for the development environment
- the
101.1.2 - 2024-09-04
- Fixed gas estimation in
Operator#voteOnFlag(#2734)
101.1.1 - 2024-08-29
- Numerous improvements to time-to-data (#2723, #2724, #2726, #2727)
- Reduce message propagation cache TTL from 30 seconds to 10 seconds (#2732)
- Optimize the "operator value breach" task to be less demanding on EVM RPCs (#2721)
- Add better checks to the "expired flag closing" task so that the likelihood of submitting reverting transactions to the blockchain is reduced (#2725)
101.1.0 - 2024-08-13
- Add method
findOperatorsto client (#2703)
- Fix operator review request event parsing (#2714)
- Operators now register external RPC endpoints for accelerated stream entrypoint discovery (#2702)
101.0.1 - 2024-07-09
- Set default RPC timeout to 30 seconds (https://github.com/streamr-dev/network/commit/131fb456d26486c12b2facd6e78bee47319c2533)
101.0.0 - 2024-07-08
- Update ethers.js library to v6 (#2506)
- Restructure
contractsconfig section (#2581) - Improve reliability of JSON RPC interactions by adding retry redundancy (#2562, #2601)
- Rename events (#2604, #2605) as denoted below
createStream=>streamCreatedaddToStorageNode=>streamAddedToStorageNoderemoveFromStorageNode=>streamRemovedFromFromStorageNoderesendComplete=>resendCompleted(on instances ofSubscription)
- Remove obsolete RPC provider options (#2583)
- Deprecate command
streamr-broker. Usestreamr-nodeinstead. (#2626) - Deprecate command
streamr-broker-init. Usestreamr-node-initinstead. (#2626)
- Fix memory leak in SubscriberPlugin (#2578)
100.2.4 - 2024-05-06
- New geolocation detection by Nodes improves start up times and the decentralization of the network (#2465)
- Improved rejoining streams after losing internet connection (#2502)
- Discovering stream neighbors is more efficient as offline nodes are cleaned-up by sending pings (#2501)
- Hanging connection issue with WebSocket clients (#2519)
- Nodes provide geolocation detection for newly joining nodes (#2465)
- Removed `governance vote' command (#2538)
100.2.3 - 2024-04-15
100.2.2 - 2024-04-03
- Update internal list of JSON RPC urls for Polygon
100.2.1 - 2024-04-02
- Add node ID to metrics messages (#2464)
- Change the way in which the partition of the metrics stream is calculated (based on node ID) (#2468)
- Fix Node.js v18 compatibility (#2462)
- Update Docker runtime to Node.js v20 (#2466)
100.2.0 - 2024-03-28
- Add support for subscribing to a stream on behalf of an ERC-1271 contract (#2454)
100.1.2 - 2024-03-27
- Update internal list of JSON RPC urls for Mumbai testnet
100.1.1 - 2024-03-26
- Update internal list of JSON RPC urls for Polygon
100.1.0 - 2024-03-25
- Add support for publishing messages on behalf of an ERC-1271 contract (#2423)
- Add fields
signatureTypeandgroupKeyIdtoMessageinterface (#2423) - Add ability to disable websocket server (#2425)
- Change websocket client library implementation used in Node.js (#2384)