Observed behaviour
On my self-hosted instance, opening the GIF picker sometimes fails on the first attempt with "GIFs could not load".
image
The API returns
503 Service Unavailable with shard_unavailable for GET /v1/gifs/featured.
This has happened during normal use for multiple users on the instance. Retrying shortly afterwards succeeds immediately.
image
Observed examples:
- 503 after 5005 ms
- 503 after 5159 ms
- 503 after 5134 ms
Reproduction steps
- Open the self-hosted Fluxer web client and sign in.
- Open browser DevTools → Network.
- Open the GIF picker and locate the request to
/v1/gifs/featured?locale=en-US. - Edit and resend the request using a previously unused locale that is accepted by the endpoint, for example
sv-SEorpt-BR. - Observe that the first request can return
503 shard_unavailableafter almost exactly 5 seconds. - Send the exact same request with the same locale again.
- Observe that it now returns
200almost immediately.
sv-SE:
first request -> 503 shard_unavailable - 5019 ms
retry -> 200 - 20 ms
pt-BR:
first request -> 503 shard_unavailable - 5009 ms
later request -> 200 - 13 ms
en-US requests return immediately.
The same issue also occurs naturally when users open the GIF picker, without modifying requests in DevTools.Build information
Stable Web 2026.1001.233209, Linux (x64), Firefox 157.0, Locale en-US
Platform
Self-hosting
Details
Reproducible sv-SE case
GET /v1/gifs/featured
status: 503
durationMs: 5019
error: ServiceUnavailableError
message: shard_unavailable
op: GetFeatured
GET /v1/gifs/featured
status: 200
durationMs: 20
Reproducible pt-BR case
GET /v1/gifs/featured
status: 503
durationMs: 5009
error: ServiceUnavailableError
message: shard_unavailable
op: GetFeatured
GET /v1/gifs/featured
status: 200
durationMs: 13
Example from normal use
GET /v1/gifs/featured
status: 503
durationMs: 5134
error: ServiceUnavailableError
message: shard_unavailable
op: GetFeatured
GET /v1/gifs/featured
status: 200
durationMs: 18
gifs-shard to take longer than that on the initial request.
FLUXER_GIF_SERVICE_TIMEOUT_MS is not explicitly configured on this instance; the stock self-hosting Compose configuration is used.