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

supabase / supabase-flutter / 28951625246
86%

Build:
DEFAULT BRANCH: main
Ran 08 Jul 2026 02:47PM UTC
Jobs 8
Files 83
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

08 Jul 2026 02:45PM UTC coverage: 86.428% (+0.03%) from 86.402%
28951625246

push

github

web-flow
feat(functions): expose FunctionsFetchException/FunctionsRelayException/FunctionsHttpException subtypes (#1545)

## What

Introduces three error subtypes as subclasses of the existing
`FunctionException`, so consumers can match on the failure mode:

- **`FunctionsFetchException`** — network/transport failure reaching the
function, before any response is received. The originating error is
available in `details`; `status` is `0`.
- **`FunctionsRelayException`** — error returned by the relay, detected
via the `x-relay-error: true` response header.
- **`FunctionsHttpException`** — non-2xx response from the function
itself.

`invoke()` now throws the appropriate subtype depending on the failure
mode.

## Naming

The subtypes use the `Exception` suffix (not `Error`) to follow Dart's
`Error`/`Exception` distinction: they are meant to be caught, extend
`FunctionException` (which implements `Exception`), and wrap an
underlying `ClientException`. This also keeps them consistent with the
base class name.

## Why non-breaking

Existing `catch` blocks that catch `FunctionException` continue to work
unchanged; the new subtypes only refine the type consumers can
optionally match on. No existing signature or default behavior changes.
`toString()` now uses `\$runtimeType` so subtypes print their own name.

A follow-up for making `FunctionException` a `sealed` class (breaking,
enabling exhaustive `switch`) is tracked in #1550 for v3.

## Tests

Added `network-error` and `relay-error` fixtures to the custom HTTP
client, plus cases asserting each subtype is thrown, that
`status`/`details`/`reasonPhrase` are populated, and that the subtypes
remain catchable as `FunctionException`.

Closes SDK-1258

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

4464 of 5165 relevant lines covered (86.43%)

3.98 hits per line

Jobs
ID Job ID Ran Files Coverage
6 functions_client - 28951625246.6 08 Jul 2026 02:47PM UTC 2
98.8
GitHub Action Run
7 supabase_flutter - 28951625246.7 08 Jul 2026 02:47PM UTC 11
79.0
GitHub Action Run
8 supabase - 28951625246.8 08 Jul 2026 02:47PM UTC 15
80.69
GitHub Action Run
7 postgrest - 28933384010.7 08 Jul 2026 09:51AM UTC 9
84.57
GitHub Action Run
1 gotrue - 28933384010.1 08 Jul 2026 09:51AM UTC 29
86.0
GitHub Action Run
6 storage_client - 28933384010.6 08 Jul 2026 09:51AM UTC 5
93.23
GitHub Action Run
8 yet_another_json_isolate - 28933384010.8 08 Jul 2026 09:48AM UTC 1
77.78
GitHub Action Run
5 realtime_client - 28933384010.5 08 Jul 2026 09:51AM UTC 11
89.06
GitHub Action Run
Source Files on build 28951625246
  • Tree
  • List 83
  • Changed 4
  • Source Changed 4
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28951625246
  • 2d3a7202 on github
  • Prev Build on main (#28933384010)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc