Skip to content

feat!: rename the supabase package to supabase_dart - #1696

Draft
spydon wants to merge 1 commit into
mainfrom
breaking/rename-supabase-to-supabase-dart
Draft

feat!: rename the supabase package to supabase_dart#1696
spydon wants to merge 1 commit into
mainfrom
breaking/rename-supabase-to-supabase-dart

Conversation

@spydon

@spydon spydon commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What

Renames the pure Dart client package from supabase to supabase_dart, and its library entrypoint from supabase.dart to supabase_dart.dart.

The supabase name reads like the umbrella name for the whole SDK, so people keep adding it to Flutter projects instead of supabase_flutter and then report that things do not work. The new name makes the split obvious at the point where a dependency is picked.

Changes

  • packages/supabase moved to packages/supabase_dart, with name: supabase_dart in the pubspec and the repository link updated.
  • lib/supabase.dart renamed to lib/supabase_dart.dart. Every internal import and the supabase_flutter re-export now point at package:supabase_dart/supabase_dart.dart.
  • supabase_flutter depends on supabase_dart instead of supabase. Nothing in its public surface changes, it re-exports the same symbols.
  • The Dart example package is renamed to supabase_dart_example and depends on supabase_dart.
  • Root pubspec.yaml workspace entries, the test/pana workflow package lists and coverage carryforward flags, the issue-form library dropdown, and the issue label mapping all use the new name. The label mapping keeps the old supabase key so existing reports still land on the same label.
  • READMEs, AGENTS.md, MIGRATION.md and the sdk-compliance.yaml header comment updated. Nothing inside the package is renamed, so SupabaseClient and everything it exposes keeps its name, and no capability statuses change.
  • MIGRATION.md gains a v2 to v3 section covering the dependency and import rename.

Follow-up outside this repo

Publishing supabase_dart and marking supabase as discontinued on pub.dev, pointing at the new name, has to happen at release time.

Testing

  • dart analyze clean across the workspace, and dart analyze --fatal-infos clean in packages/supabase_dart.
  • dart test passes for the offline supabase_dart suites (api_key, mock, stream_filter, trace_propagation, utilities).
  • flutter test passes in packages/supabase_flutter.
  • dart format -l 80 --set-exit-if-changed reports no changes.

Resolves #1275
Part of #1278

SDK-1468

Summary by CodeRabbit

  • New Features
    • Added realtime stream filtering for comparisons, pattern matching, null checks, and distinct values.
    • Added optional W3C trace-context propagation for outgoing requests.
    • Added API-key format detection and safe warnings for unrecognized keys.
  • Documentation
    • Renamed the pure Dart package to supabase_dart and added migration guidance.
    • Updated Flutter guidance, examples, branding, licensing, and changelog information.
  • Compatibility
    • Flutter continues to re-export the existing Supabase client APIs; no Flutter migration is required.

BREAKING CHANGE: The pure Dart client is published as supabase_dart instead
of supabase, and its library entrypoint is supabase_dart.dart. Depend on
supabase_dart and import package:supabase_dart/supabase_dart.dart.
supabase_flutter users are unaffected.
@spydon
spydon requested a review from a team as a code owner August 12, 2026 11:35
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 121d7dca-6b74-4e54-aa24-3676980eeb88

📥 Commits

Reviewing files that changed from the base of the PR and between 84c7c07 and e5a59ab.

📒 Files selected for processing (48)
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/workflows/label-issues.yml
  • .github/workflows/release-pana.yml
  • .github/workflows/test.yml
  • AGENTS.md
  • MIGRATION.md
  • packages/supabase_dart/CHANGELOG.md
  • packages/supabase_dart/LICENSE
  • packages/supabase_dart/README.md
  • packages/supabase_dart/analysis_options.yaml
  • packages/supabase_dart/dart_test.yaml
  • packages/supabase_dart/example/.gitignore
  • packages/supabase_dart/example/README.md
  • packages/supabase_dart/example/analysis_options.yaml
  • packages/supabase_dart/example/pubspec.yaml
  • packages/supabase_dart/example/web/index.html
  • packages/supabase_dart/example/web/main.dart
  • packages/supabase_dart/example/web/styles.css
  • packages/supabase_dart/lib/src/api_key.dart
  • packages/supabase_dart/lib/src/auth_http_client.dart
  • packages/supabase_dart/lib/src/constants.dart
  • packages/supabase_dart/lib/src/counter.dart
  • packages/supabase_dart/lib/src/realtime_client_options.dart
  • packages/supabase_dart/lib/src/supabase_client.dart
  • packages/supabase_dart/lib/src/supabase_client_options.dart
  • packages/supabase_dart/lib/src/supabase_query_builder.dart
  • packages/supabase_dart/lib/src/supabase_query_schema.dart
  • packages/supabase_dart/lib/src/supabase_stream_builder.dart
  • packages/supabase_dart/lib/src/supabase_stream_filter_builder.dart
  • packages/supabase_dart/lib/src/trace_http_client.dart
  • packages/supabase_dart/lib/src/trace_propagation.dart
  • packages/supabase_dart/lib/src/version.dart
  • packages/supabase_dart/lib/supabase_dart.dart
  • packages/supabase_dart/pubspec.yaml
  • packages/supabase_dart/test/api_key_test.dart
  • packages/supabase_dart/test/client_test.dart
  • packages/supabase_dart/test/mock_test.dart
  • packages/supabase_dart/test/realtime_test.dart
  • packages/supabase_dart/test/stream_filter_test.dart
  • packages/supabase_dart/test/stream_integration_test.dart
  • packages/supabase_dart/test/trace_propagation_test.dart
  • packages/supabase_dart/test/utilities_test.dart
  • packages/supabase_dart/test/utils.dart
  • packages/supabase_flutter/lib/src/supabase.dart
  • packages/supabase_flutter/lib/supabase_flutter.dart
  • packages/supabase_flutter/pubspec.yaml
  • pubspec.yaml
  • sdk-compliance.yaml

