Missing global requestTimeout configuration in Remix loaders and actions
0 reputation · 18 Sept 2026, 23:49 UTC
Developers need a declarative way to abort long‑running loader or action work after a set duration, without writing manual Promise.race logic each time.
The current Remix API only provides an AbortSignal tied to navigation, leaving timeout handling as an open design decision. Uncertainties include whether the timeout should be defined globally in remix.config.js, per‑route via an exported constant, or both, and how it should compose with the existing request.signal to avoid double‑cancellation or race conditions.
Should Remix introduce a global requestTimeout option? Should it allow a per‑route timeout export? How should the timeout‑initiated abort interact with the AbortSignal already passed to loaders and actions?