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

supabase / supabase-swift / 31604397264
85%

Build:
DEFAULT BRANCH: main
Ran 12 Aug 2026 02:04PM UTC
Jobs 1
Files 102
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

12 Aug 2026 02:00PM UTC coverage: 84.573% (+0.5%) from 84.037%
31604397264

push

github

web-flow
fix(realtime): retry auto-reconnect with backoff instead of giving up after one attempt (#1198)

* fix(realtime): retry auto-reconnect with backoff instead of giving up after one attempt

ConnectionManager.initiateReconnect scheduled exactly one reconnect
attempt. If that attempt failed (network still down, the common case
during a real outage), the client stayed parked in .disconnected
forever with nothing scheduling another try.

initiateReconnect now retries with exponential backoff (capped at 30s)
until a connection succeeds or disconnect()/deinit cancels the task.
State stays .reconnecting across every attempt instead of bouncing
through .disconnected between attempts, so RealtimeClientV2's
reconnect-completion latch isn't misled into treating the eventual
success as a fresh connect() and skipping rejoinChannels().

Fixes #1147

* fix(realtime): don't retain ConnectionManager across the reconnect backoff sleep

The retry loop's `guard let self` sat before `clock.sleep`, so `self`
was held strongly for the whole backoff wait, not just the connection
attempt. A client released mid-outage would keep the actor (and
everything it captures) alive for up to the current attempt's delay.
deinit also never cancelled a pending `.reconnecting` task.

Capture `clock`/`reconnectDelay`/`logger` by value so the sleep needs
no strong self, reacquiring self only right before the connect
attempt, and cancel the task in deinit if state is still .reconnecting.

43 of 49 new or added lines in 1 file covered. (87.76%)

2 existing lines in 2 files now uncovered.

8848 of 10462 relevant lines covered (84.57%)

39.88 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
88.94
-1.38% Sources/RealtimeV2/ConnectionManager.swift

Coverage Regressions

Lines Coverage ∆ File
1
90.12
-0.3% Sources/RealtimeV2/ChannelStateManager.swift
1
88.94
-1.38% Sources/RealtimeV2/ConnectionManager.swift
Jobs
ID Job ID Ran Files Coverage
1 31604397264.1 12 Aug 2026 02:04PM UTC 102
84.57
GitHub Action Run
Source Files on build 31604397264
  • Tree
  • List 102
  • Changed 7
  • Source Changed 2
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31604397264
  • 0ee60897 on github
  • Prev Build on main (#31589095451)
  • Next Build on main (#31605924502)
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