Skip to content

Move @Preview composables out of published artifact to fix R8 builds#1730

Open
PratimMallick wants to merge 3 commits into
developfrom
fix/r8-previewdata-missing-classes
Open

Move @Preview composables out of published artifact to fix R8 builds#1730
PratimMallick wants to merge 3 commits into
developfrom
fix/r8-previewdata-missing-classes

Conversation

@PratimMallick

@PratimMallick PratimMallick commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Goal

Fixes 1244

R8/minified release builds of apps consuming stream-video-android-ui-compose fail with Missing class io.getstream.video.android.mock.StreamPreviewDataUtils (and StreamPreviewDataUtilsKt). The compose module depends on stream-video-android-previewdata as compileOnly, but the Compose compiler emits ComposableSingletons$* lambda holders for the inline @Preview functions into production classes, so the preview-data references leak into the published release artifact even though that module is never on a consumer's runtime classpath.

Fixes #1448

Implementation

  • Moved every @Preview composable out of src/main into a new debug-only source set (src/debug/kotlin, one <Name>Preview.kt per original file, same package). Previews still render in Android Studio (debug variant) but are no longer compiled into the release artifact.
  • Changed the stream-video-android-previewdata dependency from compileOnly to debugImplementation.
  • Two production composables referenced by previews were widened privateinternal (CalLCenterContent, ParticipantActionsWithoutState). One preview that was also used by production code (ModerationWarningUiContentDemo via LocalInspectionMode) stays in main with the @Preview moved to a thin debug wrapper.
  • Declared kotlinx-datetime (0.6.1) explicitly as an implementation dependency of the compose module — it is used by the livestream countdown UI in production but was only arriving transitively, which also caused Missing class kotlinx.datetime.* R8 errors (reported in the same issue thread).
  • Regenerated the public API dump: 50 compiler-generated ComposableSingletons$* preview classes are removed from the published API surface.

Testing

  • ./gradlew :stream-video-android-ui-compose:compileReleaseKotlin — published variant compiles without preview-data.
  • ./gradlew :stream-video-android-ui-compose:compileDebugKotlin — previews still compile (IDE rendering intact).
  • ./gradlew :stream-video-android-ui-compose:spotlessCheck + :apiCheck — pass (API baseline updated via apiDump).
  • ./gradlew :stream-video-android-ui-compose:testDebugUnitTest — pass.
  • Reproduction: enabled R8 on tutorials:tutorial-video (a clean consumer with no preview-data dependency). Before: minifyReleaseWithR8 failed with the exact issue R8 build failure with StreamPreviewDataUtils classes referenced from ComposableSingletons #1448 error. After: it passes.
  • Verified the shipped release classes.jar contains 0 classes referencing io/getstream/video/android/mock (was 50+).

☑️Contributor Checklist

General

  • I have signed the Stream CLA (required)
  • Assigned a person / code owner group (required)
  • Thread with the PR link started in a respective Slack channel (required internally)
  • PR targets the develop branch
  • PR is linked to the GitHub issue it resolves

Code & documentation

  • Changelog is updated with client-facing changes
  • New code is covered by unit tests
  • Comparison screenshots added for visual changes
  • Affected documentation updated (KDocs, docusaurus, tutorial)
  • Tutorial starter kit updated
  • Examples/guides starter kits updated (stream-video-examples)

☑️Reviewer Checklist

  • XML sample runs & works
  • Compose sample runs & works
  • Tutorial starter kit
  • Example starter kits work
  • UI Changes correct (before & after images)
  • Bugs validated (bugfixes)
  • New feature tested and works
  • Release notes and docs clearly describe changes
  • All code we touched has new or updated KDocs
  • Check the SDK Size Comparison table in the CI logs

Made with Cursor

Summary by CodeRabbit

  • Bug Fixes
    • Fixed R8/minified release build failures by reorganizing preview utilities.
    • Fixed livestream countdown UI crashes caused by missing datetime library in release builds.

…fix R8 builds

Compose-generated ComposableSingletons classes referenced the compileOnly
stream-video-android-previewdata module (StreamPreviewDataUtils, previewCall,
etc.) from production code, breaking consumers' minified (R8) release builds
with "Missing class" errors.

- Move all @Preview composables from src/main into a new debug-only source set
  (one <Name>Preview.kt per file), so preview-data is never referenced from the
  release artifact.
- Change previewdata dependency from compileOnly to debugImplementation.
- Declare kotlinx-datetime explicitly (used by the livestream countdown UI) so
  it no longer leaks in transitively, fixing the related kotlinx.datetime R8
  missing-class errors.

