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

supabase / supabase-flutter / 39979930520
94%

Build:
DEFAULT BRANCH: main
Ran 23 Oct 2026 03:39PM UTC
Jobs 12
Files 185
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

23 Oct 2026 03:37PM UTC coverage: 92.7% (+0.06%) from 92.64%
39979930520

push

github

web-flow
fix(supabase)!: make stream() survive reconnects without losing or corrupting rows (#2028)

Resolves
[SDK-2337](https://linear.app/supabase/issue/SDK-2337/fixsupabase-make-stream-survive-reconnects-without-losing-or).

`stream()` broke or showed wrong data around realtime reconnects. This
reworks the lifecycle in `SupabaseStreamBuilder`.

## Changes

1. **A failed fetch no longer ends the stream.** A transient failure is
retried with the realtime client's `reconnectAfter` backoff. While the
retry is pending, changes are applied to the previous snapshot if there
is one, so live updates keep flowing and nothing piles up in a buffer. A
client error that a retry cannot fix (a 4xx other than 401, 408 or 429,
such as a missing table) is reported and closes the stream, as before.
2. **Socket drops are no longer reported.** A `channelError` or
`timedOut` status is now reported only when the channel won't rejoin by
itself, for example when the server declines the subscription. Drops and
join timeouts put the channel into its errored state, so it rejoins and
the rows are fetched again. Those are only logged. The `stream()`
dartdoc no longer claims the stream closes when the connection closes.
3. **The snapshot is taken once replication is live.** A successful join
does not yet mean the server streams the changes; the server confirms
that with a `system` event (`extension: postgres_changes`, `status:
ok`). The rows are fetched on that event after every join. If the server
never sends it, a fallback fetch runs after the realtime client's
`timeout`. Changes that arrive during the fetch are buffered and applied
on top of its result. Each fetch has an id, so the result of a
superseded or cancelled fetch is dropped. If the channel cannot join at
all, a `channelError` or `timedOut` before the first snapshot still
triggers a fetch, so the rows are shown without realtime.
4. **A change with `errors` triggers a fetch.** A payload the server
could not send in full (for ex... (continued)

135 of 138 new or added lines in 2 files covered. (97.83%)

11899 of 12836 relevant lines covered (92.7%)

6.19 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
90.87
4.99% packages/supabase/lib/src/supabase_stream_builder.dart
Jobs
ID Job ID Ran Files Coverage
3 supabase_test - 39979930520.3 23 Oct 2026 03:39PM UTC 9
93.55
GitHub Action Run
4 supabase_realtime - 39979930520.4 23 Oct 2026 03:42PM UTC 14
91.69
GitHub Action Run
5 postgrest - 39979930520.5 23 Oct 2026 03:43PM UTC 29
92.41
GitHub Action Run
6 supabase_flutter - 39979930520.6 23 Oct 2026 03:40PM UTC 16
86.33
GitHub Action Run
7 supabase - 39979930520.7 23 Oct 2026 03:42PM UTC 20
94.54
GitHub Action Run
8 supabase_storage - 39979930520.8 23 Oct 2026 03:41PM UTC 10
96.51
GitHub Action Run
9 supabase_typegen - 39979930520.9 23 Oct 2026 03:41PM UTC 6
94.46
GitHub Action Run
10 supabase_auth - 39979930520.10 23 Oct 2026 03:44PM UTC 34
94.06
GitHub Action Run
11 supabase_functions - 39979930520.11 23 Oct 2026 03:40PM UTC 4
93.87
GitHub Action Run
12 iceberg - 39979930520.12 23 Oct 2026 03:40PM UTC 6
77.18
GitHub Action Run
10 supabase_common - 39964796217.10 23 Oct 2026 01:53PM UTC 36
94.12
GitHub Action Run
3 yet_another_json_isolate - 39964796217.3 23 Oct 2026 01:53PM UTC 1
98.68
GitHub Action Run
Source Files on build 39979930520
  • Tree
  • List 185
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #39979930520
  • bf951b88 on github
  • Prev Build on main (#39977567655)
  • Next Build on main (#39984734466)
  • 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