You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(webapp): reject debounce windows that cannot collapse anything
Validation only looked at a caller-supplied maxDelay, so a deployment
that configures a server ceiling kept the original silent failure: a
delay at or above it accepted the trigger and then created a run per
trigger. The check now runs against the effective ceiling, whichever of
the two applies, and a delay given as a date is rejected as well since
the value is re-applied on every push and an absolute date can never
work.
Copy file name to clipboardExpand all lines: .changeset/debounce-max-duration.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ Debouncing with a `delay` longer than an hour now works. A hidden server-side li
6
6
7
7
That limit is gone. A debounce key with no `maxDelay` now keeps pushing its run back for as long as triggers keep arriving, which means it never executes while they do. Set `maxDelay` when the work has to happen eventually, and keep `delay` well below it, since the room available to push is the gap between the two.
8
8
9
-
Triggers that set a `maxDelay` no longer than their`delay` are now rejected, as are unparseable `maxDelay` values. Both previously went through and left debouncing doing nothing.
9
+
Triggers we know cannot debounce are now rejected instead of quietly doing nothing: a `maxDelay` no longer than the`delay`, an unparseable `maxDelay`, and a `delay` given as a date rather than a duration. Self-hosters who configure a maximum debounce duration get the same treatment for a `delay` at or above it.
Copy file name to clipboardExpand all lines: docs/triggering.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -928,7 +928,7 @@ Consider `delay: "5s"` and `maxDelay: "30s"` with triggers arriving every 2 seco
928
928
929
929
Without `maxDelay`, continuous triggers would prevent the run from ever executing. With `maxDelay: "30s"`, execution is guaranteed within 30 seconds of the first trigger.
930
930
931
-
Keep `delay` well below `maxDelay`. A run is only pushed back while its new execution time stays inside `maxDelay`, so the room you have to push is `maxDelay` minus `delay`. Setting them equal, or setting `delay` higher, leaves no room at all: every trigger creates its own run and the debounce key has no effect.
931
+
Keep `delay` well below `maxDelay`. A run is only pushed back while its new execution time stays inside `maxDelay`, so the room you have to push is `maxDelay` minus `delay`. Setting them equal, or setting `delay` higher, leaves no room at all, and the trigger is rejected rather than accepted as a debounce that could never collapse anything.
932
932
933
933
<Note>
934
934
The `maxDelay` value is evaluated from each trigger call, not stored with the original run. This
0 commit comments