npm / ioredis
ioredis
What changed in ioredis 5 to 6, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
3 breaking3 security21 new APIs and options2 behavior and defaults14 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initioredis 621 changes
Breaking changes 3
Node.js 20 or newer is now required to use ioredis.
The default wire protocol is now RESP3; set protocol to 2 to retain the v5 wire protocol.
Adds RESP3 support and uses it by default; set protocol to 2 to retain the v5 wire protocol.
Security 3
Redacts values for GETSET in tracing.
Validates MOVED slots to prevent Array.prototype pollution.
Redacts values for PSETEX in tracing.
New APIs and options 9
Adds support for the BLMOVEM command.
Exports ClusterStatus.
Adds support for himport managed fieldsets.
Adds support for the LMOVEM command.
Adds MAXCOUNT support for stream reads.
Adds MAXSIZE support for stream reads.
Adds support for Redis 8.10 set cardinality commands.
Exports RedisStatus.
Exports ScanStreamOptions.
Behavior and default changes 1
Improves default connection resilience.
Fixes and other changes 5
Recreates a stale connection when a circular MOVED occurs in cluster mode.
Keeps reconnecting if the connection closes during client setup.
Serializes large integer arguments in decimal notation.
Preserves a preferred slave priority of zero.
Clears stale socket timeouts on reconnect.
ioredis 522 changes
New APIs and options 12
Adds support for array commands and their typings.
Adds typed support for the GCRA command.
Adds support for the increx command.
Adds support for Redis MSETEX.
Adds TracingChannel support.
Adds support for vector set commands.
Adds support for the xnack command.
Adds zinter support with count.
Adds zunion support with count.
Adds support for the HEXPIREAT hash field expiration command.
Adds support for the HEXPIRETIME hash field expiration command.
Timeouts are now supported for blocking commands.
Behavior and default changes 1
Client-side blocking timeouts are now opt-in.
Fixes and other changes 9
Cluster clients now reconnect to nodes that restart without slot changes.
Protocol-relative Redis URLs are parsed as TCP connections.
Prevents a RangeError caused by string accumulation in pipelines.
Sharded subscribers now start lazily.
Autopipelining routes writes to masters when scaleReads is configured.
Fixes an issue with moved commands for replicas.
Optional properties on RedisOptions now allow explicit undefined in TypeScript.
Cluster reconnects sharded subscribers.
Commands no longer require unnecessary case sensitivity.