Changes
This is the first major release of node-redis since 5.x. The headline change is RESP3 by default, alongside broader Redis 8.8 command coverage, pubsub/cluster reliability fixes, and a bumped minimum Node.js version.
Key changes
- RESP3 is the default protocol — opt back into RESP2 explicitly if you need the old wire format
- Node.js 20 is the new minimum supported runtime
- Redis 8.8 coverage — new array commands, INCREX / INCREXBYFLOAT, ZINTER/ZUNION COUNT aggregator, XNACK, CLIENT UNBLOCK
- Sentinel & cluster pubsub fixes for failover-moved connections and sharded topology recovery
- Stack modules exposed on pool type and the core client classes are now publicly re-exported
🔥 Breaking Changes
See the v5 → v6 migration guide for migration steps.
- RESP3 is now the default protocol (#3215)
- Node.js 20 is now the minimum supported version (#3293)
- New default values for
keepAliveInitialDelay(30s) andcommandTimeout(5s) (#3292)
🔒 Security
- entraid: bump
@azure/msal-nodeto 5.x to drop vulnerable transitiveuuid(CVE-2026-41907) (#3269)
🚀 New Features
- Add
CLIENT UNBLOCKcommand (#3266) - Add
XNACKcommand with options (#3238) - Add Redis 8.8 array commands (#3285)
- Add
INCREXandINCREXBYFLOATcommands (#3288) - Add
COUNTaggregator toZINTER/ZINTERSTORE/ZUNION/ZUNIONSTORE(#3243) - Add
FPHAoption toJSON.SET(#3235) - time-series: add multi-aggregation range APIs (#3249)
- Add
duplicate()method toRedisSentinel(#3212) - Parse
unix://URLs inparseURL(#3271) - Expose
RedisClient,RedisCluster,RedisSentineland pool classes (#3251) - Expose stack modules on the pool type (#3267)
🐛 Bug Fixes
- sentinel: use mapped address when failover moves pubsub connections (#3190)
- cluster: recover sharded pubsub topology after node reconnects (#3223)
- client: swallow synchronous EPIPE from writeAfterFIN (#3283)
- search: allow
LOAD *inFT.AGGREGATE(#3241) - otel: record client connection errors (#3259)
- entraid: bump
@azure/msal-nodeto 5.x to drop vulnerableuuidtransitive (#3269) - Fix wrapper command options handling (#3295)
- Non-functional typo fixes (#3244)
📚 Documentation
- Document Node.js 20 minimum version in migration guide (#3293)
- Numerous typo and grammar fixes across docs and comments (#3230, #3231, #3232, #3239, #3240, #3242, #3245, #3246, #3
- Inline JSDoc improvements (#3250)
- Compact receiver hovers via public type aliases (#3248)
🧰 Maintenance
- Add changed-file lint gate (#3257)
- CI: lint changed files against PR merge base (#3265)
- CI: build monorepo before documentation generation (#3233)
- Add
min-release-agecooldown to.npmrc(#3286) - Allow empty object types in lint config (#3263)
- Add hash field subkey notifications test (#3264)
- Restore generic-transformers spec on current APIs (#3214)
- Bump default docker test image through 8.8 milestones to 8.8-rc1 (#3234, #3236, #3260, #3284)
- chore(deps): bump
basic-ftp(#3225),tmpand@inquirer/editor(#3294)
👥 New Contributors
- @Rohan5commit made their first contribution in #3232
- @opensourcezeal made their first contribution in #3244
- @aarond-sp made their first contribution in #3251
- @claygeo made their first contribution in #3212
- @raashish1601 made their first contribution in #3267
We'd like to thank all the contributors who worked on this release!
@Rohan5commit, @opensourcezeal, @aarond-sp, @claygeo, @raashish1601, @watersRand, @PavelPashov, @elimelt, @nkaradzhov
Full Changelog: https://github.com/redis/node-redis/compare/redis@5.12.1...redis@6.0.0