📝 Walkthrough

Walkthrough

The PR renames the pure Dart package from supabase to supabase_dart, updates Flutter and repository integration, adds realtime filtering and API-key support, and introduces opt-in trace context propagation.

Changes

supabase_dart package transition

Layer / File(s) Summary
Package identity and entrypoints
packages/supabase_dart/..., packages/supabase_flutter/..., pubspec.yaml
The package metadata, exports, imports, Flutter dependency, tests, lint configuration, and test configuration use supabase_dart.
Realtime and API-key APIs
packages/supabase_dart/lib/src/api_key.dart, packages/supabase_dart/lib/src/counter.dart, packages/supabase_dart/lib/src/realtime_client_options.dart, packages/supabase_dart/lib/src/supabase_stream_filter_builder.dart
The package adds API-key detection and warnings, an internal counter, realtime client options, and fluent stream filters.
Trace context propagation
packages/supabase_dart/lib/src/trace_propagation.dart, packages/supabase_dart/lib/src/trace_http_client.dart
The package adds trace context types, propagation options, host filtering, sampling checks, and trace header injection.
Example package and web scaffold
packages/supabase_dart/example/...
The example package uses the renamed dependency and includes web HTML, CSS, lint, ignore, and documentation files.
Repository workflows and migration documentation
.github/..., AGENTS.md, MIGRATION.md, packages/supabase_dart/README.md, packages/supabase_dart/CHANGELOG.md, packages/supabase_dart/LICENSE, sdk-compliance.yaml
Repository automation, package documentation, migration instructions, changelog, license, and compliance metadata reference supabase_dart.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant TracePropagationClient
  participant TraceContextProvider
  participant SupabaseEndpoint
  TracePropagationClient->>TraceContextProvider: Retrieve trace context
  TracePropagationClient->>TracePropagationClient: Validate host and sampling decision
  TracePropagationClient->>SupabaseEndpoint: Send request with trace headers
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The summary includes unrelated feature additions such as trace propagation, API-key handling, realtime options, counters, and stream filters. Remove unrelated feature additions from this pull request or document them as separate linked objectives.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the breaking rename from supabase to supabase_dart.
Linked Issues check ✅ Passed The changes implement the requested package rename across dependencies, imports, workflows, documentation, and supabase_flutter integration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch breaking/rename-supabase-to-supabase-dart

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🔇 Additional comments (47)
packages/supabase_dart/lib/src/api_key.dart (1)

1-14: LGTM!

Also applies to: 16-38

packages/supabase_dart/lib/src/counter.dart (1)

1-12: LGTM!

packages/supabase_dart/lib/src/realtime_client_options.dart (1)

1-37: LGTM!

packages/supabase_dart/lib/src/supabase_stream_filter_builder.dart (1)

1-12: LGTM!

Also applies to: 14-40, 42-96, 98-113, 115-141, 143-177, 179-191, 193-207

packages/supabase_dart/example/pubspec.yaml (1)

1-1: LGTM!

Also applies to: 13-13

packages/supabase_dart/example/.gitignore (1)

1-4: LGTM!

packages/supabase_dart/example/analysis_options.yaml (1)

1-1: LGTM!

packages/supabase_dart/example/web/main.dart (1)

4-4: LGTM!

packages/supabase_dart/example/web/styles.css (1)

1-12: LGTM!

packages/supabase_dart/lib/src/trace_propagation.dart (1)

1-56: LGTM!

packages/supabase_dart/lib/src/trace_http_client.dart (3)

28-34: 🎯 Functional Correctness

