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

supabase / supabase-flutter
85%

Build:
DEFAULT BRANCH: main
Repo Added 19 Jan 2025 06:54AM UTC
Token z3GUkNtD1PDnCOWpuPvCMvjUB924F4R9N regen
Build 732 Last
Files 80
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

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
Sync Branches
  • No branch selected
  • chore-review-actions
  • chore/add-agents-md-file
  • chore/avoid-passing-async-when-sync-expected
  • chore/await-futures-lint
  • chore/bump-actions-ref
  • chore/bump-app_links
  • chore/bump-min-sdk-3.4
  • chore/code-reference
  • chore/coverage
  • chore/coverage-realtime
  • chore/coverage-source
  • chore/enable-avoid-default-tostring
  • chore/enable-avoid-self-compare
  • chore/enable-avoid-shadowing
  • chore/enable-correct-json-casts
  • chore/enable-dcm-dispose-class-fields
  • chore/enable-dcm-easy-batch
  • chore/enable-dcm-lints-tier1-2
  • chore/enable-fatal-infos
  • chore/enable-misused-test-matchers
  • chore/enable-nullable-rules
  • chore/enable-single-violation-rules
  • chore/enable-small-safe-batch
  • chore/functions-coverage
  • chore/gotrue-coverage
  • chore/issue-form-platform-all
  • chore/issue-form-templates
  • chore/publish
  • chore/realtime-test-first-instead-of-index
  • chore/release
  • chore/remove-useless-tests
  • chore/rename-cond-platform-getters
  • chore/setup-release-please
  • chore/supabase-coverage
  • chore/test-coverage
  • chore/test-proper-matchers
  • chore/update-examples
  • chore/upgrade-app-links
  • ci/drop-publish-dry-run
  • ci/extract-app-builds
  • ci/imgproxy
  • ci/melos-publish-no-dry-run
  • ci/melos-publish-oidc-token
  • ci/melos-publish-yes
  • ci/release-tag-app-token
  • ci/storage
  • claude/agitated-dewdney-0268b3
  • claude/frosty-snyder-1b2f48
  • claude/mystifying-cerf-7d866b
  • claude/naughty-wright-f4fec3
  • claude/recursing-williamson-f3d62d
  • cleanup/remove-parens-fromJson
  • copilot/sub-pr-1327
  • dcm-baseline
  • dcm-pipeline
  • docs/error-codes
  • docs/fix-infra-typo-license-20250902-024002
  • docs/google-signin
  • docs/on-auth-state-change-error-handler
  • docs/update-signinwithidtoken-providers-1259
  • etienne/sec-666-pin-all-github-actions-to-full-commit-sha
  • examples-passkeys
  • feat-admin-oauth-update-list-19ca1
  • feat/add-examples-project
  • feat/add-force-function-region-query-param
  • feat/broadcast-replay-support
  • feat/cupertino
  • feat/custom-metadata
  • feat/facebook-sdk-example
  • feat/gotrue-get-claims
  • feat/gotrue-passkeys
  • feat/issue-1158-debug-instrumentation
  • feat/oauth-admin-endpoints
  • feat/passkey-ceremony-helpers
  • feat/phone-2fa
  • feat/phone-mfa
  • feat/private-stream
  • feat/realtime-explicit-rest-call
  • feat/semantic-release-automation
  • feat/signed-out-reason
  • feat/storage-download-query-params
  • feat/workflow-improvements
  • feat/workflow-phase4-developer-experience
  • feat/workflow-phase5-additional-improvements
  • fix-getclaims-token-decoding
  • fix-private-only-stream-channel-10188984025532099214
  • fix-to-string
  • fix/app-links-method-removal
  • fix/ci-wasm-test-timeout
  • fix/dartio-usage
  • fix/deprecate
  • fix/empty-response
  • fix/flutter-3x-windows-cache
  • fix/functions-exception
  • fix/gotrue-getclaims-asymmetric-jwt
  • fix/gotrue-token-refresh-races
  • fix/gotrue-web
  • fix/immutable-default-headers
  • fix/postgrest-select-prefer-and-this-cleanup
  • fix/proactive-token-refresh-on-resume
  • fix/realtime-cancel-conn-subscription
  • fix/realtime-channel-suppress-invalid-jwt-on-rejoin
  • fix/realtime-connect-race-condition
  • fix/realtime-ios-disconnect-detection
  • fix/realtime-ios-dropped-connection-detection
  • fix/realtime-lifecycle-queue
  • fix/recover-session-duplicate-auth-error
  • fix/recover-session-stale-refresh-token
  • fix/release-tag-workflow
  • fix/review-bugs
  • fix/sdk-compliance-workflow
  • fix/session-expires-at-doc-clarification
  • fix/setup-presence-flag
  • fix/storage-exception-status-code
  • fix/toJson-print
  • fix/uppercase-http-method
  • fix/verify-otp-secure-email-change
  • fix/web-hot-restart
  • fix/web-oauth-code-cleanup
  • grdsdev-patch-1
  • grdsdev/align-dart-sdk-min-3-3-0
  • grdsdev/auth-token-refresh
  • grdsdev/automate-melos-release
  • grdsdev/check-swift-pr-958
  • grdsdev/docs-refreshtoken-completer
  • grdsdev/fix-postgrest-http-method-case
  • grdsdev/fix-release-workflow-failures
  • grdsdev/flutter-auth-refresh-bug
  • grdsdev/hartford-v1
  • grdsdev/log-auth-state-errors
  • grdsdev/postgrest-retry-flutter
  • grdsdev/resilient-decoding
  • grdsdev/retrigger-release-tagging
  • grdsdev/sdk-816-realtime-class-docs
  • grdsdev/share-yajson-isolate
  • grdsdev/storage-setheader
  • guilherme/ci
  • guilherme/clibs-108-supabase-flutter-change-default-heartbeat-interval-to-25s
  • guilherme/clibs-120-supabase-flutter-send-standard-client-headers-on-all
  • guilherme/clibs-171-supabase-flutter-validate-uuid-on-admin-methods
  • guilherme/clibs-282-supabase-flutter-implement-linkidentity-with-oidc
  • guilherme/clibs-287-supabase-flutter-storageretrycontroller-causes-cant-finalize
  • guilherme/clibs-294-supabase-flutter-remove-providers-check-for-the
  • guilherme/clibs-379-supabase-flutter-implement-maxaffected-method
  • guilherme/clibs-99-supabase-flutter-remove-jwt-check-and-send-x-client-info
  • guilherme/feat-test
  • guilherme/generate-app-token
  • guilherme/remove-trailing-commas-rule
  • guilherme/sdk-230-supabase-flutter-use-dedicated-storage-host-for-storage-lib
  • guilherme/sdk-514-refreshsession-shouldnt-fail-because-currentsession-doesnt
  • guilherme/sdk-524-duplicate-sdk-522-for-flutter
  • guilherme/sdk-531-flutter-verify-optional-refs-handling-in-message
  • guilherme/sdk-614-fix-verifyotp-parameter-validation-for-otptyperecovery
  • guilherme/sdk-624-apply-reusable-ci-workflows-to-supabase-flutter
  • guilherme/sdk-627-flutter-sdk-getclaims-crashes-on-first-use-with-asymmetric
  • guilherme/sdk-640-fixrealtime-flutter-web-hot-restart-throws-typeerror-on
  • guilherme/sdk-698-paritypostgrest-add-url-length-validation-and-timeout
  • guilherme/sdk-784-featauth-add-setsession-support-for-both-access_token-and
  • guilherme/sdk-789-fixstorage-_transformstorageurl-unconditionally-breaks
  • guilherme/sdk-794-oauth-provider-custom-string
  • iat/add-x-provider
  • idempotent_initialization
  • lukasklingsbo/sdk-1054-consolidate-ci-into-a-single-workflow-and-stop-re-running
  • lukasklingsbo/sdk-583-realtime-protocol-200
  • lukasklingsbo/sdk-583-realtime-v3-renames
  • main
  • null-check-operator-on-realtime-conn
  • refactor/refresh-flow
  • refs/pull/1110/merge
  • release-23586209249
  • release-26828784805
  • release-27010981394
  • release-27216676269
  • release-27629220657
  • release-please/bootstrap/default
  • remove-wasm-ci
  • revert-commit
  • shared_prefs_async
  • storage
  • test/supabase-cli-integration-tests
  • test/web
  • unnecessary_current_user
  • upgrade-github-actions-node24
  • upgrade-github-actions-node24-general
  • worktree-899
  • worktree-ci-release-tags
  • worktree-ci-simplify
  • worktree-ci-uppercase
  • worktree-email-fix
  • worktree-facebook-login-issue
  • worktree-fix-coverage
  • worktree-fix-tests
  • worktree-flutter_lints
  • worktree-passkeys-interface-types
  • worktree-realtime-tests

