Skip to content

refactor(track): deprecate flutter_webrtc-typed Track getters#1125

Draft
hiroshihorie wants to merge 1 commit into
mainfrom
hiroshi/deprecate-webrtc-types
Draft

refactor(track): deprecate flutter_webrtc-typed Track getters#1125
hiroshihorie wants to merge 1 commit into
mainfrom
hiroshi/deprecate-webrtc-types

Conversation

@hiroshihorie

Copy link
Copy Markdown
Member

Description

Begins removing flutter_webrtc types from the public API surface. Track.mediaStream, Track.mediaStreamTrack, Track.sender, Track.receiver, and Track.mediaType are now @Deprecated, with @internal replacements (rtcStream, rtcTrack, rtcSender, rtcReceiver) for SDK and first-party use. Track.transceiver is marked @internal. All internal call sites (~15 files) are migrated off the deprecated getters, so they can be deleted in a future major release.

Non-breaking

  • Deprecations and @internal annotations only produce analyzer hints; no signatures or behavior change.
  • receiver was previously a public mutable field; it keeps both a deprecated getter and a deprecated setter, so existing reads and writes still compile.
  • The @internal accessors read the same backing fields the old getters did — no runtime behavior change.

Notes for consumers

First-party consumers (components-flutter, e2e-flutter) that read track.receiver/track.sender for stats will start seeing deprecation warnings; a LiveKit-owned stats accessor is the intended long-term replacement (follow-up). Remaining public rtc leaks (Hardware.openCamera, ScreenSelectDialog, encoding toRTCRtpEncoding converters, Track subclass constructors) are out of scope here and tracked as follow-ups.

Testing

  • dart analyze lib test clean, all 314 tests pass (no behavior change expected or observed).

Begins removing flutter_webrtc types from the public API:
Track.mediaStream/mediaStreamTrack/sender/receiver/mediaType are
deprecated in favor of @internal rtcStream/rtcTrack/rtcSender/rtcReceiver
accessors, transceiver is marked @internal, and all internal call sites
are migrated off the deprecated getters.
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown

Caution

Breaking change detected without major changeset

dart-apitool detected the following breaking changes:

Preparing git repository: https://github.com/livekit/client-sdk-flutter
Using ref: main
Cloning git repository: https://github.com/livekit/client-sdk-flutter
Checking out ref: main
Successfully cloned to: /tmp/AIINJW
Preparing package dependencies for git package https://github.com/livekit/client-sdk-flutter (forced Flutter)
Resolving dependencies...
Downloading packages...
  _fe_analyzer_shared 85.0.0 (104.0.0 available)
  analyzer 7.7.1 (14.0.0 available)
  build 2.5.4 (4.0.6 available)
  build_config 1.1.2 (1.3.0 available)
  build_resolvers 2.5.4 (3.0.4 available)
  build_runner 2.5.4 (2.15.0 available)
  build_runner_core 9.1.2 (9.3.2 available)
  built_value 8.12.4 (8.12.6 available)
  code_assets 1.0.0 (1.2.1 available)
  connectivity_plus 7.1.1 (7.2.0 available)
  dart_style 3.1.1 (3.1.9 available)
  dart_webrtc 1.8.0 (1.8.1 available)
  dbus 0.7.12 (0.7.14 available)
  device_info_plus 12.3.0 (13.2.0 available)
  device_info_plus_platform_interface 7.0.3 (8.1.0 available)
  hooks 1.0.2 (2.0.2 available)
  json_annotation 4.9.0 (4.12.0 available)
  json_serializable 6.9.5 (6.14.0 available)
  matcher 0.12.19 (0.12.20 available)
  meta 1.18.0 (1.18.3 available)
  mockito 5.4.6 (5.7.0 available)
  native_toolchain_c 0.17.6 (0.19.2 available)
  objective_c 9.3.0 (9.4.1 available)
  package_config 2.2.0 (3.0.0 available)
  path_provider 2.1.5 (2.1.6 available)
  path_provider_android 2.2.22 (2.3.1 available)
  path_provider_linux 2.2.1 (2.2.2 available)
  path_provider_platform_interface 2.1.2 (2.1.3 available)
  source_gen 2.0.0 (4.2.3 available)
  source_helper 1.3.7 (1.3.12 available)
  synchronized 3.4.0 (3.4.1 available)
  test_api 0.7.11 (0.7.13 available)
  vector_math 2.2.0 (2.4.0 available)
  vm_service 15.0.2 (15.2.0 available)
  win32 5.15.0 (6.3.0 available)
  win32_registry 2.1.0 (3.0.3 available)
  xml 6.6.1 (7.0.1 available)