⚠️ Unverified finding
Sandbox verification was unavailable.

Verify that enabled gates wrapper installation.

Line 28 does not check _options.enabled. This is safe only if every construction site installs TracePropagationClient only when enabled is true. Otherwise, the default-disabled option still propagates headers whenever a provider exists.


31-34: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

⚠️ Unverified finding
Sandbox verification was unavailable.

Prevent propagation across cross-host redirects.

Line 34 delegates redirect handling to _inner after trace headers are added. On dart:io, an automatically followed GET or HEAD redirect forwards custom headers to a different domain; only specific sensitive headers receive cross-domain protection. traceparent, tracestate, and baggage are custom headers. The redirected request does not pass through _shouldPropagateTo, so a permitted host can redirect trace data to a third party. (api.dart.dev)

Disable automatic redirects before injection, or handle redirects so each redirect target passes _shouldPropagateTo before trace headers are copied.


37-109: LGTM!

packages/supabase_dart/pubspec.yaml (1)

1-5: LGTM!

pubspec.yaml (1)

14-15: LGTM!

packages/supabase_dart/lib/supabase_dart.dart (1)

1-18: LGTM!

packages/supabase_dart/lib/src/version.dart (1)

1-1: LGTM!

packages/supabase_dart/test/client_test.dart (1)

4-4: LGTM!

packages/supabase_dart/test/mock_test.dart (1)

5-5: LGTM!

packages/supabase_dart/test/realtime_test.dart (1)

4-4: LGTM!

packages/supabase_dart/test/stream_filter_test.dart (1)

5-5: LGTM!

packages/supabase_dart/test/stream_integration_test.dart (1)

6-6: LGTM!

packages/supabase_dart/lib/src/auth_http_client.dart (1)

2-2: LGTM!

packages/supabase_dart/lib/src/constants.dart (1)

1-1: LGTM!

packages/supabase_dart/lib/src/supabase_client.dart (1)

5-7: LGTM!

packages/supabase_dart/lib/src/supabase_client_options.dart (1)

1-1: LGTM!

packages/supabase_dart/lib/src/supabase_query_builder.dart (1)

1-1: LGTM!

packages/supabase_dart/test/trace_propagation_test.dart (1)

3-4: LGTM!

packages/supabase_dart/test/utilities_test.dart (1)

5-7: LGTM!

packages/supabase_dart/test/utils.dart (1)

26-26: 🎯 Functional Correctness

No change is required. The sessionString assignment includes the updated_at value, closing }}, and semicolon.

			> Likely an incorrect or invalid review comment.
packages/supabase_dart/lib/src/supabase_query_schema.dart (1)

2-2: LGTM!

packages/supabase_dart/lib/src/supabase_stream_builder.dart (1)

4-4: LGTM!

packages/supabase_dart/analysis_options.yaml (1)

1-1: LGTM!

packages/supabase_dart/dart_test.yaml (1)

1-5: LGTM!

packages/supabase_flutter/lib/src/supabase.dart (1)

8-8: LGTM!

packages/supabase_flutter/lib/supabase_flutter.dart (1)

4-4: LGTM!

packages/supabase_flutter/pubspec.yaml (1)

30-30: LGTM!

packages/supabase_dart/test/api_key_test.dart (1)

6-7: LGTM!

.github/ISSUE_TEMPLATE/bug_report.yml (1)

25-25: LGTM!

.github/workflows/label-issues.yml (1)

34-34: LGTM!

.github/workflows/release-pana.yml (1)

34-34: LGTM!

.github/workflows/test.yml (1)

67-79: LGTM!

Also applies to: 347-347

AGENTS.md (1)

14-14: LGTM!

MIGRATION.md (1)

7-7: LGTM!

Also applies to: 23-49

packages/supabase_dart/LICENSE (1)

1-21: LGTM!

packages/supabase_dart/README.md (1)

7-7: LGTM!

Also applies to: 22-22

sdk-compliance.yaml (1)

18-18: LGTM!

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@MIGRATION.md`:
- Around line 17-21: Update the discontinuation wording in MIGRATION.md lines
17-21 and packages/supabase_dart/README.md lines 31-33 to state that the
supabase package will be discontinued on pub.dev when v3 is released, rather
than implying it is already discontinued.

In `@packages/supabase_dart/CHANGELOG.md`:
- Around line 922-924: Resolve the duplicate 0.0.1-dev.8 heading in the
changelog by merging the repeated section into the existing version section or
restoring the intended distinct version heading, ensuring each release version
has exactly one unambiguous heading.
- Around line 1-6: The changelog lacks a v3 entry documenting the breaking
package rename. Add an `## 3.0.0` or `## Unreleased` section above `2.16.0` that
explicitly names the new `supabase_dart` package and its `supabase_dart.dart`
entrypoint.

