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

supabase / supabase-flutter / 32480403815
89%

Build:
DEFAULT BRANCH: main
Ran 21 Aug 2026 12:09PM 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

21 Aug 2026 12:07PM UTC coverage: 88.518% (-0.05%) from 88.564%
32480403815

push

github

web-flow
feat(realtime)!: support asynchronous encode/decode codecs (#1684)

Closes #1401

## What

The realtime codec overrides (`RealtimeEncode` / `RealtimeDecode`, added
in #1397) were synchronous and worked on raw `Map<String, dynamic>`s, so
`jsonEncode`/`jsonDecode` of every message ran on the main isolate. A
large payload blocks the event loop, and a background-isolate codec
could not be plugged in at all.

Both typedefs now work on a `RealtimeMessage` and return a `Future`:

| Before | After |
| --- | --- |
| `Object Function(Map<String, dynamic>)` | `Future<Object>
Function(RealtimeMessage)` |
| `Map<String, dynamic> Function(Object)` | `Future<RealtimeMessage>
Function(Object)` |

```dart
final isolate = YAJsonIsolate();

await Supabase.initialize(
  url: url,
  anonKey: anonKey,
  realtimeClientOptions: RealtimeClientOptions(
    encode: (message) => isolate.encode(message.toJson()),
    decode: (frame) async =>
        RealtimeMessage.fromJson(await isolate.decode(frame as String)),
  ),
);
```

`RealtimeClientOptions` carries the two callbacks through
`SupabaseClient` and `Supabase.initialize`, so a `supabase_flutter` user
never has to construct a `RealtimeClient` by hand.

## `RealtimeMessage`

A new exported class carrying `joinRef`, `ref`, `topic`, `event` and
`payload`, with `toJson([version])` and `RealtimeMessage.fromJson(json,
[version])` converting to and from the shape each protocol version puts
on the wire (positional array for `2.0.0`, object for `1.0.0`, both
defaulting to `2.0.0`). A codec only has to turn that shape into bytes
and back rather than hand-building the positional array.

It replaces the internal `Message` class. An `@internal`
`RealtimeMessage.outgoing` builds one from a `ChannelEvent` and replaces
`Binding`s in the payload with their serializable shape, which matters
more now: a `Binding` holds a callback and could never be sent to an
isolate.

## Ordering

Introducing awaits into the message pipeline is the risky part, ... (continued)

136 of 149 new or added lines in 5 files covered. (91.28%)

3 existing lines in 1 file now uncovered.

5967 of 6741 relevant lines covered (88.52%)

4.4 hits per line

Uncovered Changes

Lines Coverage ∆ File
10
85.92
packages/supabase_realtime/lib/src/realtime_message.dart
2
96.07
-0.15% packages/supabase_realtime/lib/src/realtime_client.dart
1
92.86
-0.78% packages/supabase_realtime/lib/src/serializer.dart

Coverage Regressions

Lines Coverage ∆ File
3
85.63
-1.8% packages/supabase/lib/src/supabase_stream_builder.dart
Jobs
ID Job ID Ran Files Coverage
3 supabase_functions - 32480403815.3 21 Aug 2026 12:09PM UTC 4
97.83
GitHub Action Run
4 supabase_auth - 32480403815.4 21 Aug 2026 12:12PM UTC 30
90.67
GitHub Action Run
5 supabase_realtime - 32480403815.5 21 Aug 2026 12:12PM UTC 13
90.15
GitHub Action Run
6 supabase_storage - 32480403815.6 21 Aug 2026 12:11PM UTC 9
97.31
GitHub Action Run
7 supabase - 32480403815.7 21 Aug 2026 12:12PM UTC 14
92.96
GitHub Action Run
8 postgrest - 32480403815.8 21 Aug 2026 12:11PM UTC 11
84.48
GitHub Action Run
9 iceberg - 32480403815.9 21 Aug 2026 12:09PM UTC 6
68.52
GitHub Action Run
10 supabase_flutter - 32480403815.10 21 Aug 2026 12:09PM UTC 11
81.82
GitHub Action Run
7 supabase_common - 32470384127.7 21 Aug 2026 09:59AM UTC 21
86.96
GitHub Action Run
3 yet_another_json_isolate - 32470384127.3 21 Aug 2026 09:59AM UTC 1
98.41
GitHub Action Run
Source Files on build 32480403815
  • Tree
  • List 120
  • Changed 6
  • Source Changed 5
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32480403815
  • 5c496198 on github
  • Prev Build on main (#32470384127)
  • Next Build on main (#32488229193)
  • 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