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

supabase / supabase-flutter / 40330369462
94%

Build:
DEFAULT BRANCH: main
Ran 26 Oct 2026 01:26PM UTC
Jobs 12
Files 186
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 Oct 2026 01:24PM UTC coverage: 94.066% (+0.001%) from 94.065%
40330369462

push

github

web-flow
perf(yet_another_json_isolate,postgrest,functions)!: encode request bodies to UTF-8 bytes on the calling isolate in slices (#2057)

Large inserts were slower in v3 than in v2, and moving their encoding to
an isolate did not take the work off the calling isolate. `Isolate.run`
copies the whole payload on the calling isolate before encoding it, and
the copy grows with the payload. On top of that, every client encoded
the body twice: to a JSON string, then to UTF-8 when the string was
assigned to `request.body`.

This encodes request bodies straight to UTF-8 bytes on the calling
isolate. A top-level list, such as the rows of a bulk insert, is encoded
in batches that yield to the event loop every 2 ms, so a frame is never
blocked for long however large the payload is. Decoding is unchanged and
still runs on short-lived isolates.

## Changes

- `AsyncJsonCodec` gains `encodeBytes`, the counterpart of
`decodeBytes`. Both encode methods may now read the value until their
future completes.
- `YAJsonIsolate` encodes on the calling isolate, slicing a top-level
list. The isolate encode path and the pass that estimated the payload
size beforehand are removed. Web uses the same encoder, so it no longer
blocks for the whole encode either.
- `PostgrestBuilder` sends the body with `request.bodyBytes`. The
content type stays `application/json`.
- `FunctionsClient` sends a body with a JSON content type as bytes. Any
other content type still goes through the string path, so a
caller-provided charset such as `iso-8859-1` keeps working.

## Breaking change

An `AsyncJsonCodec` implementation has to add `encodeBytes`.
`AsyncJsonCodec` is new in v3, so this only affects the v3 pre-releases.

## Measurements

From a benchmark of the client itself, using a canned HTTP transport,
compiled ahead of time on macOS arm64. "Frame blocked" is the median of
the longest time per request in which the calling isolate could not run
a timer.

| Insert | v2 | v3 before | v3 after |
| --- |... (continued)

53 of 55 new or added lines in 4 files covered. (96.36%)

12079 of 12841 relevant lines covered (94.07%)

6.21 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
94.28
0.0% packages/postgrest/lib/src/postgrest_builder.dart
1
97.37
packages/yet_another_json_isolate/lib/src/sliced_json_encoder.dart
Jobs
ID Job ID Ran Files Coverage
3 supabase_auth - 40330369462.3 26 Oct 2026 01:30PM UTC 34
94.06
GitHub Action Run
4 yet_another_json_isolate - 40330369462.4 26 Oct 2026 01:27PM UTC 2
98.65
GitHub Action Run
5 supabase_functions - 40330369462.5 26 Oct 2026 01:26PM UTC 4
94.01
GitHub Action Run
6 iceberg - 40330369462.6 26 Oct 2026 01:26PM UTC 6
100.0
GitHub Action Run
7 supabase_typegen - 40330369462.7 26 Oct 2026 01:28PM UTC 6
94.46
GitHub Action Run
8 supabase_test - 40330369462.8 26 Oct 2026 01:26PM UTC 9
93.55
GitHub Action Run
9 supabase - 40330369462.9 26 Oct 2026 01:30PM UTC 20
94.54
GitHub Action Run
10 supabase_storage - 40330369462.10 26 Oct 2026 01:29PM UTC 10
96.51
GitHub Action Run
11 supabase_flutter - 40330369462.11 26 Oct 2026 01:27PM UTC 16
88.94
GitHub Action Run
12 postgrest - 40330369462.12 26 Oct 2026 01:29PM UTC 29
92.41
GitHub Action Run
7 supabase_realtime - 40305369626.7 26 Oct 2026 10:14AM UTC 14
91.77
GitHub Action Run
1 supabase_common - 40299077241.1 26 Oct 2026 09:24AM UTC 36
94.12
GitHub Action Run
Source Files on build 40330369462
  • Tree
  • List 186
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #40330369462
  • 776b9f52 on github
  • Prev Build on main (#40305369626)
  • Next Build on main (#40331848863)
  • 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