In `@packages/supabase_dart/example/README.md`:
- Line 6: Update the application description in the README to hyphenate “geo
based” as “geo-based,” without changing the rest of the description.
- Around line 1-8: Update the Examples section in the README to remove or
replace Flutter-specific application links with pure-Dart examples; where no
pure-Dart example exists, direct users to the supabase_flutter package instead.
Ensure the listed examples accurately represent the supabase_dart package.

In `@packages/supabase_dart/example/web/index.html`:
- Line 9: Update the HTML document title in the title element from dart_web_app
to a package-specific title such as Supabase Dart Example.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 121d7dca-6b74-4e54-aa24-3676980eeb88

📥 Commits

Reviewing files that changed from the base of the PR and between 84c7c07 and e5a59ab.

📒 Files selected for processing (48)
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/workflows/label-issues.yml
  • .github/workflows/release-pana.yml
  • .github/workflows/test.yml
  • AGENTS.md
  • MIGRATION.md
  • packages/supabase_dart/CHANGELOG.md
  • packages/supabase_dart/LICENSE
  • packages/supabase_dart/README.md
  • packages/supabase_dart/analysis_options.yaml
  • packages/supabase_dart/dart_test.yaml
  • packages/supabase_dart/example/.gitignore
  • packages/supabase_dart/example/README.md
  • packages/supabase_dart/example/analysis_options.yaml
  • packages/supabase_dart/example/pubspec.yaml
  • packages/supabase_dart/example/web/index.html
  • packages/supabase_dart/example/web/main.dart
  • packages/supabase_dart/example/web/styles.css
  • packages/supabase_dart/lib/src/api_key.dart
  • packages/supabase_dart/lib/src/auth_http_client.dart
  • packages/supabase_dart/lib/src/constants.dart
  • packages/supabase_dart/lib/src/counter.dart
  • packages/supabase_dart/lib/src/realtime_client_options.dart
  • packages/supabase_dart/lib/src/supabase_client.dart
  • packages/supabase_dart/lib/src/supabase_client_options.dart
  • packages/supabase_dart/lib/src/supabase_query_builder.dart
  • packages/supabase_dart/lib/src/supabase_query_schema.dart
  • packages/supabase_dart/lib/src/supabase_stream_builder.dart
  • packages/supabase_dart/lib/src/supabase_stream_filter_builder.dart
  • packages/supabase_dart/lib/src/trace_http_client.dart
  • packages/supabase_dart/lib/src/trace_propagation.dart
  • packages/supabase_dart/lib/src/version.dart
  • packages/supabase_dart/lib/supabase_dart.dart
  • packages/supabase_dart/pubspec.yaml
  • packages/supabase_dart/test/api_key_test.dart
  • packages/supabase_dart/test/client_test.dart
  • packages/supabase_dart/test/mock_test.dart
  • packages/supabase_dart/test/realtime_test.dart
  • packages/supabase_dart/test/stream_filter_test.dart
  • packages/supabase_dart/test/stream_integration_test.dart
  • packages/supabase_dart/test/trace_propagation_test.dart
  • packages/supabase_dart/test/utilities_test.dart
  • packages/supabase_dart/test/utils.dart
  • packages/supabase_flutter/lib/src/supabase.dart
  • packages/supabase_flutter/lib/supabase_flutter.dart
  • packages/supabase_flutter/pubspec.yaml
  • pubspec.yaml
  • sdk-compliance.yaml

Comment thread MIGRATION.md
Comment on lines +17 to +21
### The `supabase` package is now `supabase_dart`

The pure Dart client reads like the umbrella name for the whole SDK, which led people to add
`supabase` to Flutter projects instead of `supabase_flutter`. It is published as `supabase_dart`
from v3 onwards, and the `supabase` package is discontinued on pub.dev.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use release-time wording for the old package discontinuation.

Both documents state that supabase is already discontinued, but the PR objective schedules publishing and discontinuation for the v3 release.

  • MIGRATION.md#L17-L21: State that supabase will be discontinued on pub.dev when v3 is released.
  • packages/supabase_dart/README.md#L31-L33: State that supabase will be discontinued when v3 is released.
