Describe the bug
When InstanceStart returns an error (e.g. container does not exist), both strategies fail to handle it properly:
- Dynamic: The loading page shows an empty instance with no name and no status instead of displaying the error. The page keeps auto-refreshing forever because the session is never stored and
InstanceStart is retried on every request.
- Blocking:
RequestReadySession polls RequestSession until timeout, retrying InstanceStart on every tick. The individual instance error is embedded in InstanceInfoWithError.Error but never checked — only IsReady() is evaluated, which always returns false.
Context
- Sablier version: 1.11.1
- Provider: all (confirmed with Podman and Docker)
- Reverse proxy: N/A (direct API access)
- Sablier running inside a container? No
Expected behavior
- Dynamic: The loading page should display the instance name and the error message so the user can understand what went wrong. The theme already supports error rendering via
{{ if $instance.Error }}.
- Blocking: The endpoint should return the error immediately instead of retrying until timeout.
Additional context
Root cause: InstanceInfoWithError.Error is set when InstanceStart fails, but neither the dynamic rendering path nor the blocking polling loop checks it.
Describe the bug
When
InstanceStartreturns an error (e.g. container does not exist), both strategies fail to handle it properly:InstanceStartis retried on every request.RequestReadySessionpollsRequestSessionuntil timeout, retryingInstanceStarton every tick. The individual instance error is embedded inInstanceInfoWithError.Errorbut never checked — onlyIsReady()is evaluated, which always returns false.Context
Expected behavior
{{ if $instance.Error }}.Additional context
Root cause:
InstanceInfoWithError.Erroris set whenInstanceStartfails, but neither the dynamic rendering path nor the blocking polling loop checks it.