NATS
v2.14.6Networking & MessagingAug 27, 2026
A maintenance release focused on performance improvements and JetStream correctness fixes. It also enforces a standalone-server constraint and updates the Go toolchain.
Action needed (1)
breakingConsumer direct or sourcing status protection
Consumer updates can no longer change the consumer direct or sourcing status.
Check if affected (1)
breakingStandalone stream updates with
replicasgreater than 1 rejectedApplies if you configure
replicasgreater than 1 and do not run a clustered system.Stream config updates with
replicasgreater than 1 are now rejected on non-clustered systems.
All 27 other recorded changesfixes 19 · value changes 7 · constraints 1
fixes (19)
- - WebSocket client buffers are recycled more aggressively when reallocating into larger buffers (#8518)
- - Fixed missing routes after a reconnect when gossiped URLs were rejected (#8527)
- - The filestore block sync no longer incorrectly skips blocks that were compacted during the same pass (#8456)
- - The filestore block sync now performs a single directory sync upon completion rather than once per compacted block (#8461)
- - The filestore I/O semaphore now covers block sync operations (#8462)
- - Fixed some issues that could prevent stream snapshots from taking place on a clean shutdown (#8465)
- - The filestore inline compaction no longer ignores
sync_interval: always(#8475) - - The stream created time is now preserved after recovery on a standalone server (#8471, contributed by @Green7)
- - Fixed a data race that could apply when accessing the batch ID (#8369)
- - Fixed a data race when reading the consumer direct or sourcing status (#8478, contributed by @nberlee)
- - Fixed an issue where the server could fail to distinguish consumer tiers when enforcing limits (#8484)
- - Fixed a flow control problem where replicated consumers could get stuck after a leader change (#8488)
- - Fixed various consumer create issues that could destroy the state of an existing consumer with the same name (#8491)
- - Internal message delete proposals are no longer counted in the JS API statistics (#8502)
- - Dynamic filestore reservations no longer incorrectly shrink based on used storage after restarts (#8503)
- - Fixed a signalling issue that could stall Raft catchups (#8501)
- - Fixed an issue where a stale snapshot from a previous Raft group could be replayed if the group name was unchanged (#8501)
- - Consumer delivery counts will no longer underflow below zero (#8512, contributed by @no-hup)
- -
AckFlowControlconsumers from a work queue stream will no longer incorrectly ack messages outside of the consumer filter (#8431, #8528)
value changes (7)
- - 1.26.7
- - Removal from service import response maps is now constant-time (#8463)
- - The client code no longer resets the deadline more times than necessary when flushing client buffers (#8513)
- - The client write buffers are now freed correctly when the working buffer exceeds a rational size (#8515)
- - Stream reads are now isolated with a separate lock, which improves the performance of direct gets (#8486)
- - Improved the performance of looking up matching sequence numbers for multi-subject gets (#8486)
- - Reduced the number of heap escapes in subject tree matching (#8526)
constraints (1)
- - The pending append entry cache in-memory is now bounded by size as well as entry count (#8501)
Add NATS to your stack
A weekly email arrives when a release needs action. Like the breaking changes in this release.