📍 Affects 2 files
  • MIGRATION.md#L17-L21 (this comment)
  • packages/supabase_dart/README.md#L31-L33
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@MIGRATION.md` around lines 17 - 21, Update the discontinuation wording in
MIGRATION.md lines 17-21 and packages/supabase_dart/README.md lines 31-33 to
state that the supabase package will be discontinued on pub.dev when v3 is
released, rather than implying it is already discontinued.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 6

🔇 Additional comments (47)
packages/supabase_dart/lib/src/api_key.dart (1)

1-14: LGTM!

Also applies to: 16-38

packages/supabase_dart/lib/src/counter.dart (1)

1-12: LGTM!

packages/supabase_dart/lib/src/realtime_client_options.dart (1)

1-37: LGTM!

packages/supabase_dart/lib/src/supabase_stream_filter_builder.dart (1)

1-12: LGTM!

Also applies to: 14-40, 42-96, 98-113, 115-141, 143-177, 179-191, 193-207

packages/supabase_dart/example/pubspec.yaml (1)

1-1: LGTM!

Also applies to: 13-13

packages/supabase_dart/example/.gitignore (1)

1-4: LGTM!

packages/supabase_dart/example/analysis_options.yaml (1)

1-1: LGTM!

packages/supabase_dart/example/web/main.dart (1)

4-4: LGTM!

packages/supabase_dart/example/web/styles.css (1)

1-12: LGTM!

packages/supabase_dart/lib/src/trace_propagation.dart (1)

1-56: LGTM!

packages/supabase_dart/lib/src/trace_http_client.dart (3)

28-34: 🎯 Functional Correctness

⚠️ Unverified finding
Sandbox verification was unavailable.

Verify that enabled gates wrapper installation.

Line 28 does not check _options.enabled. This is safe only if every construction site installs TracePropagationClient only when enabled is true. Otherwise, the default-disabled option still propagates headers whenever a provider exists.


31-34: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

⚠️ Unverified finding
Sandbox verification was unavailable.

Prevent propagation across cross-host redirects.

Line 34 delegates redirect handling to _inner after trace headers are added. On dart:io, an automatically followed GET or HEAD redirect forwards custom headers to a different domain; only specific sensitive headers receive cross-domain protection. traceparent, tracestate, and baggage are custom headers. The redirected request does not pass through _shouldPropagateTo, so a permitted host can redirect trace data to a third party. (api.dart.dev)

Disable automatic redirects before injection, or handle redirects so each redirect target passes _shouldPropagateTo before trace headers are copied.


37-109: LGTM!

packages/supabase_dart/pubspec.yaml (1)

1-5: LGTM!

pubspec.yaml (1)

14-15: LGTM!

packages/supabase_dart/lib/supabase_dart.dart (1)

1-18: LGTM!

packages/supabase_dart/lib/src/version.dart (1)

1-1: LGTM!

packages/supabase_dart/test/client_test.dart (1)

4-4: LGTM!

packages/supabase_dart/test/mock_test.dart (1)

5-5: LGTM!

packages/supabase_dart/test/realtime_test.dart (1)

4-4: LGTM!

packages/supabase_dart/test/stream_filter_test.dart (1)

5-5: LGTM!

packages/supabase_dart/test/stream_integration_test.dart (1)

6-6: LGTM!

packages/supabase_dart/lib/src/auth_http_client.dart (1)

2-2: LGTM!

packages/supabase_dart/lib/src/constants.dart (1)

1-1: LGTM!

packages/supabase_dart/lib/src/supabase_client.dart (1)

5-7: LGTM!

packages/supabase_dart/lib/src/supabase_client_options.dart (1)

1-1: LGTM!

packages/supabase_dart/lib/src/supabase_query_builder.dart (1)

1-1: LGTM!

packages/supabase_dart/test/trace_propagation_test.dart (1)

3-4: LGTM!

packages/supabase_dart/test/utilities_test.dart (1)

5-7: LGTM!

packages/supabase_dart/test/utils.dart (1)

26-26: 🎯 Functional Correctness

No change is required. The sessionString assignment includes the updated_at value, closing }}, and semicolon.

			> Likely an incorrect or invalid review comment.
packages/supabase_dart/lib/src/supabase_query_schema.dart (1)

2-2: LGTM!

packages/supabase_dart/lib/src/supabase_stream_builder.dart (1)

4-4: LGTM!

packages/supabase_dart/analysis_options.yaml (1)

1-1: LGTM!

packages/supabase_dart/dart_test.yaml (1)

1-5: LGTM!

packages/supabase_flutter/lib/src/supabase.dart (1)

8-8: LGTM!

packages/supabase_flutter/lib/supabase_flutter.dart (1)

4-4: LGTM!

packages/supabase_flutter/pubspec.yaml (1)

30-30: LGTM!

packages/supabase_dart/test/api_key_test.dart (1)

6-7: LGTM!

.github/ISSUE_TEMPLATE/bug_report.yml (1)

25-25: LGTM!

.github/workflows/label-issues.yml (1)

34-34: LGTM!

.github/workflows/release-pana.yml (1)

34-34: LGTM!

.github/workflows/test.yml (1)

67-79: LGTM!

Also applies to: 347-347

AGENTS.md (1)

14-14: LGTM!

MIGRATION.md (1)

7-7: LGTM!

Also applies to: 23-49

packages/supabase_dart/LICENSE (1)

1-21: LGTM!

packages/supabase_dart/README.md (1)

7-7: LGTM!

Also applies to: 22-22

sdk-compliance.yaml (1)

18-18: LGTM!

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@MIGRATION.md`:
- Around line 17-21: Update the discontinuation wording in MIGRATION.md lines
17-21 and packages/supabase_dart/README.md lines 31-33 to state that the
supabase package will be discontinued on pub.dev when v3 is released, rather
than implying it is already discontinued.

