Real examples of how mobile apps update UI without releasing new Play Store builds.
This repo shows practical techniques to update UI, text, features, icons, and screens without publishing a new Android release.
It supports the blog:
👉 How Mobile Apps Update UI Without Play Store Releases
Dynamic UI Blog
Each screen inside the app shows a different real-world technique.
| Method | Description |
|---|---|
| Server-Driven UI (SDUI) | Render UI dynamically from JSON config |
| Firebase Remote Config | Control UI, text, and feature flags from the cloud |
| Dynamic App Icons | Switch Android app icons without Play Store updates |
| WebView Dynamic Content | Load and communicate with web content inside the app |
| Hybrid Native + Web | Mix native UI with real-time web-powered UI |
src/
navigation/ # App navigation setup
sdui/ # Server-Driven UI example
remoteConfig/ # Firebase Remote Config example
dynamicIcon/ # Dynamic Android app icon switching
webview/ # WebView + Hybrid examplesgit clone https://github.com/azimmemon2002/react-native-dynamic-ui-examples.git
cd react-native-dynamic-ui-examplesnpm installnpm startnpm run androidIf you want to test Remote Config:
- Create a Firebase project
- Add an Android app with your package name or use these
com.dynamicuiexamples - Download
google-services.json - Place it in:
android/app/google-services.json- Enable Remote Config in Firebase Console
- Create parameters like:
| Key | Example Value |
|---|---|
| banner_message | Hello from Firebase 👋 |
| enable_new_checkout | true |
| primary_color | #FF5722 |
- After creating or changing values in Firebase Console, you must click
Publish changes. - Restart the Android app after publishing changes.
- The app will only fetch new values when it restarts (or after fetch interval expires).
If you don’t publish or restart:
- The app will continue using cached or default values.
Note: This demo works with fallback values even if Firebase is not connected.
This example shows how to switch Android launcher icons without a Play Store update. It uses:
activity-aliasentries inAndroidManifest.xml- A native Kotlin module (
IconSwitcherModule.kt)
Included icons: Default, Winter, Summer
These can be triggered from the Dynamic Icon screen.
Includes:
- Loading dynamic remote web content
- Bi-directional communication between WebView and React Native
- JavaScript injection inside the WebView