Got dependencies!
37 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Resolving dependencies in `./example`...
Downloading packages...
Got dependencies in `./example`.
Preparing . (forced Flutter)
Copying sources from .
Preparing package dependencies for local package . (forced Flutter)
Resolving dependencies...
Downloading packages...
  _fe_analyzer_shared 85.0.0 (104.0.0 available)
  analyzer 7.7.1 (14.0.0 available)
  build 2.5.4 (4.0.6 available)
  build_config 1.1.2 (1.3.0 available)
  build_resolvers 2.5.4 (3.0.4 available)
  build_runner 2.5.4 (2.15.0 available)
  build_runner_core 9.1.2 (9.3.2 available)
  built_value 8.12.4 (8.12.6 available)
  code_assets 1.0.0 (1.2.1 available)
  connectivity_plus 7.1.1 (7.2.0 available)
  dart_style 3.1.1 (3.1.9 available)
  dart_webrtc 1.8.0 (1.8.1 available)
  dbus 0.7.12 (0.7.14 available)
  device_info_plus 12.3.0 (13.2.0 available)
  device_info_plus_platform_interface 7.0.3 (8.1.0 available)
  hooks 1.0.2 (2.0.2 available)
  json_annotation 4.9.0 (4.12.0 available)
  json_serializable 6.9.5 (6.14.0 available)
  matcher 0.12.19 (0.12.20 available)
  meta 1.18.0 (1.18.3 available)
  mockito 5.4.6 (5.7.0 available)
  native_toolchain_c 0.17.6 (0.19.2 available)
  objective_c 9.3.0 (9.4.1 available)
  package_config 2.2.0 (3.0.0 available)
  path_provider 2.1.5 (2.1.6 available)
  path_provider_android 2.2.22 (2.3.1 available)
  path_provider_linux 2.2.1 (2.2.2 available)
  path_provider_platform_interface 2.1.2 (2.1.3 available)
  source_gen 2.0.0 (4.2.3 available)
  source_helper 1.3.7 (1.3.12 available)
  synchronized 3.4.0 (3.4.1 available)
  test_api 0.7.11 (0.7.13 available)
  vector_math 2.2.0 (2.4.0 available)
  vm_service 15.0.2 (15.2.0 available)
  win32 5.15.0 (6.3.0 available)
  win32_registry 2.1.0 (3.0.3 available)
  xml 6.6.1 (7.0.1 available)
Got dependencies!
37 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Resolving dependencies in `./example`...
Downloading packages...
Got dependencies in `./example`.
Omitting pub get (package config already present)
Analyzing /tmp/AIINJW
Omitting pub get (package config already present)
Analyzing .
Cleaning up
Cleaning up
Checking Package version
ignoring prerelease
-- Generating report using: Console Reporter --
BREAKING CHANGES
├─┬ Class Track
│ ├── Field "transceiver" removed (CF01)
│ ├── Field "rtcStream" added (required) (CF02)
│ ├── Field "rtcTrack" added (required) (CF02)
│ └── Field "rtcSender" added (required) (CF02)
├─┬ Class RemoteTrack
│ └── Field "transceiver" removed (CF01)
├─┬ Class LocalTrack
│ ├── Field "transceiver" removed (CF01)
│ ├── Field "rtcStream" added (required) (CF02)
│ ├── Field "rtcTrack" added (required) (CF02)
│ └── Field "rtcSender" added (required) (CF02)
├─┬ Class LocalVideoTrack
│ └── Field "transceiver" removed (CF01)
├─┬ Class VideoTrack
│ └── Field "transceiver" removed (CF01)
├─┬ Class LocalAudioTrack
│ └── Field "transceiver" removed (CF01)
├─┬ Class AudioTrack
│ └── Field "transceiver" removed (CF01)
├─┬ Class RemoteAudioTrack
│ └── Field "transceiver" removed (CF01)
└─┬ Class RemoteVideoTrack
  └── Field "transceiver" removed (CF01)
Non-Breaking changes
├─┬ Class RemoteTrack
│ ├── Field "rtcStream" added (CF02) (minor)
│ ├── Field "rtcTrack" added (CF02) (minor)
│ └── Field "rtcSender" added (CF02) (minor)
├─┬ Class LocalVideoTrack
│ ├── Field "rtcStream" added (CF02) (minor)
│ ├── Field "rtcTrack" added (CF02) (minor)
│ └── Field "rtcSender" added (CF02) (minor)
├─┬ Class VideoTrack
│ ├── Field "rtcStream" added (CF02) (minor)
│ ├── Field "rtcTrack" added (CF02) (minor)
│ └── Field "rtcSender" added (CF02) (minor)
├─┬ Class LocalAudioTrack
│ ├── Field "rtcStream" added (CF02) (minor)
│ ├── Field "rtcTrack" added (CF02) (minor)
│ └── Field "rtcSender" added (CF02) (minor)
├─┬ Class AudioTrack
│ ├── Field "rtcStream" added (CF02) (minor)
│ ├── Field "rtcTrack" added (CF02) (minor)
│ └── Field "rtcSender" added (CF02) (minor)
├─┬ Class RemoteAudioTrack
│ ├── Field "rtcStream" added (CF02) (minor)
│ ├── Field "rtcTrack" added (CF02) (minor)
│ └── Field "rtcSender" added (CF02) (minor)
└─┬ Class RemoteVideoTrack
  ├── Field "rtcStream" added (CF02) (minor)
  ├── Field "rtcTrack" added (CF02) (minor)
  └── Field "rtcSender" added (CF02) (minor)
To learn more about the detected changes visit: https://github.com/bmw-tech/dart_apitool/blob/main/readme/change_codes.md
Version Check
New Version is too low!

Old version: "2.8.0"
New version: "2.8.0"
Needed version: "3.0.0"

Got "2.8.0" expected >= "3.0.0" (breaking changes)

If this is intentional, please add a changeset with major level in .changes/:

major type="changed" "Description of breaking change"

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.

1 participant