In `@packages/supabase_dart/CHANGELOG.md`:
- Around line 922-924: Resolve the duplicate 0.0.1-dev.8 heading in the
changelog by merging the repeated section into the existing version section or
restoring the intended distinct version heading, ensuring each release version
has exactly one unambiguous heading.
- Around line 1-6: The changelog lacks a v3 entry documenting the breaking
package rename. Add an `## 3.0.0` or `## Unreleased` section above `2.16.0` that
explicitly names the new `supabase_dart` package and its `supabase_dart.dart`
entrypoint.

In `@packages/supabase_dart/example/README.md`:
- Line 6: Update the application description in the README to hyphenate “geo
based” as “geo-based,” without changing the rest of the description.
- Around line 1-8: Update the Examples section in the README to remove or
replace Flutter-specific application links with pure-Dart examples; where no
pure-Dart example exists, direct users to the supabase_flutter package instead.
Ensure the listed examples accurately represent the supabase_dart package.

In `@packages/supabase_dart/example/web/index.html`:
- Line 9: Update the HTML document title in the title element from dart_web_app
to a package-specific title such as Supabase Dart Example.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 121d7dca-6b74-4e54-aa24-3676980eeb88

📥 Commits

Reviewing files that changed from the base of the PR and between 84c7c07 and e5a59ab.

📒 Files selected for processing (48)
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/workflows/label-issues.yml
  • .github/workflows/release-pana.yml
  • .github/workflows/test.yml
  • AGENTS.md
  • MIGRATION.md
  • packages/supabase_dart/CHANGELOG.md
  • packages/supabase_dart/LICENSE
  • packages/supabase_dart/README.md
  • packages/supabase_dart/analysis_options.yaml
  • packages/supabase_dart/dart_test.yaml
  • packages/supabase_dart/example/.gitignore
  • packages/supabase_dart/example/README.md
  • packages/supabase_dart/example/analysis_options.yaml
  • packages/supabase_dart/example/pubspec.yaml
  • packages/supabase_dart/example/web/index.html
  • packages/supabase_dart/example/web/main.dart
  • packages/supabase_dart/example/web/styles.css
  • packages/supabase_dart/lib/src/api_key.dart
  • packages/supabase_dart/lib/src/auth_http_client.dart
  • packages/supabase_dart/lib/src/constants.dart
  • packages/supabase_dart/lib/src/counter.dart
  • packages/supabase_dart/lib/src/realtime_client_options.dart
  • packages/supabase_dart/lib/src/supabase_client.dart
  • packages/supabase_dart/lib/src/supabase_client_options.dart
  • packages/supabase_dart/lib/src/supabase_query_builder.dart
  • packages/supabase_dart/lib/src/supabase_query_schema.dart
  • packages/supabase_dart/lib/src/supabase_stream_builder.dart
  • packages/supabase_dart/lib/src/supabase_stream_filter_builder.dart
  • packages/supabase_dart/lib/src/trace_http_client.dart
  • packages/supabase_dart/lib/src/trace_propagation.dart
  • packages/supabase_dart/lib/src/version.dart
  • packages/supabase_dart/lib/supabase_dart.dart
  • packages/supabase_dart/pubspec.yaml
  • packages/supabase_dart/test/api_key_test.dart
  • packages/supabase_dart/test/client_test.dart
  • packages/supabase_dart/test/mock_test.dart
  • packages/supabase_dart/test/realtime_test.dart
  • packages/supabase_dart/test/stream_filter_test.dart
  • packages/supabase_dart/test/stream_integration_test.dart
  • packages/supabase_dart/test/trace_propagation_test.dart
  • packages/supabase_dart/test/utilities_test.dart
  • packages/supabase_dart/test/utils.dart
  • packages/supabase_flutter/lib/src/supabase.dart
  • packages/supabase_flutter/lib/supabase_flutter.dart
  • packages/supabase_flutter/pubspec.yaml
  • pubspec.yaml
  • sdk-compliance.yaml
🛑 Comments failed to post (5)
packages/supabase_dart/CHANGELOG.md (2)

1-6: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a v3 changelog entry for the package rename.

The newest section is 2.16.0, but MIGRATION.md documents the breaking supabase to supabase_dart change for v3. Add an ## 3.0.0 or ## Unreleased section that names the new package and supabase_dart.dart entrypoint before publishing v3.