22 Jun 2026 09:44PM UTC coverage: 85.187% (-0.002%) from 85.189%
27986095786

push

github

web-flow
chore: enable avoid-passing-async-when-sync-expected lint (#1455)

> Stacked on top of #1454. Review/merge that one first; the base will
retarget to `main` automatically once it lands.

## What

Enables the DCM rule
[`avoid-passing-async-when-sync-expected`](https://dcm.dev/docs/rules/common/avoid-passing-async-when-sync-expected/)
(removing it from the ratchet list in `supabase_lints`) and resolves the
13 resulting violations.

## Why

When an `async` callback is passed where a synchronous one is expected,
the returned `Future` is discarded, so if it throws the error is
silently lost. This is the same class of problem as the
`unawaited_futures`/`discarded_futures` lints in #1454, just at call
sites that take a callback. Enabling it closes the remaining
async-safety gap.

## How

Each of the 13 sites was made synchronous, and the inner async work was
either wrapped in `unawaited(...)` (genuine fire-and-forget) or
extracted into a dedicated method, preserving existing behavior and
error handling. Highlights:

- `realtime_channel.dart`: extracted the `joinPush.receive('ok', ...)`
body into `_handleJoinOk(...)` (the `InvalidJWTToken` setAuth handling
is preserved verbatim).
- `realtime_client.dart`: extracted reconnect into `_reconnect()`,
heartbeat timer callback made sync with `unawaited(sendHeartbeat())`.
- `supabase_client.dart`: `onAuthStateChangeSync` listener made sync
with `unawaited(_handleTokenChanged(...))`.
- `supabase_stream_builder.dart`: `onDone: controller.close` → `onDone:
() => unawaited(controller.close())` in the asyncMap/asyncExpand
reimplementations.
- Remaining sites are in test mock servers and a widget-test stub.

No public API signatures were changed.

## Verification

- `dcm analyze`: 0 `avoid-passing-async-when-sync-expected` across all
packages.
- `dart analyze`: clean, no new `unawaited_futures`/`discarded_futures`.
- Tests: realtime_client (channel/socket/mock), supabase
(mock/utilities), and supabase_flutter suites all pass.

40 of 44 new or added lines in 5 files covered. (90.91%)

13 existing lines in 1 file now uncovered.

4106 of 4820 relevant lines covered (85.19%)

3.62 hits per line

Relevant lines Covered
Build:
Build:
4820 RELEVANT LINES 4106 COVERED LINES
3.62 HITS PER LINE
Source Files on main
  • Tree
  • List 80
  • Changed 8
  • Source Changed 8
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
27986095786 main chore: enable avoid-passing-async-when-sync-expected lint (#1455) > Stacked on top of #1454. Review/merge that one first; the base will retarget to `main` automatically once it lands. ## What Enables the DCM rule [`avoid-passing-async-when-sync... push 22 Jun 2026 09:45PM UTC web-flow github
85.19
27985660550 refactor/refresh-flow Merge 9d8886820 into d9eb03332 Pull #1457 22 Jun 2026 09:37PM UTC web-flow github
82.74
27985059140 refactor/refresh-flow Merge 6ea6fb8cb into d9eb03332 Pull #1457 22 Jun 2026 09:26PM UTC web-flow github
82.74
27984271083 feat/signed-out-reason Merge 5d6c8e12e into d9eb03332 Pull #1453 22 Jun 2026 09:12PM UTC web-flow github
82.7
27984307788 fix/recover-session-duplicate-auth-error Merge d9eb03332 into db754cf06 Pull #1450 22 Jun 2026 09:12PM UTC web-flow github
85.23
27984173732 feat/signed-out-reason Merge 946f20038 into 934b46ce4 Pull #1453 22 Jun 2026 09:10PM UTC web-flow github
82.38
27971004383 chore/avoid-passing-async-when-sync-expected Merge 11159716a into db754cf06 Pull #1455 22 Jun 2026 05:21PM UTC web-flow github
85.19
27970805559 main fix(realtime_client): detect dropped connections on iOS via WebSocket ping (#1451) ## What Enable `pingInterval` on the native (`dart:io`) WebSocket so dropped connections are detected consistently across platforms. ## Why Fixes #1071. When th... push 22 Jun 2026 05:19PM UTC web-flow github
85.19
27970373556 chore/avoid-passing-async-when-sync-expected Merge c5f817808 into efdfeb7ad Pull #1455 22 Jun 2026 05:11PM UTC web-flow github
85.18
27970191844 main fix(supabase_flutter): clear auth params from web URL after exchange (#1456) ## What On Flutter web, after a successful OAuth/PKCE sign-in the auth `code` (or implicit-flow tokens) stays in the browser URL. On the next page refresh, `supabase_fl... push 22 Jun 2026 05:09PM UTC web-flow github
85.26
See All Builds (731)

Badge your Repo: supabase-flutter

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

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

Refresh
  • Settings
  • Repo on GitHub
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