Fixes #1448

Co-authored-by: Cursor <cursoragent@cursor.com>
@PratimMallick PratimMallick requested a review from a team as a code owner June 19, 2026 08:33
@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

This PR moves Compose preview code from main to debug sources, adds an explicit kotlinx-datetime dependency in the UI Compose module, updates generated API output, and records both release-build fixes in the changelog.

Changes

Compose preview source-set split

Layer / File(s) Summary
Build and published artifact wiring
gradle/libs.versions.toml, stream-video-android-ui-compose/build.gradle.kts, CHANGELOG.md
Adds the shared kotlinx-datetime version and library alias, adds implementation(libs.kotlinx.datetime), changes preview-data usage to debugImplementation, and documents both release-build fixes.
Preview extraction for UI components
stream-video-android-ui-compose/src/main/.../audio/*, .../avatar/*, .../background/*, .../base/*, .../call/*, .../call/controls/*, .../call/lobby/*, .../call/pinning/*, src/debug/...
Removes in-file @Preview composables from main UI component sources and recreates them as debug-only preview files for the same components.
Preview extraction for renderers, ringing, livestream, participants, and video
stream-video-android-ui-compose/src/main/.../renderer/*, .../ringing/*, .../indicator/*, .../livestream/*, .../participants/*, .../video/*, src/debug/...
Moves preview implementations for renderer, ringing, indicator, livestream, participant, and video components into debug sources, leaving runtime composables in main sources.
Generated API surface refresh
stream-video-android-ui-compose/api/stream-video-android-ui-compose.api, .../CallAppBar.kt, .../ParticipantActions.kt
Regenerates the Compose API artifact to remove preview-related singleton entries and preview functions, and reflects the internal visibility changes for helper composables used by new debug preview files.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • GetStream/stream-video-android#1683: Updates ParticipantVideo.kt and pinned-participant wiring, which overlaps with files whose generated Compose API surface changes in this PR.

Suggested labels

pr:bug

Suggested reviewers

  • aleksandar-apostolov

Poem

🐇 I tucked the previews out of sight,
In debug burrows, warm and light.
The release path now hops more clean,
With datetime packed in, neat and keen.
Carrot confetti for this tidy spring!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR fully addresses #1448 by implementing the recommended solution: moving @Preview composables to debug-only source sets, changing previewdata dependency scope, and adding explicit kotlinx-datetime dependency.
Out of Scope Changes check ✅ Passed All changes are directly scoped to resolving #1448: preview file relocations, dependency adjustments, visibility changes for referenced composables, and API surface updates. No unrelated modifications detected.
Title check ✅ Passed Title clearly describes the main change: moving @Preview composables to a debug source set to fix R8 build failures. It is concise, specific, and accurately reflects the primary intent of the changeset.
Description check ✅ Passed The PR description comprehensively covers all required sections: goal (links to issue #1448), detailed implementation with technical rationale, testing validation with specific test results, and contributor checklist with relevant items checked.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/r8-previewdata-missing-classes

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 and usage tips.

@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

Caution

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

⚠️ Outside diff range comments (1)
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideorendererPreview.kt (1)

1-91: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Rename file to follow PascalCase convention.

The filename uses lowercase 'r' in "Videorenderer" but should be "VideoRenderer" to match PascalCase naming conventions. The file should be renamed from SpotlightVideorendererPreview.kt to SpotlightVideoRendererPreview.kt for consistency with the component being previewed (SpotlightVideoRenderer) and other preview files in the codebase.

🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideorendererPreview.kt`
around lines 1 - 91, The filename SpotlightVideorendererPreview.kt uses
incorrect casing with a lowercase 'r' in "Videorenderer" which violates
PascalCase naming conventions. Rename the file from
SpotlightVideorendererPreview.kt to SpotlightVideoRendererPreview.kt to properly
match the PascalCase convention and align with the SpotlightVideoRenderer
component being previewed. This change is only to the filename itself and
requires no modifications to the file contents.

Source: Coding guidelines

🧹 Nitpick comments (9)
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/SettingsActionPreview.kt (1)

27-27: 💤 Low value

Consider marking debug preview as private.

Debug-only preview functions typically use private visibility since they're not part of the module's public API surface.

♻️ Suggested change
-public fun ToggleSettingsActionPreview() {
+private fun ToggleSettingsActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/SettingsActionPreview.kt`
at line 27, The ToggleSettingsActionPreview function is marked as public
visibility, but since it is a debug-only preview function and not part of the
module's public API surface, it should be marked as private. Change the
visibility modifier from public to private in the function declaration of
ToggleSettingsActionPreview.
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ClosedCaptionsToggleActionPreview.kt (1)

27-27: 💤 Low value

Consider marking debug preview as private.

Debug-only preview functions typically use private visibility since they're not part of the module's public API surface.

♻️ Suggested change
-public fun ClosedCaptionsToggleActionPreview() {
+private fun ClosedCaptionsToggleActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ClosedCaptionsToggleActionPreview.kt`
at line 27, The function ClosedCaptionsToggleActionPreview is currently marked
as public, but since it is a debug-only preview function that is not part of the
public API surface, change its visibility modifier from public to private to
properly reflect its internal-only scope.
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleMicrophoneActionPreview.kt (1)

27-27: 💤 Low value

Consider marking debug preview as private.

Debug-only preview functions typically use private visibility since they're not part of the module's public API surface.

♻️ Suggested change
-public fun ToggleMicrophoneActionPreview() {
+private fun ToggleMicrophoneActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleMicrophoneActionPreview.kt`
at line 27, The ToggleMicrophoneActionPreview function is currently declared
with public visibility, but since this is a debug-only preview function, it
should not be exposed as part of the module's public API. Change the visibility
modifier of the ToggleMicrophoneActionPreview function from public to private to
restrict its scope to internal use only.
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleHifiAudioActionPreview.kt (1)

27-27: 💤 Low value

Consider marking debug preview as private.

Debug-only preview functions typically use private visibility since they're not part of the module's public API surface.

♻️ Suggested change
-public fun ToggleHifiAudioActionPreview() {
+private fun ToggleHifiAudioActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleHifiAudioActionPreview.kt`
at line 27, The ToggleHifiAudioActionPreview function is marked as public, but
debug-only preview functions should not be part of the public API surface.
Change the visibility modifier of the ToggleHifiAudioActionPreview function from
public to private to indicate that it is only for internal debug/preview
purposes and should not be exposed as part of the module's public API.
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallActionPreview.kt (1)

26-26: 💤 Low value

Consider marking debug preview as private.

Debug-only preview functions typically use private visibility since they're not part of the module's public API surface.

♻️ Additional change
-public fun LeaveCallActionPreview() {
+private fun LeaveCallActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallActionPreview.kt`
at line 26, The function LeaveCalLActionPreview() is marked with public
visibility, but as a debug-only preview function, it should not be part of the
module's public API surface. Change the visibility modifier from public to
private on the LeaveCalLActionPreview() function definition to restrict its
scope to internal use only.
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleCameraActionPreview.kt (1)

27-27: 💤 Low value

Consider marking debug preview as private.

Debug-only preview functions typically use private visibility since they're not part of the module's public API surface.

♻️ Suggested change
-public fun ToggleCameraActionPreview() {
+private fun ToggleCameraActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleCameraActionPreview.kt`
at line 27, The ToggleCameraActionPreview function is marked as public but
should be private since it is a debug-only preview function and should not be
exposed as part of the module's public API. Change the visibility modifier of
ToggleCameraActionPreview from public to private to restrict its visibility to
the debug module only.
stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleSpeakerphoneActionPreview.kt (1)

25-27: ⚡ Quick win

Prefer private visibility for preview functions.

Preview composables are consumed only by IDE tooling and do not need public visibility. Other preview files in this PR consistently use private.

♻️ Suggested visibility change
 `@Preview`
 `@Composable`
-public fun ToggleSpeakerphoneActionPreview() {
+private fun ToggleSpeakerphoneActionPreview() {

As per coding guidelines, prefer explicit visibility modifiers and limit unnecessary exposure.

🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleSpeakerphoneActionPreview.kt`
around lines 25 - 27, Change the visibility modifier of the
ToggleSpeakerphoneActionPreview function from public to private. Preview
composables are only consumed by IDE tooling and do not require public
visibility. Replace the public keyword with private to align with the visibility
modifiers used consistently in other preview files within this PR and follow the
coding guidelines for explicit visibility modifiers with appropriate exposure
levels.

Source: Coding guidelines

stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/pinning/ParticipantActions.kt (1)

156-164: Visibility widened to internal for debug preview access.

The visibility change from private to internal allows debug preview files to call this composable. While this is necessary for the preview relocation approach, it exposes the function throughout the module. Consider whether the preview could use the public ParticipantActions wrapper instead, or document why direct access to the stateless variant is required.

As per coding guidelines, limit internal leakage across modules.

🤖 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
`@stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/pinning/ParticipantActions.kt`
around lines 156 - 164, The function ParticipantActionsWithoutState has been
changed from private to internal visibility to enable debug preview access, but
this unnecessarily exposes the function throughout the module. Either revert the
visibility of ParticipantActionsWithoutState back to private and use the public
ParticipantActions wrapper instead in preview files, or if direct access to the
stateless variant is truly required, add clear documentation explaining why the
preview cannot use the public wrapper and why this internal exposure is
necessary.

Source: Coding guidelines

stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareVideoRendererPreview.kt (1)

30-40: 💤 Low value

Reorder initialization for consistency.

The StreamPreviewDataUtils.initializeStreamVideo call is placed inside the VideoTheme composable, while all other preview files initialize before the VideoTheme wrapper. For consistency and clarity, consider moving the initialization outside.

♻️ Suggested reordering
 `@Preview`
 `@Composable`
 private fun ScreenShareVideoRendererPreview() {
+    StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
     VideoTheme {
-        StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
         ScreenShareVideoRenderer(
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareVideoRendererPreview.kt`
around lines 30 - 40, In the ScreenShareVideoRendererPreview function, the
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current) call is
currently placed inside the VideoTheme composable block. Move this
initialization call outside and before the VideoTheme wrapper to match the
pattern used in other preview files for consistency and clarity.
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/CallAppBarPreview.kt`:
- Line 31: Remove the unnecessary ExperimentalTime annotation and its import
since Kotlin 1.9.25 has stabilized the Duration API. Delete the import statement
for kotlin.time.ExperimentalTime and remove the `@ExperimentalTime` annotation
that is applied to the code (likely on a composable function or property around
line 35 in CallAppBarPreview.kt).

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/FlipCameraActionPreview.kt`:
- Line 25: The preview function FlipActionPreview should be renamed to
FlipCameraActionPreview to match the file name FlipCameraActionPreview.kt and
the component FlipCameraAction that it previews. This ensures consistent naming
conventions across preview files and improves code discoverability.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallActionPreview.kt`:
- Line 26: The function name LeaveCalLActionPreview contains a typo with an
incorrect uppercase L in "CalL". Rename this function to LeaveCallActionPreview
to match the file name and maintain consistent naming conventions. This typo
appears in the function declaration and should be corrected wherever this
function is referenced or exported.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/FloatingParticipantVideoPreview.kt`:
- Around line 36-46: The screenWidthDp and screenHeightDp values are in
density-independent pixels (DP), but the parentBounds parameter in the
FloatingParticipantVideo function expects pixel dimensions. To fix this, access
the LocalDensity composable and use its density value to convert the DP
measurements to actual pixels before creating the IntSize object. Multiply each
DP dimension by the density.density value to get the correct pixel dimensions
for the parentBounds parameter.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitScreenSharingVideoRendererPreview.kt`:
- Around line 52-64: The PortraitScreenSharingMyContentPreview function is
missing the StreamPreviewDataUtils initialization call that is present in the
first preview function. Add a call to
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current) at the
beginning of the PortraitScreenSharingMyContentPreview() function, before the
VideoTheme block, to ensure preview data objects render correctly and match the
initialization pattern used in the other preview function.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/video/VideoRendererPreview.kt`:
- Line 40: The org.webrtc.VideoTrack constructor on lines 40 and 57 in
VideoRendererPreview.kt is being passed an Int literal (123) when it expects a
Long type for the native handle. Replace both occurrences of
org.webrtc.VideoTrack(123) with org.webrtc.VideoTrack(1000L) to match the
correct type and align with the pattern used in CallLobbyPreview.kt and
CallLobby.kt.

---

Outside diff comments:
In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideorendererPreview.kt`:
- Around line 1-91: The filename SpotlightVideorendererPreview.kt uses incorrect
casing with a lowercase 'r' in "Videorenderer" which violates PascalCase naming
conventions. Rename the file from SpotlightVideorendererPreview.kt to
SpotlightVideoRendererPreview.kt to properly match the PascalCase convention and
align with the SpotlightVideoRenderer component being previewed. This change is
only to the filename itself and requires no modifications to the file contents.

---

Nitpick comments:
In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ClosedCaptionsToggleActionPreview.kt`:
- Line 27: The function ClosedCaptionsToggleActionPreview is currently marked as
public, but since it is a debug-only preview function that is not part of the
public API surface, change its visibility modifier from public to private to
properly reflect its internal-only scope.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallActionPreview.kt`:
- Line 26: The function LeaveCalLActionPreview() is marked with public
visibility, but as a debug-only preview function, it should not be part of the
module's public API surface. Change the visibility modifier from public to
private on the LeaveCalLActionPreview() function definition to restrict its
scope to internal use only.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/SettingsActionPreview.kt`:
- Line 27: The ToggleSettingsActionPreview function is marked as public
visibility, but since it is a debug-only preview function and not part of the
module's public API surface, it should be marked as private. Change the
visibility modifier from public to private in the function declaration of
ToggleSettingsActionPreview.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleCameraActionPreview.kt`:
- Line 27: The ToggleCameraActionPreview function is marked as public but should
be private since it is a debug-only preview function and should not be exposed
as part of the module's public API. Change the visibility modifier of
ToggleCameraActionPreview from public to private to restrict its visibility to
the debug module only.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleHifiAudioActionPreview.kt`:
- Line 27: The ToggleHifiAudioActionPreview function is marked as public, but
debug-only preview functions should not be part of the public API surface.
Change the visibility modifier of the ToggleHifiAudioActionPreview function from
public to private to indicate that it is only for internal debug/preview
purposes and should not be exposed as part of the module's public API.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleMicrophoneActionPreview.kt`:
- Line 27: The ToggleMicrophoneActionPreview function is currently declared with
public visibility, but since this is a debug-only preview function, it should
not be exposed as part of the module's public API. Change the visibility
modifier of the ToggleMicrophoneActionPreview function from public to private to
restrict its scope to internal use only.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleSpeakerphoneActionPreview.kt`:
- Around line 25-27: Change the visibility modifier of the
ToggleSpeakerphoneActionPreview function from public to private. Preview
composables are only consumed by IDE tooling and do not require public
visibility. Replace the public keyword with private to align with the visibility
modifiers used consistently in other preview files within this PR and follow the
coding guidelines for explicit visibility modifiers with appropriate exposure
levels.

In
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareVideoRendererPreview.kt`:
- Around line 30-40: In the ScreenShareVideoRendererPreview function, the
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current) call is
currently placed inside the VideoTheme composable block. Move this
initialization call outside and before the VideoTheme wrapper to match the
pattern used in other preview files for consistency and clarity.

In
`@stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/pinning/ParticipantActions.kt`:
- Around line 156-164: The function ParticipantActionsWithoutState has been
changed from private to internal visibility to enable debug preview access, but
this unnecessarily exposes the function throughout the module. Either revert the
visibility of ParticipantActionsWithoutState back to private and use the public
ParticipantActions wrapper instead in preview files, or if direct access to the
stateless variant is truly required, add clear documentation explaining why the
preview cannot use the public wrapper and why this internal exposure is
necessary.
🪄 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: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 18520019-ee22-414e-b387-446015a6d092

📥 Commits

Reviewing files that changed from the base of the PR and between c5bcc10 and 5b7563c.

📒 Files selected for processing (148)
  • CHANGELOG.md
  • gradle/libs.versions.toml
  • stream-video-android-ui-compose/api/stream-video-android-ui-compose.api
  • stream-video-android-ui-compose/build.gradle.kts
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioAppBarPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioControlActionsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioParticipantsGridPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioRoomContentPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/audio/ParticipantAudioPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/avatar/AvatarPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/avatar/InitialsAvatarPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/avatar/UserAvatarBackgroundPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/avatar/UserAvatarPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/background/CallBackgroundPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/base/BadgePreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/base/ContainerPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/base/DialogsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/base/InputFieldsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/base/StreamButtonPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/CallAppBarPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/AudioCallContentPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/CallContentPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/internal/InviteUsersDialogPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/ControlActionsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/AcceptCallActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/CancelCallActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ChatDialogActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ClosedCaptionsToggleActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/DeclineCallActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/FlipCameraActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/SettingsActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleCameraActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleHifiAudioActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleMicrophoneActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleSpeakerphoneActionPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/lobby/CallLobbyPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/moderation/ModerationWarningUiContainerPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/pinning/ParticipantActionsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/FloatingParticipantVideoPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantVideoPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantsLayoutPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantsRegularGridPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeScreenSharingVideoRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeVideoRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LazyColumnVideoRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LazyRowVideoRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitScreenSharingVideoRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitVideoRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareTooltipPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareVideoRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideorendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/RingingCallContentPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallContentPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallControlsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallDetailsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallContentPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallControlsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallDetailsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/indicator/AudioVolumeIndicatorPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/indicator/GenericIndicatorPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/indicator/MicrophoneIndicatorPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/indicator/NetworkQualityIndicatorPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/indicator/SoundIndicatorPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamBackStagePreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamPlayerOverlayPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamPlayerPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamRendererPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/participants/CallParticipantsInfoMenuPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/participants/ParticipantAvatarsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantListAppBarPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantsInfoActionsPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantsListPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/InviteUserListPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/ParticipantInformationPreview.kt
  • stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/video/VideoRendererPreview.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioAppBar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioControlActions.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioParticipantsGrid.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioRoomContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/ParticipantAudio.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/Avatar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/InitialsAvatar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/UserAvatar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/UserAvatarBackground.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/background/CallBackground.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/Badge.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/Container.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/Dialogs.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/InputFields.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/StreamButton.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/CallAppBar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/AudioCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/CallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/internal/InviteUsersDialog.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/ControlActions.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/AcceptCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/CancelCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ChatDialogAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ClosedCaptionsToggleAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/DeclineCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/FlipCameraAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/SettingsAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleCameraAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleHifiAudioAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleMicrophoneAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleSpeakerphoneAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/lobby/CallLobby.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/moderation/ModerationWarningUiContainer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/pinning/ParticipantActions.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/FloatingParticipantVideo.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantVideo.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantsLayout.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantsRegularGrid.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeScreenSharingVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LazyColumnVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LazyRowVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitScreenSharingVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareTooltip.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideorenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/RingingCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallControls.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallDetails.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallControls.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallDetails.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/AudioVolumeIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/GenericIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/MicrophoneIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/NetworkQualityIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/SoundIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamBackStage.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamPlayer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamPlayerOverlay.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/CallParticipantsInfoMenu.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/ParticipantAvatars.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantListAppBar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantsInfoActions.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantsList.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/InviteUserList.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/ParticipantInformation.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/video/VideoRenderer.kt
💤 Files with no reviewable changes (70)
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/GenericIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallDetails.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/ControlActions.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/Badge.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/background/CallBackground.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallDetails.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleCameraAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioParticipantsGrid.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/AcceptCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantListAppBar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/ParticipantInformation.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleHifiAudioAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/SettingsAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/ParticipantAudio.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareTooltip.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/FlipCameraAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ClosedCaptionsToggleAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/CallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/SoundIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantsLayout.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/internal/InviteUsersDialog.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantsInfoActions.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioAppBar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallControls.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/ParticipantAvatars.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/SpotlightVideorenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/moderation/ModerationWarningUiContainer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantsRegularGrid.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/InputFields.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamBackStage.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ChatDialogAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/Avatar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleMicrophoneAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/NetworkQualityIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/Container.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/UserAvatarBackground.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/AudioVolumeIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/outgoingcall/OutgoingCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/DeclineCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioRoomContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/incomingcall/IncomingCallControls.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamPlayerOverlay.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/video/VideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeScreenSharingVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/activecall/AudioCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/livestream/LivestreamPlayer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/UserAvatar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/ParticipantVideo.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LandscapeVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/StreamButton.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/InviteUserList.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitScreenSharingVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/indicator/MicrophoneIndicator.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/internal/CallParticipantsList.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/ScreenShareVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/CancelCallAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LazyRowVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/lobby/CallLobby.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/FloatingParticipantVideo.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/participants/CallParticipantsInfoMenu.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/LazyColumnVideoRenderer.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/ringing/RingingCallContent.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/base/Dialogs.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/audio/AudioControlActions.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/avatar/InitialsAvatar.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/ToggleSpeakerphoneAction.kt
  • stream-video-android-ui-compose/src/main/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitVideoRenderer.kt

import io.getstream.video.android.mock.StreamPreviewDataUtils
import io.getstream.video.android.mock.previewCall
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.ExperimentalTime

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.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check the Kotlin version configured in the project

# Check gradle.properties for kotlin version
rg -n 'kotlin.*version' gradle.properties gradle/libs.versions.toml

# Check if ExperimentalTime is used elsewhere
rg -n '`@ExperimentalTime`|kotlin\.time\.ExperimentalTime' --type kotlin

# Check build.gradle.kts for Kotlin plugin version
rg -n 'kotlin.*plugin.*version' --glob '**/build.gradle.kts'