Based on learnings: “Update package changelogs if making notable changes.”

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/supabase_dart/CHANGELOG.md` around lines 1 - 6, The changelog lacks
a v3 entry documenting the breaking package rename. Add an `## 3.0.0` or `##
Unreleased` section above `2.16.0` that explicitly names the new `supabase_dart`
package and its `supabase_dart.dart` entrypoint.

Source: Learnings


922-924: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Resolve the duplicate 0.0.1-dev.8 heading.

Line 922 repeats the ## [0.0.1-dev.8] heading already used at Line 918. This makes release sections and generated anchors ambiguous. Restore the intended version heading or merge the two sections.

🧰 Tools
🪛 markdownlint-cli2 (0.23.2)

[warning] 922-922: Multiple headings with the same content

(MD024, no-duplicate-heading)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/supabase_dart/CHANGELOG.md` around lines 922 - 924, Resolve the
duplicate 0.0.1-dev.8 heading in the changelog by merging the repeated section
into the existing version section or restoring the intended distinct version
heading, ensuring each release version has exactly one unambiguous heading.

Source: Linters/SAST tools

packages/supabase_dart/example/README.md (2)

1-8: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Keep the examples aligned with the pure Dart package.

This README presents “Supabase Flutter” applications under supabase_dart. That can direct Flutter users to the pure Dart package and conflicts with the package-selection objective. Replace these links with pure-Dart examples or direct Flutter users to supabase_flutter.

🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: Use a hyphen to join words.
Context: ...ase-flutter-demo - Spot, open source geo based video sharing social app created w...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/supabase_dart/example/README.md` around lines 1 - 8, Update the
Examples section in the README to remove or replace Flutter-specific application
links with pure-Dart examples; where no pure-Dart example exists, direct users
to the supabase_flutter package instead. Ensure the listed examples accurately
represent the supabase_dart package.

6-6: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Hyphenate geo-based.

Change geo based to geo-based in the application description.

🧰 Tools
🪛 LanguageTool

[grammar] ~6-~6: Use a hyphen to join words.
Context: ...ase-flutter-demo - Spot, open source geo based video sharing social app created w...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/supabase_dart/example/README.md` at line 6, Update the application
description in the README to hyphenate “geo based” as “geo-based,” without
changing the rest of the description.

Source: Linters/SAST tools

packages/supabase_dart/example/web/index.html (1)

9-9: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the browser title.

