• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

supabase / supabase-flutter / 37789579735
92%

Build:
DEFAULT BRANCH: main
Ran 08 Oct 2026 02:06PM UTC
Jobs 11
Files 175
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 Oct 2026 02:05PM UTC coverage: 91.705% (+0.08%) from 91.625%
37789579735

push

github

web-flow
fix: honor Retry-After and abort signals in retries, and share one retry loop (#1929)

Fixes
[SDK-2132](https://linear.app/supabase/issue/SDK-2132/fix-honor-retry-after-and-abort-signals-in-retries-and-share-one-retry).

## What

- **One retry loop.** PostgREST now uses the shared `retry()` from
`supabase_common` instead of its own loop. `retry()` gains a
`retryIfResult` hook, so a client can retry on what the server answered
(PostgREST's `503`/`520`) and still get that response back once the
retries run out. PostgREST keeps retrying a
`PostgrestTransportException`, as it does on main.
- **`Retry-After` is honored.** `retry()` takes a `retryAfter` hook, and
the new `parseRetryAfter` reads the header as delta seconds or an HTTP
date. Like in Swift, a date that is not in the future, a negative value,
or garbage falls back to the jittered backoff. A requested delay is
capped at `SupabaseRetryOptions.maxDelay`.
  - PostgREST reads the header from a retryable response.
- Auth: `AuthRetryableApiException` gets a `retryAfter` getter, parsed
from the `headers` it now carries, and the token refresh waits that
long. Its next-tick deadline check uses the same delay, capped at
`maxDelay`.
- Storage only retries transport failures that have no response, so
nothing changes there.
- **Abort signals cut the backoff short.** PostgREST waited out its
backoff with a plain `Future.delayed`. It now passes its abort signal to
the shared loop, so aborting during the backoff ends the request at once
instead of waiting out the delay.

## Notes

- `AuthRetryableApiException.retryAfter` is registered in
`sdk-compliance.yaml`. The rest is in `supabase_common`, which the
capability scan excludes.
- `supabase_common` now depends directly on `http_parser`, which `http`
already pulls in, to parse the HTTP date.

## Tests

- `supabase_common`: `retryIfResult`, `retryAfter` (including the
`maxDelay` cap and an abort during that delay) and `parseRetryAfter`.
- `postgrest`: a `Retry-Aft... (continued)

49 of 49 new or added lines in 4 files covered. (100.0%)

9452 of 10307 relevant lines covered (91.7%)

5.25 hits per line

Jobs
ID Job ID Ran Files Coverage
2 supabase_storage - 37789579735.2 08 Oct 2026 02:09PM UTC 9
98.46
GitHub Action Run
3 supabase_auth - 37789579735.3 08 Oct 2026 02:10PM UTC 32
92.16
GitHub Action Run
4 supabase_common - 37789579735.4 08 Oct 2026 02:06PM UTC 22
88.66
GitHub Action Run
5 supabase_functions - 37789579735.5 08 Oct 2026 02:06PM UTC 4
93.16
GitHub Action Run
6 supabase_realtime - 37789579735.6 08 Oct 2026 02:09PM UTC 14
91.11
GitHub Action Run
7 supabase_flutter - 37789579735.7 08 Oct 2026 02:07PM UTC 15
81.0
GitHub Action Run
8 iceberg - 37789579735.8 08 Oct 2026 02:06PM UTC 6
69.17
GitHub Action Run
9 supabase_typegen - 37789579735.9 08 Oct 2026 02:08PM UTC 24
96.19
GitHub Action Run
10 supabase - 37789579735.10 08 Oct 2026 02:10PM UTC 18
94.33
GitHub Action Run
11 postgrest - 37789579735.11 08 Oct 2026 02:09PM UTC 30
93.93
GitHub Action Run
11 yet_another_json_isolate - 37623283614.11 07 Oct 2026 12:48PM UTC 1
98.44
GitHub Action Run
Source Files on build 37789579735
  • Tree
  • List 175
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37789579735
  • 7b74d7e5 on github
  • Prev Build on main (#37623283614)
  • Next Build on main (#37939731741)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc