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

supabase / supabase-flutter / 35344799042
90%

Build:
DEFAULT BRANCH: main
Ran 18 Sep 2026 12:29PM UTC
Jobs 11
Files 159
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

18 Sep 2026 12:27PM UTC coverage: 90.497% (+0.003%) from 90.494%
35344799042

push

github

web-flow
feat(supabase)!: keep idle connections open for 60 seconds by default (#1855)

## What

A `SupabaseClient` created without an `httpClient` now builds an
`IOClient` whose idle timeout is 60 seconds instead of the 15 second
`dart:io` default. The web build keeps the plain default `Client`. The
`supabase` README gains a server-side section that recommends one
long-lived `SupabaseClient` per process, shows how to act on behalf of a
user from it by setting the `Authorization` header per call, and covers
the idle timeout and disposing. The migration guide documents the
`runWithClient` change.

## Why

A Dart server talking to a remote Supabase project reported roughly
twice the latency of a direct database connection. Benchmarks showed the
SDK itself is not the cause: on a warm connection it is within 0.2 ms of
raw `package:http`, and there is no hidden extra round trip. The
doubling comes from connection setup, which happens whenever the pool
has no open connection.

Measured against a hosted project in eu-north-1 over TLS:

| Scenario | p50 |
| --- | --- |
| Reused connection | 24.8 ms |
| New TLS connection | 58.8 ms |

`dart:io` closes an idle connection after 15 seconds, so a server with
sporadic traffic pays the handshake on most requests. The servers on the
other end keep connections open much longer:

| Gateway | Idle connection still open after |
| --- | --- |
| Hosted (Cloudflare) | 300 s, the longest gap tested |
| Local CLI stack (Kong) | 60 s, closed by 90 s |

60 seconds is the largest value that stays below the self-hosted cutoff,
so a reused connection is never written to just as the gateway closes
it. Locally, two requests 16 seconds apart used one connection after
this change and two before it.

## Breaking change

The default client is built directly instead of through the `Client()`
factory of `package:http`, so a client installed with `runWithClient` is
no longer picked up. Pass it as `httpClient` instead. A script that
never calls `dis... (continued)

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

7866 of 8692 relevant lines covered (90.5%)

4.65 hits per line

Jobs
ID Job ID Ran Files Coverage
2 supabase_common - 35344799042.2 18 Sep 2026 12:29PM UTC 22
87.36
GitHub Action Run
3 supabase_storage - 35344799042.3 18 Sep 2026 12:31PM UTC 9
97.61
GitHub Action Run
4 supabase_auth - 35344799042.4 18 Sep 2026 12:33PM UTC 32
91.99
GitHub Action Run
5 supabase_functions - 35344799042.5 18 Sep 2026 12:29PM UTC 4
93.81
GitHub Action Run
6 supabase - 35344799042.6 18 Sep 2026 12:32PM UTC 16
93.66
GitHub Action Run
7 supabase_flutter - 35344799042.7 18 Sep 2026 12:29PM UTC 14
77.87
GitHub Action Run
8 iceberg - 35344799042.8 18 Sep 2026 12:29PM UTC 6
68.52
GitHub Action Run
9 supabase_realtime - 35344799042.9 18 Sep 2026 12:31PM UTC 13
90.66
GitHub Action Run
10 postgrest - 35344799042.10 18 Sep 2026 12:31PM UTC 21
92.58
GitHub Action Run
11 supabase_typegen - 35344799042.11 18 Sep 2026 12:29PM UTC 21
94.77
GitHub Action Run
6 yet_another_json_isolate - 34962811027.6 15 Sep 2026 11:22AM UTC 1
98.44
GitHub Action Run
Source Files on build 35344799042
  • Tree
  • List 159
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35344799042
  • db7f5cc9 on github
  • Prev Build on main (#35342603789)
  • 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