The title remains dart_web_app, so the renamed example is not identified in the browser tab. Use a package-specific title such as Supabase Dart Example.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/supabase_dart/example/web/index.html` at line 9, Update the HTML
document title in the title element from dart_web_app to a package-specific
title such as Supabase Dart Example.

@spydon
spydon marked this pull request as draft August 13, 2026 14:37
@spydon

spydon commented Aug 13, 2026

Copy link
Copy Markdown
Contributor Author

Moving this back to draft since we're still evaluating whether this is worth doing.

spydon added a commit that referenced this pull request Aug 13, 2026
## What

Renames the auth client package from `gotrue` to `supabase_auth`, its
library entrypoint from `gotrue.dart` to `supabase_auth.dart`, and the
public types that carried the old name.

The service this package talks to has been called Supabase Auth for
years, and `gotrue` is a name users no longer recognize. The other
clients already moved: `supabase-py` ships `supabase_auth` and
`supabase-js` ships `@supabase/auth-js`.

## Class renames

The old names are replaced with the `Auth` prefix the rest of the
package already uses (`AuthException`, `AuthResponse`, `AuthState`,
`AuthClientOptions`), which is also what `auth-js` prefers.

| Before | After |
| --- | --- |
| `GoTrueClient` | `AuthClient` |
| `GoTrueAdminApi` | `AuthAdminApi` |
| `GoTrueAdminCustomProvidersApi` | `AuthAdminCustomProvidersApi` |
| `GoTrueAdminMFAApi` | `AuthAdminMFAApi` |
| `GoTrueAdminOAuthApi` | `AuthAdminOAuthApi` |
| `GoTrueAdminPasskeyApi` | `AuthAdminPasskeyApi` |
| `GoTrueMFAApi` | `AuthMFAApi` |
| `GoTrueOAuthApi` | `AuthOAuthApi` |
| `GoTruePasskeyApi` | `AuthPasskeyApi` |
| `GotrueAsyncStorage` | `AuthAsyncStorage` |
| `SharedPreferencesGotrueAsyncStorage` |
`SharedPreferencesAuthAsyncStorage` |

The two `supabase_flutter` extensions on the auth client follow:
`GoTrueClientSignInProvider` becomes `AuthClientSignInProvider`,
`GoTrueClientPasskey` becomes `AuthClientPasskey`.

## Other changes

- `packages/gotrue` moved to `packages/supabase_auth`, with `name:
supabase_auth` in the pubspec and the repository link updated. Source
files named after the old package are renamed to match their classes,
for example `src/gotrue_client.dart` to `src/auth_client.dart`.
- `supabase` depends on `supabase_auth` instead of `gotrue`.
`supabase_flutter` reaches it transitively, so neither package's own
dependency list gains an entry.
- `supabase_flutter/lib/src/flutter_go_true_client_options.dart` is
renamed to `flutter_auth_client_options.dart`. The class inside was
already `FlutterAuthClientOptions`.
- Two private fields in `SupabaseClient` had collided under the new
naming, so the traced client handed to `AuthClient` is now
`_authApiHttpClient`, distinct from the `_authHttpClient` that injects
the JWT into the other service clients.
- All 110 `GoTrue`-prefixed symbol entries in `sdk-compliance.yaml` are
updated. No capability statuses change, this is a rename only.
- Root `pubspec.yaml`, the test/pana workflow package lists and coverage
carryforward, the issue-form library dropdown, the issue label mapping,
READMEs, `AGENTS.md` and `MIGRATION.md` all use the new name. The label
mapping keeps the old `gotrue` key so existing reports still land on the
`auth` label.
- `MIGRATION.md` gains a v2 to v3 section with the dependency rename,
the import rename and the full class rename table.

## Deliberately unchanged

- The `X-Client-Info` header still reports `gotrue-dart`. `auth-js`
likewise still sends `gotrue-js`, and changing it would break continuity
in server-side telemetry.
- The `gotrue_meta_security` field in captcha payloads is a server wire
contract.
- `supabase/config.toml`, `seed.sql` and the
`20240101000002_gotrue_reset.sql` migration refer to the actual auth
server and its schema.
- The `supabase/gotrue` docker image name in the test workflow's
image-cache grep.

## Test env keys

The auth test suite reads optional `.env` overrides. Each one now
accepts a `SUPABASE_AUTH_`-prefixed key and still honours the old
`GOTRUE_` key, so existing local `.env` files keep working:

| New | Still accepted |
| --- | --- |
| `SUPABASE_AUTH_URL` | `GOTRUE_URL` |
| `SUPABASE_AUTH_TOKEN` | `GOTRUE_TOKEN` |
| `SUPABASE_AUTH_SERVICE_ROLE_TOKEN` | `GOTRUE_SERVICE_ROLE_TOKEN` |

The URL lookup moved into a `getAuthUrl(env)` helper in
`test/utils.dart`, next to the existing token helpers, instead of being
repeated in ten test files.

## Version

The package is set to `3.0.0-dev.1` by hand rather than by the
versioning workflow, because the first release under a new name has to
be published manually before pub.dev knows the package. `3.0.0`
continues the `2.27.1` line the package had as `gotrue`, and `dev` is
both the preid the v2 prereleases used (`gotrue-v2.0.0-dev.1`) and
melos' default, so the rest of the packages line up on `3.0.0-dev.N`
when the v3 prerelease is cut. `supabase`'s pin on the auth client moves
with it.

## Follow-up outside this repo

Publishing `supabase_auth` and marking `gotrue` as discontinued on
pub.dev, pointing at the new name, has to happen at release time.

## Testing

- `dart analyze` clean across the workspace.
- `dart test -j 1` passes in `packages/supabase_auth` (458 tests) and
`packages/supabase` (134 tests) against the local Supabase stack.
- `flutter test` passes in `packages/supabase_flutter` (76 tests).
- `dart format -l 80 --set-exit-if-changed` reports no changes.
- The three `supabase/sdk` compliance checks pass locally:
`validate-compliance`, `check-drift` (no stale registrations from the
renames) and `check-api-symbols` against an `origin/main` base
extraction (every renamed symbol is registered under its new name).

## Note on merge order

This is rebased on `main` and overlaps with #1696 (the `supabase` to
`supabase_dart` rename) in the workflow package lists, the issue
templates, `AGENTS.md` and the `MIGRATION.md` insertion point. Whichever
merges second needs a conflict pass.

Resolves #1695
Part of #1278

SDK-1467


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Introduced the Supabase Auth package with updated authentication APIs,
storage providers, and Flutter integrations.
* Added custom OAuth/OIDC provider models, JWT/JWK handling, and
standardized authentication error codes.
* **Documentation**
* Updated migration guidance, examples, package references, licensing,
and changelog information.
* **Refactor**
* Renamed legacy authentication classes and extensions to consistent
Auth terminology across the SDK.
* **Tests**
* Updated coverage and test utilities for the renamed APIs and
authentication URL configuration.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rename supabase package to supabase_dart

1 participant