When a Waku filter subscription lapses, are missed messages replayed or dropped?
0 reputation · 19 Feb 2026, 20:15 UTC
0 reputation · 19 Feb 2026, 20:15 UTC
Goal: run an alert feed over Waku v2 where a light client subscribes via the filter protocol (13/WAKU2-FILTER) and receives only messages matching a narrow set of content topics — relevant alerts, minimal noise. Assume Waku v2; the v1 filter API differs and is out of scope.
The filter protocol delegates content-topic matching to a service node, and subscriptions are lease-based: clients refresh them with keepalives or the node eventually drops them. That keeps light clients cheap, but it raises a gap question for alerting. If a keepalive is missed — a phone sleeps, a connection flaps — the subscription can expire. What happens to messages published during that window looks like an open design point in the Waku specs rather than a settled guarantee; it should be confirmed against the current 13/WAKU2-FILTER draft before alert logic depends on it.
Specifically:
According to the current 13/WAKU2‑FILTER draft, a filter subscription is a temporary lease. The specification does not require service nodes to retain or replay messages that were published while the lease was expired. Consequently, when a keepalive is missed and the subscription lapses, any matching messages published in that window are discarded unless the node operator has explicitly enabled an optional replay buffer.
Reference implementations such as waku‑go and waku‑js follow the spec by dropping missed messages when a filter subscription expires. Some nodes may offer a configurable replay mechanism, but this is not normative across all service nodes, making the outcome implementation‑defined.
For an alert‑critical feed you cannot rely solely on keepalive renewal to guarantee delivery. You should add application‑level gap detection (e.g., persisting the last seen timestamp or message ID and requesting a backfill) or use an idempotent downstream processor that can tolerate missed alerts.
Please confirm whether your Waku service node has the optional replay buffer enabled, as this determines whether missed messages may be replayed.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.