Skip to content

refactor(realtime)!: hide the Binding registration primitives - #1708

Merged
spydon merged 2 commits into
feat/realtime-streams-v3from
lukasklingsbo/sdk-1478-v3-stop-leaking-internal-realtime-types-from-the-public-api
Aug 14, 2026
Merged

refactor(realtime)!: hide the Binding registration primitives#1708
spydon merged 2 commits into
feat/realtime-streams-v3from
lukasklingsbo/sdk-1478-v3-stop-leaking-internal-realtime-types-from-the-public-api

Conversation

@spydon

@spydon spydon commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

What

Marks Binding and BindingCallback as @internal and removes them from the barrel export of realtime_client.

Why

They are the raw registration primitives underneath the channel listeners, and their only consumers, RealtimeChannel.onEvents and RealtimeChannel.off, have always been @internal. The raw-callback escape hatch underneath the v3 stream API should not be public. This also removed a stray import of the package barrel from lib/src/message.dart.

The ticket also covered RealtimeChannel.joinPush leaking the internal Push type, but that field is already annotated @internal, so no change was needed there.

Notes

Tests

All realtime unit tests (195) and the integration suite (both protocol versions, run locally against a real Realtime server) pass, plus supabase (134) and analyzer/DCM across the workspace.

Resolves SDK-1478

BREAKING CHANGE: Binding and BindingCallback are internal and no longer
exported. Their only consumers, RealtimeChannel.onEvents and
RealtimeChannel.off, were already internal; use the typed channel
streams instead.
@spydon
spydon requested a review from a team as a code owner August 13, 2026 14:04
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c06a36cc-b8e4-42b8-96ff-83bc5860b6d2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

…3-stop-leaking-internal-realtime-types-from-the-public-api
@spydon
spydon merged commit a3d0a93 into feat/realtime-streams-v3 Aug 14, 2026
11 checks passed
@spydon
spydon deleted the lukasklingsbo/sdk-1478-v3-stop-leaking-internal-realtime-types-from-the-public-api branch August 14, 2026 10:59
spydon added a commit that referenced this pull request Aug 17, 2026
## What

Marks `Binding` and `BindingCallback` as `@internal` and removes them
from the barrel export of `realtime_client`.

## Why

They are the raw registration primitives underneath the channel
listeners, and their only consumers, `RealtimeChannel.onEvents` and
`RealtimeChannel.off`, have always been `@internal`. The raw-callback
escape hatch underneath the v3 stream API should not be public. This
also removed a stray import of the package barrel from
`lib/src/message.dart`.

The ticket also covered `RealtimeChannel.joinPush` leaking the internal
`Push` type, but that field is already annotated `@internal`, so no
change was needed there.

## Notes

- Stacked on #1706; based on `feat/realtime-streams-v3`. Independent of
#1707.
- Deregisters the `Binding` symbols from `sdk-compliance.yaml`; local
symbol and drift checks pass.
- Adds a migration entry.

## Tests

All realtime unit tests (195) and the integration suite (both protocol
versions, run locally against a real Realtime server) pass, plus
`supabase` (134) and analyzer/DCM across the workspace.

Resolves SDK-1478
spydon added a commit that referenced this pull request Aug 17, 2026
Marks `Binding` and `BindingCallback` as `@internal` and removes them
from the barrel export of `realtime_client`.

They are the raw registration primitives underneath the channel
listeners, and their only consumers, `RealtimeChannel.onEvents` and
`RealtimeChannel.off`, have always been `@internal`. The raw-callback
escape hatch underneath the v3 stream API should not be public. This
also removed a stray import of the package barrel from
`lib/src/message.dart`.

The ticket also covered `RealtimeChannel.joinPush` leaking the internal
`Push` type, but that field is already annotated `@internal`, so no
change was needed there.

- Stacked on #1706; based on `feat/realtime-streams-v3`. Independent of
- Deregisters the `Binding` symbols from `sdk-compliance.yaml`; local
symbol and drift checks pass.
- Adds a migration entry.

All realtime unit tests (195) and the integration suite (both protocol
versions, run locally against a real Realtime server) pass, plus
`supabase` (134) and analyzer/DCM across the workspace.

Resolves SDK-1478
spydon added a commit that referenced this pull request Aug 17, 2026
Marks `Binding` and `BindingCallback` as `@internal` and removes them
from the barrel export of `realtime_client`.

They are the raw registration primitives underneath the channel
listeners, and their only consumers, `RealtimeChannel.onEvents` and
`RealtimeChannel.off`, have always been `@internal`. The raw-callback
escape hatch underneath the v3 stream API should not be public. This
also removed a stray import of the package barrel from
`lib/src/message.dart`.

The ticket also covered `RealtimeChannel.joinPush` leaking the internal
`Push` type, but that field is already annotated `@internal`, so no
change was needed there.

- Stacked on #1706; based on `feat/realtime-streams-v3`. Independent of
- Deregisters the `Binding` symbols from `sdk-compliance.yaml`; local
symbol and drift checks pass.
- Adds a migration entry.

All realtime unit tests (195) and the integration suite (both protocol
versions, run locally against a real Realtime server) pass, plus
`supabase` (134) and analyzer/DCM across the workspace.

Resolves SDK-1478
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.

2 participants