Polish sample apps: new icon, splash screen, bottom bar#6422
Polish sample apps: new icon, splash screen, bottom bar#6422
Conversation
Replace legacy launcher PNGs with WebPs across all density buckets and refresh the adaptive-icon foreground / Play Store icon to match the latest brand artwork. The adaptive background stays solid black to align with the Figma spec. Drop the obsolete VectorDrawable foreground that's no longer referenced now that the foreground is a WebP at every density. The monochrome layer is intentionally left out for now; can be added later when a single-color silhouette asset is produced.
PR checklist ✅All required conditions are satisfied:
🎉 Great job! This PR is ready for review. |
SDK Size Comparison 📏
|
42c08e2 to
ec2dd2c
Compare
|
@CodeRabbit review |
✅ Actions performedReview triggered.
|
WalkthroughThis PR integrates AndroidX core splash screen support into two sample applications, removes the mentions feature from the compose-sample bottom navigation bar, and updates the launcher icon assets to use the mipmap namespace with a black background color instead of blue. ChangesSplash Screen Integration & Bottom Navigation Refactoring
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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 `@gradle/libs.versions.toml`:
- Line 16: Update the core splashscreen dependency entry by changing the version
string for the key androidxCoreSplashScreen in gradle/libs.versions.toml from
"1.0.1" to "1.2.0" so the project uses androidx.core:core-splashscreen:1.2.0;
ensure no other references to the old version remain and run a build to verify
compatibility.
🪄 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: c36f9a41-013b-4dab-a8c0-134ed16646d0
⛔ Files ignored due to path filters (22)
stream-chat-android-compose-sample/src/main/ic_launcher-playstore.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-hdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-hdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-mdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-mdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-xhdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-xhdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-xxhdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-xxxhdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-compose-sample/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/ic_launcher-playstore.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-hdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-hdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-mdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-mdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-xhdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-xhdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-xxhdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-xxxhdpi/ic_launcher.pngis excluded by!**/*.pngstream-chat-android-ui-components-sample/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngis excluded by!**/*.png
📒 Files selected for processing (52)
gradle/libs.versions.tomlstream-chat-android-compose-sample/build.gradle.ktsstream-chat-android-compose-sample/src/demo/java/io/getstream/chat/android/compose/sample/ui/StartupActivity.ktstream-chat-android-compose-sample/src/e2e/java/io/getstream/chat/android/compose/sample/ui/StartupActivity.ktstream-chat-android-compose-sample/src/main/AndroidManifest.xmlstream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/list/ChannelsActivity.ktstream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/chats/ChatsActivity.ktstream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/ui/component/AppBottomBar.ktstream-chat-android-compose-sample/src/main/res/drawable/ic_launcher_foreground.xmlstream-chat-android-compose-sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xmlstream-chat-android-compose-sample/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xmlstream-chat-android-compose-sample/src/main/res/mipmap-hdpi/ic_launcher.webpstream-chat-android-compose-sample/src/main/res/mipmap-hdpi/ic_launcher_foreground.webpstream-chat-android-compose-sample/src/main/res/mipmap-hdpi/ic_launcher_round.webpstream-chat-android-compose-sample/src/main/res/mipmap-mdpi/ic_launcher.webpstream-chat-android-compose-sample/src/main/res/mipmap-mdpi/ic_launcher_foreground.webpstream-chat-android-compose-sample/src/main/res/mipmap-mdpi/ic_launcher_round.webpstream-chat-android-compose-sample/src/main/res/mipmap-xhdpi/ic_launcher.webpstream-chat-android-compose-sample/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webpstream-chat-android-compose-sample/src/main/res/mipmap-xhdpi/ic_launcher_round.webpstream-chat-android-compose-sample/src/main/res/mipmap-xxhdpi/ic_launcher.webpstream-chat-android-compose-sample/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webpstream-chat-android-compose-sample/src/main/res/mipmap-xxhdpi/ic_launcher_round.webpstream-chat-android-compose-sample/src/main/res/mipmap-xxxhdpi/ic_launcher.webpstream-chat-android-compose-sample/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webpstream-chat-android-compose-sample/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webpstream-chat-android-compose-sample/src/main/res/values/ic_launcher_background.xmlstream-chat-android-compose-sample/src/main/res/values/strings.xmlstream-chat-android-compose-sample/src/main/res/values/themes.xmlstream-chat-android-ui-components-sample/build.gradle.ktsstream-chat-android-ui-components-sample/src/main/AndroidManifest.xmlstream-chat-android-ui-components-sample/src/main/kotlin/io/getstream/chat/ui/sample/feature/HostActivity.ktstream-chat-android-ui-components-sample/src/main/res/drawable/ic_launcher_foreground.xmlstream-chat-android-ui-components-sample/src/main/res/mipmap-anydpi-v26/ic_launcher.xmlstream-chat-android-ui-components-sample/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xmlstream-chat-android-ui-components-sample/src/main/res/mipmap-hdpi/ic_launcher.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-hdpi/ic_launcher_foreground.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-hdpi/ic_launcher_round.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-mdpi/ic_launcher.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-mdpi/ic_launcher_foreground.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-mdpi/ic_launcher_round.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xhdpi/ic_launcher.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xhdpi/ic_launcher_round.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xxhdpi/ic_launcher.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xxhdpi/ic_launcher_round.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xxxhdpi/ic_launcher.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webpstream-chat-android-ui-components-sample/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webpstream-chat-android-ui-components-sample/src/main/res/values/ic_launcher_background.xmlstream-chat-android-ui-components-sample/src/main/res/values/themes.xml
💤 Files with no reviewable changes (4)
- stream-chat-android-ui-components-sample/src/main/res/drawable/ic_launcher_foreground.xml
- stream-chat-android-compose-sample/src/main/res/values/strings.xml
- stream-chat-android-compose-sample/src/main/res/drawable/ic_launcher_foreground.xml
- stream-chat-android-compose-sample/src/main/java/io/getstream/chat/android/compose/sample/feature/channel/list/ChannelsActivity.kt
Add a dedicated Theme.App.Splash extending Theme.SplashScreen so the new brand splash works on every supported API level (minSdk = 21) instead of only API 31+. Background uses ic_launcher_background and the animated icon points at the launcher mipmap; postSplashScreenTheme hands control back to AppTheme once the splash dismisses. Both demo and e2e StartupActivity flavors call installSplashScreen() before super.onCreate(). This mirrors the pattern the team plans to use for the upcoming Lottie splash animation: only the windowSplashScreenAnimatedIcon needs to swap, the rest of the wiring stays.
Replace legacy launcher PNGs with WebPs across all density buckets and refresh the adaptive-icon foreground / Play Store icon to match the latest brand artwork (V + Android-platform badge). The adaptive background stays solid black to align with the Figma spec. Drop the obsolete VectorDrawable foreground that's no longer referenced now that the foreground is a WebP at every density. The monochrome layer is intentionally left out for now; can be added later when a single-color silhouette asset is produced.
Add a dedicated Theme.App.Splash extending Theme.SplashScreen so the new brand splash works on every supported API level (minSdk = 21) instead of only API 31+. Background uses ic_launcher_background and the animated icon points at the launcher mipmap; postSplashScreenTheme hands control back to AppTheme once the splash dismisses. HostActivity calls installSplashScreen() before super.onCreate(). Mirrors the wiring already in place for the Compose sample so both samples share the same splash treatment for the upcoming Lottie animation.
Three changes to AppBottomBar (and consumers): - Add a 1.dp borderCoreSubtle top border above the bottom bar (Notion #1). Bar now has the same divider treatment as the top header. - Switch icon variants on selection (Notion #2). Active tab uses the filled icon variant (e.g. ic_message_bubble_fill, ic_thread_fill); inactive uses the line variant. AppBottomBarOptionTile gains a selectedIcon / unselectedIcon pair instead of a single icon. - Drop the Mentions tab to mirror the SwiftUI demo app's two-tab layout (Chats + Threads). Mentions feature stays available in the SDK; only the sample's bottom-bar entry is removed. ChannelsActivity loses the now-dead MentionsContent / mentionListViewModel and four imports. ChatsActivity's reverse mapping collapses ChatListContentMode.Mentions and .Channels into AppBottomBarOption.CHATS as a graceful fallback. No tab-switch animation — matches SwiftUI's default TabView behaviour and native Android BottomNavigationView, keeping the two SDKs feeling the same.
ec2dd2c to
ffa84f8
Compare
|
|
Warning The icon is being revisited by the design team. |



Goal
Three SDK Testing Feedback items, all in the sample apps:
Implementation
App icon — both Compose and XML samples
@color/ic_launcher_background(solid black, per Figma).ic_launcher-playstore.pngregenerated.drawable/ic_launcher_foreground.xmlVectorDrawable (no longer referenced).Splash screen — both samples
androidx.core:core-splashscreenand a dedicatedTheme.App.SplashextendingTheme.SplashScreen.windowSplashScreenBackground=@color/ic_launcher_background,windowSplashScreenAnimatedIcon=@mipmap/ic_launcher,postSplashScreenTheme=AppTheme.StartupActivity× demo + e2e in the Compose sample,HostActivityin the XML sample) callsinstallSplashScreen()beforesuper.onCreate().Bottom bar — Compose sample
AppBottomBarwraps itsRowin aColumnwith a 1.dpborderCoreSubtleHorizontalDividerabove.AppBottomBarOptionTiletakesselectedIcon+unselectedIconand picks based onisSelected. Chats:ic_message_bubble_fill/ic_message_bubble. Threads:ic_thread_fill/ic_thread.Important
Decisions worth flagging for review
android:windowSplashScreenBackgroundis API 31+. WithminSdk = 21, the AndroidX library is required to deliver a consistent splash across all supported devices. Setup is forward-compatible with future animated splashes (onlywindowSplashScreenAnimatedIconwould change).stream-chat-swiftui/DemoAppSwiftUI/DemoAppSwiftUIApp.swift) renders only Chats + Threads. The Mentions feature itself stays public in the SDK (ChatListContentMode.Mentionsis still exported); only the sample's bottom-bar entry is removed.ChatsActivity's reverse mapping collapsesChatListContentMode.Mentionsand.ChannelsintoAppBottomBarOption.CHATSas a graceful fallback.TabViewswaps tab content instantly, as does Android's nativeBottomNavigationView. AddingCrossfade/AnimatedContentwould diverge from both platforms' baselines.MonochromeLauncherIconas informational; non-blocking. Trivial follow-up once the silhouette is exported.🎨 UI Changes
Screen_recording_20260507_084830.webm
Screen_recording_20260507_090617.webm
Testing
ChannelsActivity).Summary by CodeRabbit
New Features
Style
Refactor
Chores