Repository: GetStream/stream-video-android

Length of output: 3496


🏁 Script executed:

# Find the Kotlin version definition in gradle/libs.versions.toml
rg -n '^\s*kotlin\s*=' gradle/libs.versions.toml

Repository: GetStream/stream-video-android

Length of output: 95


Remove unnecessary @ExperimentalTime annotation.

Kotlin 1.9.25 (the project's target version) stabilized the Duration API and removed the @ExperimentalTime annotation. The import at line 31 and the annotation at line 35 should be 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/CallAppBarPreview.kt`
at line 31, Remove the unnecessary ExperimentalTime annotation and its import
since Kotlin 1.9.25 has stabilized the Duration API. Delete the import statement
for kotlin.time.ExperimentalTime and remove the `@ExperimentalTime` annotation
that is applied to the code (likely on a composable function or property around
line 35 in CallAppBarPreview.kt).


@Preview
@Composable
private fun FlipActionPreview() {

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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Rename preview function to match file name and component.

The function is named FlipActionPreview but the file is FlipCameraActionPreview.kt and it previews FlipCameraAction. Consistent naming improves discoverability and follows the pattern established in other preview files.

🔧 Suggested fix
-private fun FlipActionPreview() {
+private fun FlipCameraActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/FlipCameraActionPreview.kt`
at line 25, The preview function FlipActionPreview should be renamed to
FlipCameraActionPreview to match the file name FlipCameraActionPreview.kt and
the component FlipCameraAction that it previews. This ensures consistent naming
conventions across preview files and improves code discoverability.


@Preview
@Composable
public fun LeaveCalLActionPreview() {

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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix typo in function name.

The function is named LeaveCalLActionPreview with an uppercase L in "CalL". It should be LeaveCallActionPreview to match the component name and file name.

🔧 Suggested fix
-public fun LeaveCalLActionPreview() {
+public fun LeaveCallActionPreview() {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
public fun LeaveCalLActionPreview() {
public fun LeaveCallActionPreview() {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/controls/actions/LeaveCallActionPreview.kt`
at line 26, The function name LeaveCalLActionPreview contains a typo with an
incorrect uppercase L in "CalL". Rename this function to LeaveCallActionPreview
to match the file name and maintain consistent naming conventions. This typo
appears in the function declaration and should be corrected wherever this
function is referenced or exported.

Comment on lines +36 to +46
val configuration = LocalConfiguration.current
val screenWidth = configuration.screenWidthDp
val screenHeight = configuration.screenHeightDp

VideoTheme {
Box {
FloatingParticipantVideo(
call = previewCall,
modifier = Modifier.fillMaxSize(),
participant = previewParticipant,
parentBounds = IntSize(screenWidth, screenHeight),

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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Potential unit mismatch: DP values used for pixel-based IntSize.

screenWidthDp and screenHeightDp return density-independent pixel (DP) values, but IntSize for parentBounds typically expects actual pixel dimensions. This may cause incorrect sizing in the preview.

Consider converting DP to pixels using density, or verify that parentBounds accepts DP values.

🔧 Potential fix to convert DP to pixels
     StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
     val configuration = LocalConfiguration.current
+    val density = LocalDensity.current
     val screenWidth = configuration.screenWidthDp
     val screenHeight = configuration.screenHeightDp

     VideoTheme {
         Box {
             FloatingParticipantVideo(
                 call = previewCall,
                 modifier = Modifier.fillMaxSize(),
                 participant = previewParticipant,
-                parentBounds = IntSize(screenWidth, screenHeight),
+                parentBounds = with(density) { IntSize(screenWidth.dp.roundToPx(), screenHeight.dp.roundToPx()) },
             )
         }
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
val configuration = LocalConfiguration.current
val screenWidth = configuration.screenWidthDp
val screenHeight = configuration.screenHeightDp
VideoTheme {
Box {
FloatingParticipantVideo(
call = previewCall,
modifier = Modifier.fillMaxSize(),
participant = previewParticipant,
parentBounds = IntSize(screenWidth, screenHeight),
val configuration = LocalConfiguration.current
val density = LocalDensity.current
val screenWidth = configuration.screenWidthDp
val screenHeight = configuration.screenHeightDp
VideoTheme {
Box {
FloatingParticipantVideo(
call = previewCall,
modifier = Modifier.fillMaxSize(),
participant = previewParticipant,
parentBounds = with(density) { IntSize(screenWidth.dp.roundToPx(), screenHeight.dp.roundToPx()) },
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/FloatingParticipantVideoPreview.kt`
around lines 36 - 46, The screenWidthDp and screenHeightDp values are in
density-independent pixels (DP), but the parentBounds parameter in the
FloatingParticipantVideo function expects pixel dimensions. To fix this, access
the LocalDensity composable and use its density value to convert the DP
measurements to actual pixels before creating the IntSize object. Multiply each
DP dimension by the density.density value to get the correct pixel dimensions
for the parentBounds parameter.

Comment on lines +52 to +64
private fun PortraitScreenSharingMyContentPreview() {
VideoTheme {
PortraitScreenSharingVideoRenderer(
call = previewCall,
session = ScreenSharingSession(
participant = previewParticipantsList[0],
),
participants = previewParticipantsList,
dominantSpeaker = previewParticipantsList[0],
modifier = Modifier.fillMaxSize(),
)
}
}

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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add missing StreamPreviewDataUtils initialization.

The second preview function is missing the StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current) call that appears in the first preview. Without this initialization, the preview data objects may not render correctly.

🔧 Proposed fix
 `@Preview`
 `@Preview`(uiMode = Configuration.UI_MODE_NIGHT_YES)
 `@Composable`
 private fun PortraitScreenSharingMyContentPreview() {
+    StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current)
     VideoTheme {
🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/call/renderer/internal/PortraitScreenSharingVideoRendererPreview.kt`
around lines 52 - 64, The PortraitScreenSharingMyContentPreview function is
missing the StreamPreviewDataUtils initialization call that is present in the
first preview function. Add a call to
StreamPreviewDataUtils.initializeStreamVideo(LocalContext.current) at the
beginning of the PortraitScreenSharingMyContentPreview() function, before the
VideoTheme block, to ensure preview data objects render correctly and match the
initialization pattern used in the other preview function.

VideoRenderer(
call = previewCall,
video = ParticipantState.Video(
track = VideoTrack("", org.webrtc.VideoTrack(123)),

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.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check how VideoTrack is constructed elsewhere in the codebase

# Search for other VideoTrack instantiations
rg -n 'VideoTrack\(' --type kotlin -A2 -B2

# Check WebRTC library version
rg -n 'org\.webrtc|webrtc' gradle/libs.versions.toml build.gradle.kts

Repository: GetStream/stream-video-android

Length of output: 26904


🏁 Script executed:

# Search for WebRTC VideoTrack usage patterns in the codebase
rg -n 'org\.webrtc\.VideoTrack\s*\(' --type kotlin -B1 -A1 | head -40

# Check gradle dependency for WebRTC version
rg -n 'stream.*webrtc|webrtc.*=' gradle/libs.versions.toml build.gradle.kts

Repository: GetStream/stream-video-android

Length of output: 2510


Use 1000L instead of 123 for org.webrtc.VideoTrack constructor arguments.

Lines 40 and 57 pass an Int literal to org.webrtc.VideoTrack(), but the constructor expects a native handle of type Long. This is inconsistent with CallLobbyPreview.kt and CallLobby.kt, which both correctly use 1000L. Change both occurrences to org.webrtc.VideoTrack(1000L) to match the established pattern and provide the correct type.

🤖 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
`@stream-video-android-ui-compose/src/debug/kotlin/io/getstream/video/android/compose/ui/components/video/VideoRendererPreview.kt`
at line 40, The org.webrtc.VideoTrack constructor on lines 40 and 57 in
VideoRendererPreview.kt is being passed an Int literal (123) when it expects a
Long type for the native handle. Replace both occurrences of
org.webrtc.VideoTrack(123) with org.webrtc.VideoTrack(1000L) to match the
correct type and align with the pattern used in CallLobbyPreview.kt and
CallLobby.kt.

@aleksandar-apostolov aleksandar-apostolov changed the title fix(compose): move @Preview composables out of published artifact to fix R8 builds Move @Preview composables out of published artifact to fix R8 builds Jun 19, 2026

@aleksandar-apostolov aleksandar-apostolov 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.

LGTM

…nto fix/r8-previewdata-missing-classes

# Conflicts:
#	stream-video-android-ui-compose/api/stream-video-android-ui-compose.api
@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

PR checklist ✅

All required conditions are satisfied:

  • Title length is OK (or ignored by label).
  • At least one pr: label exists.
  • Sections ### Goal, ### Implementation, and ### Testing are filled, or the PR is bot-authored.
  • An issue is linked (Linear ticket or GitHub issue), or the PR is bot-authored.

🎉 Great job! This PR is ready for review.

@PratimMallick PratimMallick added the pr:bug Fixes a bug label Jun 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

SDK Size Comparison 📏

SDK Before After Difference Status
stream-video-android-core 12.27 MB 12.27 MB 0.00 MB 🟢
stream-video-android-ui-xml 5.68 MB 5.68 MB 0.00 MB 🟢
stream-video-android-ui-compose 6.28 MB 6.20 MB -0.08 MB 🚀

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr:bug Fixes a bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

R8 build failure with StreamPreviewDataUtils classes referenced from ComposableSingletons

2 participants