Skip to content

docs(samples, ui, llc): document platform compatibility#1277

Open
renefloor wants to merge 9 commits into
mainfrom
feat/linux-compat
Open

docs(samples, ui, llc): document platform compatibility#1277
renefloor wants to merge 9 commits into
mainfrom
feat/linux-compat

Conversation

@renefloor

@renefloor renefloor commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

🎯 Goal

Simplifying the example app so it runs on all platforms.
Related to: #1013

🛠 Implementation details

Mainly removing firebase dependencies for ringing.

☑️Contributor Checklist

General

  • Assigned a person / code owner group (required)
  • Thread with the PR link started in a respective Slack channel (#flutter-team) (required)
  • PR is linked to the GitHub issue it resolves

☑️Reviewer Checklist

  • Sample runs & works
  • UI Changes correct (before & after images)
  • Bugs validated (bugfixes)
  • New feature tested and works
  • All code we touched has new or updated Documentation

Summary by CodeRabbit

  • Bug Fixes
    • Simplified the example app startup by removing Firebase-based background messaging and local-notification handling.
    • Improved the Linux example window to appear only after the first rendered frame.
    • Streamlined the start-call UI by removing the “Ringing” option and simplifying navigation after call creation.
  • Chores
    • Updated build/tooling configuration across Flutter, Linux, macOS, and Windows, including native build settings and plugin registration.
    • Refreshed project hygiene (analyzer exclusions, metadata, and .gitignore) and added explicit platform declarations across packages.
  • Documentation
    • Expanded the Flutter package README with a supported-platform section and a feature support matrix.

@renefloor renefloor requested a review from a team as a code owner July 8, 2026 13:50
@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f5e53c03-dbc3-4899-a9a6-4f858621a624

📥 Commits

Reviewing files that changed from the base of the PR and between ae97e31 and 26279f7.

📒 Files selected for processing (1)
  • packages/stream_video_flutter/README.md
✅ Files skipped from review due to trivial changes (1)
  • packages/stream_video_flutter/README.md

📝 Walkthrough

Walkthrough

This PR removes Firebase and push-notification integration from the Flutter example, adds explicit package platform metadata, simplifies call startup navigation, updates platform documentation, and revises Linux, macOS, and Windows build configuration.

Changes

Example app platform changes

Layer / File(s) Summary
Remove Firebase and update call flow
packages/stream_video_flutter/example/lib/main.dart, packages/stream_video_flutter/example/lib/app.dart, packages/stream_video_flutter/example/lib/stream_video_sdk.dart, packages/stream_video_flutter/example/lib/screen/home_tabs/start_call_tab.dart, packages/stream_video_flutter/example/pubspec.yaml, packages/stream_video_flutter/example/windows/flutter/generated_plugins.cmake
Firebase startup, FCM handling, push-notification wiring, and related dependencies are removed; starting a call now always opens the stream lobby before joining.
Platform declarations and documentation
packages/stream_video/pubspec.yaml, packages/stream_video_flutter/pubspec.yaml, packages/stream_video_filters/pubspec.yaml, packages/stream_video_noise_cancellation/pubspec.yaml, packages/stream_video_push_notification/pubspec.yaml, packages/stream_video_screen_sharing/pubspec.yaml, packages/stream_video_flutter/README.md, packages/stream_video_flutter/example/README.md
Package platform metadata and supported-platform documentation are added or updated.
Example project metadata and generated files
packages/stream_video_flutter/example/.metadata, packages/stream_video_flutter/example/analysis_options.yaml, packages/stream_video_flutter/example/.gitignore, packages/stream_video_flutter/example/linux/.gitignore, packages/stream_video_flutter/example/linux/flutter/generated_plugins.cmake
Flutter migration metadata, analyzer exclusions, ignore rules, and Linux FFI plugin registration are updated.
Linux runner restructuring
packages/stream_video_flutter/example/linux/CMakeLists.txt, packages/stream_video_flutter/example/linux/runner/*
Linux build logic moves into a runner subdirectory, native assets receive an install rule, and GTK startup and first-frame handling are expanded.
macOS build settings
packages/stream_video_flutter/example/macos/Runner.xcodeproj/project.pbxproj
The CocoaPods resource copy phase is removed, the deployment target is raised to 16.0, and -lc++ is added.
Windows target configuration
packages/stream_video_flutter/example/windows/flutter/CMakeLists.txt, packages/stream_video_flutter/example/windows/flutter/generated_plugins.cmake
Windows build scripts default FLUTTER_TARGET_PLATFORM, pass it to the tool backend command, and remove Firebase from generated plugin registration.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Possibly related PRs

Suggested reviewers: Brazol, xsahil03x

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the main change: documenting platform compatibility for the sample app.
Description check ✅ Passed It includes the goal, implementation details, and checklists, but omits the template's UI Changes and Testing sections.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/linux-compat
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch feat/linux-compat

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

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
packages/stream_video_flutter/example/lib/app.dart (1)

94-94: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove trailing whitespace on line 94.

Line 94 appears to contain only trailing whitespace left behind after the _observeFcmMessages() call was removed.

🧹 Proposed fix
           _observeRingingEvents();
-          
           return const Result.success(none);
🤖 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/stream_video_flutter/example/lib/app.dart` at line 94, Remove the
leftover trailing whitespace in the app initialization code by deleting the
blank whitespace-only line around the _observeFcmMessages() area in app.dart;
keep the surrounding startup logic unchanged and ensure the file no longer
contains a line with only spaces or tabs.
packages/stream_video_flutter/example/macos/Runner.xcodeproj/project.pbxproj (1)

430-432: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove the redundant -lc++ flags from the macOS Runner configs. CLANG_CXX_LIBRARY = "libc++" already handles the C++ standard library, so the OTHER_LDFLAGS entries are unnecessary in Debug/Profile/Release. If this is a workaround for a specific linker issue, document why it needs to stay.

🤖 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/stream_video_flutter/example/macos/Runner.xcodeproj/project.pbxproj`
around lines 430 - 432, Remove the redundant -lc++ entries from the macOS Runner
build settings in the project configuration; CLANG_CXX_LIBRARY already selects
libc++ so the OTHER_LDFLAGS entries in the Debug/Profile/Release configs are
unnecessary. Update the Runner target settings in project.pbxproj and keep only
the inherited linker flags unless there is a specific workaround, in which case
document the reason near the affected build config entries.
🤖 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.

Nitpick comments:
In `@packages/stream_video_flutter/example/lib/app.dart`:
- Line 94: Remove the leftover trailing whitespace in the app initialization
code by deleting the blank whitespace-only line around the _observeFcmMessages()
area in app.dart; keep the surrounding startup logic unchanged and ensure the
file no longer contains a line with only spaces or tabs.

In
`@packages/stream_video_flutter/example/macos/Runner.xcodeproj/project.pbxproj`:
- Around line 430-432: Remove the redundant -lc++ entries from the macOS Runner
build settings in the project configuration; CLANG_CXX_LIBRARY already selects
libc++ so the OTHER_LDFLAGS entries in the Debug/Profile/Release configs are
unnecessary. Update the Runner target settings in project.pbxproj and keep only
the inherited linker flags unless there is a specific workaround, in which case
document the reason near the affected build config entries.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d285089b-f2b4-4fc4-9904-0820a1a86618

📥 Commits

Reviewing files that changed from the base of the PR and between 0849531 and b01fb0e.

📒 Files selected for processing (16)
  • packages/stream_video_flutter/example/.gitignore
  • packages/stream_video_flutter/example/.metadata
  • packages/stream_video_flutter/example/analysis_options.yaml
  • packages/stream_video_flutter/example/lib/app.dart
  • packages/stream_video_flutter/example/lib/firebase_options.dart
  • packages/stream_video_flutter/example/lib/main.dart
  • packages/stream_video_flutter/example/lib/stream_video_sdk.dart
  • packages/stream_video_flutter/example/linux/.gitignore
  • packages/stream_video_flutter/example/linux/CMakeLists.txt
  • packages/stream_video_flutter/example/linux/runner/CMakeLists.txt
  • packages/stream_video_flutter/example/linux/runner/main.cc
  • packages/stream_video_flutter/example/linux/runner/my_application.cc
  • packages/stream_video_flutter/example/linux/runner/my_application.h
  • packages/stream_video_flutter/example/macos/Runner.xcodeproj/project.pbxproj
  • packages/stream_video_flutter/example/pubspec.yaml
  • packages/stream_video_flutter/example/windows/flutter/generated_plugins.cmake
💤 Files with no reviewable changes (3)
  • packages/stream_video_flutter/example/lib/firebase_options.dart
  • packages/stream_video_flutter/example/lib/stream_video_sdk.dart
  • packages/stream_video_flutter/example/windows/flutter/generated_plugins.cmake

@renefloor renefloor changed the title Feat/linux compat docs(samples, ui, llc): document platform compatibility Jul 9, 2026
Comment thread packages/stream_video_flutter/README.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/stream_video_flutter/example/lib/screen/home_tabs/start_call_tab.dart (1)

69-73: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Missing return after empty call ID validation.

When callId is empty, a snackbar is shown but execution continues — setState(() => _callInProgress = true) runs and call.getOrCreate is called with an empty ID, which will fail at the API level and show a second error message.

🐛 Proposed fix
     final callId = _callIdController.text;
     if (callId.isEmpty) {
       context.showSnackBar('Call ID is empty');
-    }
-
-    setState(() => _callInProgress = true);
+      return;
+    }
+
+    setState(() => _callInProgress = true);
🤖 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/stream_video_flutter/example/lib/screen/home_tabs/start_call_tab.dart`
around lines 69 - 73, Add an immediate return after the empty-call-ID snackbar
in _startCall, preventing setState and call.getOrCreate from executing with an
empty ID.
🧹 Nitpick comments (1)
packages/stream_video_flutter/example/lib/app.dart (1)

27-30: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove empty initState.

initState now only calls super.initState() with no additional logic. It can be safely removed.

🤖 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/stream_video_flutter/example/lib/app.dart` around lines 27 - 30,
Remove the empty initState override from the relevant widget in app.dart, since
it adds no behavior beyond the framework default; retain the widget’s existing
lifecycle behavior without replacing it.
🤖 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 `@packages/stream_video_flutter/README.md`:
- Around line 36-49: Make the platform-support wording consistent in the README:
change the Official support matrix values for Web and macOS to ❌, normalize all
occurrences of “Macos” to “macOS” and “SDK's” to “SDKs,” and ensure the
surrounding prose and table use the same platform names and support semantics.

---

Outside diff comments:
In
`@packages/stream_video_flutter/example/lib/screen/home_tabs/start_call_tab.dart`:
- Around line 69-73: Add an immediate return after the empty-call-ID snackbar in
_startCall, preventing setState and call.getOrCreate from executing with an
empty ID.

---

Nitpick comments:
In `@packages/stream_video_flutter/example/lib/app.dart`:
- Around line 27-30: Remove the empty initState override from the relevant
widget in app.dart, since it adds no behavior beyond the framework default;
retain the widget’s existing lifecycle behavior without replacing it.
🪄 Autofix (Beta)

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: defaults

Review profile: CHILL

Plan: Pro

Run ID: e0158d8c-fdfc-427d-90e2-5e253a299794

📥 Commits

Reviewing files that changed from the base of the PR and between 73ff0d3 and ae97e31.

📒 Files selected for processing (13)
  • packages/stream_video/pubspec.yaml
  • packages/stream_video_filters/pubspec.yaml
  • packages/stream_video_flutter/README.md
  • packages/stream_video_flutter/example/README.md
  • packages/stream_video_flutter/example/lib/app.dart
  • packages/stream_video_flutter/example/lib/main.dart
  • packages/stream_video_flutter/example/lib/screen/home_tabs/start_call_tab.dart
  • packages/stream_video_flutter/example/linux/flutter/generated_plugins.cmake
  • packages/stream_video_flutter/example/windows/flutter/generated_plugins.cmake
  • packages/stream_video_flutter/pubspec.yaml
  • packages/stream_video_noise_cancellation/pubspec.yaml
  • packages/stream_video_push_notification/pubspec.yaml
  • packages/stream_video_screen_sharing/pubspec.yaml
💤 Files with no reviewable changes (1)
  • packages/stream_video_flutter/example/lib/main.dart
✅ Files skipped from review due to trivial changes (4)
  • packages/stream_video_screen_sharing/pubspec.yaml
  • packages/stream_video_flutter/example/linux/flutter/generated_plugins.cmake
  • packages/stream_video_flutter/example/README.md
  • packages/stream_video_flutter/example/windows/flutter/generated_plugins.cmake

Comment thread packages/stream_video_flutter/README.md Outdated
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.

3 participants