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

supabase / supabase-flutter / 32949660997
89%

Build:
DEFAULT BRANCH: main
Ran 26 Aug 2026 08:49AM UTC
Jobs 10
Files 120
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

26 Aug 2026 08:48AM UTC coverage: 88.566% (-0.1%) from 88.663%
32949660997

push

github

web-flow
fix!: return unmodifiable header views with controlled replacement (#1764)

## What kind of change does this PR introduce?

Breaking change, plus a small feature that keeps every header use case
reachable.

## What is the current behavior?

`AuthClient.headers`, `FunctionsClient.headers`,
`StorageBucketApi.headers` (so `SupabaseStorageClient.headers`) and
`StorageFileApi.headers` all handed out the live internal header map, so
any consumer could rewrite the headers of a client from anywhere,
including the sub-clients a `SupabaseClient` manages:

```dart
supabase.functions.headers['Authorization'] = 'Bearer $jwt';
supabase.storage.headers.clear();
```

`SupabaseClient._replaceHeaders` depended on that leak, mutating each
client with `..clear()..addAll(...)`. This is the same anti-pattern that
was fixed for `RealtimeClient.headers` in #1758, and
`PostgrestClient.headers` before that.

Closes SDK-1600.

## What is the new behavior?

- Every `headers` getter returns `Map.unmodifiable(_headers)`, so
mutating one throws an `UnsupportedError`.
- Each client gained an `@internal void replaceHeaders(Map<String,
String>)`, and `SupabaseClient.headers =` now calls that instead of
mutating the maps in place. Propagation to all sub-clients is unchanged.
- `AuthClient` and `FunctionsClient` gained a public `setHeader(String,
String)`, mirroring `SupabaseStorageClient.setHeader`. Without it, a
standalone client built directly (not through `SupabaseClient`) would
have had no way to add a header after construction, since in-place
mutation was previously the only one. On auth the header map is shared
with `admin`, so admin requests carry it too; on functions a header
passed to `invoke()` still wins for that single call.
- `SupabaseStorageClient.setHeader()` goes through `replaceHeaders` as
well, so it keeps working. `StorageBucketApi` copies the headers it is
constructed with rather than aliasing the caller's map.
- `SupabaseStorageClient.vectors` is a getter that buil... (continued)

36 of 45 new or added lines in 6 files covered. (80.0%)

6034 of 6813 relevant lines covered (88.57%)

4.57 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
84.41
-0.49% packages/supabase_auth/lib/src/auth_client.dart
4
94.94
-5.06% packages/supabase_functions/lib/src/functions_client.dart
Jobs
ID Job ID Ran Files Coverage
3 supabase_flutter - 32949660997.3 26 Aug 2026 08:50AM UTC 11
82.22
GitHub Action Run
4 supabase - 32949660997.4 26 Aug 2026 08:53AM UTC 14
93.49
GitHub Action Run
5 iceberg - 32949660997.5 26 Aug 2026 08:49AM UTC 6
68.52
GitHub Action Run
6 supabase_storage - 32949660997.6 26 Aug 2026 08:52AM UTC 9
97.35
GitHub Action Run
7 postgrest - 32949660997.7 26 Aug 2026 08:52AM UTC 11
84.59
GitHub Action Run
8 supabase_functions - 32949660997.8 26 Aug 2026 08:49AM UTC 4
93.81
GitHub Action Run
9 supabase_auth - 32949660997.9 26 Aug 2026 08:53AM UTC 30
90.57
GitHub Action Run
10 supabase_realtime - 32949660997.10 26 Aug 2026 08:53AM UTC 13
90.36
GitHub Action Run
8 supabase_common - 32709892111.8 24 Aug 2026 09:09AM UTC 21
86.96
GitHub Action Run
10 yet_another_json_isolate - 32948304016.10 26 Aug 2026 08:34AM UTC 1
98.44
GitHub Action Run
Source Files on build 32949660997
  • Tree
  • List 120
  • Changed 6
  • Source Changed 6
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32949660997
  • 8343a9a8 on github
  • Prev Build on main (#32948304016)
  • Next Build on main (#32951091692)
  • 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