← Back to all sparks
N

NATS

DEVOPS
Velocity7.5

High-performance messaging system for distributed applications

NATS 2.15 introduces a desired-state reconciliation engine for JetStream, making cluster operations safe to run mid-flight.

messagingopen-sourcejetstreamdistributed-systemscloud-nativepubsub
Current state
NATS is in the RC phase for v2.15, which centers on a new desired-state metalayer for JetStream — a reconciliation engine that makes stream and consumer placement changes safe to execute during ongoing operations. Cancelling in-flight scale/move operations, changing replication factors mid-move, and peer-removing are all significantly safer. The parallel v2.14.7 release backports metalayer compatibility and fixes a set of JetStream data races and consumer state bugs identified during 2.15 testing.
Where it's heading
The desired-state metalayer is an architectural addition that addresses a real operational risk: JetStream's previous behavior required careful sequencing of cluster topology changes to avoid data loss or inconsistent state. The pattern across recent releases — isolated stream read locks, constant-time removal from service maps, reduced client buffer flushing — shows a systematic performance and correctness pass across JetStream at high scale. NATS is moving toward the safety properties needed for production-critical stateful messaging.
Prediction
v2.15.0 GA will likely ship within weeks of RC.2. The next cycle will probably extend desired-state semantics to more JetStream operations and potentially introduce observability tooling around reconciliation state, giving operators visibility into in-progress cluster changes.

Recent moves

  1. 19h ago

    NATS 2.15.0-RC.2: desired-state metalayer for JetStream

    ⚡ SPARK

    RC.2 is the near-final form of NATS 2.15's headliner: a desired-state reconciliation engine that makes JetStream stream/consumer placement changes safe to execute mid-flight. This is a fundamentally different operational model from 2.14, where interrupted scale/move operations required manual intervention to recover.

    View source ↗
  2. 20h ago

    NATS 2.14.7: stability and metalayer backward compatibility

    v2.14.7 is a companion to the 2.15 RC cycle: it adds backward compatibility for the new desired-state metalayer so operators can safely roll between 2.14 and 2.15, and upgrades Go to 1.26.8 with security-relevant crypto and stdlib bumps. The rand/v2 migration is a correctness fix that also improves performance for random number generation under high concurrency.

    View source ↗
  3. 1d ago

    NATS 2.14.7-RC.2: JetStream race condition fixes

    RC.2 of 2.14.7 fixes a data race between deduplication tracking and stream config updates, a nil consumer info on reset, and a ghost consumer assignment race on delete. These are correctness bugs surfaced during 2.15 development — they're the kind of edge case that manifests under concurrent load in production.

    View source ↗
  4. 5d ago

    NATS 2.14.7-RC.1: lock contention reduction and metalayer prep

    RC.1 adds metalayer compatibility to 2.14 for safe 2.14↔2.15 upgrades and reduces lock contention from event ID tracking. The dependency updates include security-relevant crypto and compress library bumps that belong in a stable branch patch.

    View source ↗
  5. 8d ago

    NATS 2.15.0-RC.1: first formal release candidate

    RC.1 marks the first formal release candidate for 2.15, shipping the initial desired-state metalayer implementation alongside the cancel-stream-move endpoint. The RC.2 that follows fixes the races that RC.1 testing surfaced — this is the point where the feature became production-testable rather than preview-only.

    View source ↗
  6. 19d ago

    NATS 2.14.6: JetStream read performance and Raft stability

    2.14.6 isolates stream reads with a dedicated lock (better direct-get performance under concurrent load), makes service import removal constant-time, and fixes Raft stall bugs affecting catchup correctness. These are the unglamorous fixes that keep JetStream stable at scale between major releases.

    View source ↗