Releases: oxygen-updater/os-updater
Release list
v7.1.0
Added
- Support for realme devices: https://oxygenupdater.com/article/562/
Do consider donating on Patreon if you benefit from our work.
Changed
- [main] marginally improve startup performance by offloading Google Mobile Ads SDK initialization to a background IO thread (11ebcfd)
In case you missed it, the app is now named OS Updater, because we support not just OnePlus devices, but OPPO (as of v6.6.0) and [realme][article-realme-support] as well! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
v7.0.0
Most importantly, we have rebranded the app to OS Updater.
Fixed
- [device] crash due to
UnsupportedOperationException(3da6015)
Only observed on some Android 7.1 devices, but this change also prevents it from happening on any other version in the future. - [main/update] potential crashes when starting an in-app update (9febb42)
Never seen in practice yet. - [main] potentially fixed
IllegalArgumentExceptionempty backstack crash (cb9eaf7)
Extremely rare crash seen only <10 times. Exact cause is unknown, but some code changes were made that should hopefully avoid this crash now. - [update] potentially fixed rare main thread ANRs when checking for download status (2d10ea6)
Changed
- App name is now OS Updater. See this article for why.
- [device] offload CPU frequency calculation to IO thread (c755ceb)
- [settings/strings] update theme subtitles for Material 3/You (153510c)
The previous subtitles were specific to static themes—based on OnePlus Red—that the app hasn't used since v6, when we added proper dynamic M3 theming.
Miscellaneous
- Updated dependencies and bumped
compileSdk&targetSdkto 37 (Android 17) (45c28c8)AGP 9.1.0 -> 9.1.1 Crashlytics Plugin 3.0.6 -> 3.0.7 Kotlinx Serialization 1.10.0 -> 1.11.0 AndroidX Annotation 1.9.1 -> 1.10.0 AndroidX Navigation3 1.0.1 -> 1.1.0 Firebase BOM 34.11.0 -> 34.12.0 Play Services Ads 25.1.0 -> 25.2.0
- [ci] bump minSdk 23 for instrumentation testing (3570aac)
In case you missed it, the app supports OPPO devices (as of v6.6.0)! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size increased by 13 KB relative to the previous release, v6.8.1.
v6.8.1
Added
- Proper support for predictive back animations via androidx-navigation3 (b07b692)
When using gesture-based back navigation, you will now see a realtime preview of your back actions. - [PullToRefresh] add 'Loading…' text under the refresh indicator when empty (0401d09)
- [docs] add star history section to README.md (9940294)
Removed
- [ads] disable Google's new collapsible banner ad format (dc2c569)
This was introduced in v6.3.1 (released July 7, 2024), and subsequently disabled in v6.3.3 (released Aug 16, 2024), due to poor UX. However, it was re-enabled—perhaps inadvertently—in v6.4.0 (released Sep 6, 2024).
We apologize for that, it should remain disabled now.
Changed
- Minor styling improvements throughout the app
- [buttons] primary actions now use 'filled' styling for emphasis (bf2bf5e)
- [settings] use simplified
SearchBarstyling in the device selection sheet (c14ee27) - [error] justify text and tint icon/title if it's actually an error (b1a5f1d)
- [colors] re-generate static colours for devices on Android 11/R & below (API <= 30) (0eb59cd)
Higher API versions support dynamic Material You color schemes, so those are unaffected.
- [strings] shortened some text used in onboarding/contribution UIs (bff1a62)
Miscellaneous
- Updated dependencies and bumped
minSdkto 23 (Android Marshmallow) (c2920ab)
minSdk23 is required by all Jetpack/AndroidX releases since June 2025. This means that the previous release, v6.8.0, is the last one that supports Android 5/5.1 devices.Gradle 9.3.1 -> 9.4.1 Build Tools 36.0.0 -> 36.1.0 Kotlin 2.2.21 -> 2.3.20 AGP 8.13.2 -> 9.1.0 KSP 2.0.5 -> 2.3.6 Compose 1.9.5 -> 1.10.6 Activity-Compose 1.11.0 -> 1.13.0 Dagger 2.58 -> 2.59.2 Hilt 1.2.0 -> 1.3.0 Coil 3.3.0 -> 3.4.0 Play Billing 8.0.0 -> 8.3.0 Play Services Base 18.7.2 -> 18.10.0 Play Services Ads 23.6.0 -> 25.1.0 UMP 3.2.0 -> 4.0.0 Firebase BOM 33.16.0 -> 34.11.0 AndroidX Browser 1.9.0 -> 1.10.0 AndroidX Core 1.17.0 -> 1.18.0 AndroidX Lifecycle 2.9.4 -> 2.10.0 AndroidX Room 2.7.2 -> 2.8.4 AndroidX Work 2.10.5 -> 2.11.2
- [json] migrate from Moshi to kotlinx-serialization (2c2471d)
Moshi 1 codegen still requires KSP1 (viaksp.useKSP2=false), and Moshi 2 is nowhere near a stable release. KSP2 has been available as a preview since Nov 16, 2023, and was enabled by default on Apr 9, 2025. Continuing to stay on Moshi will delay app releases and offers no meaningful or noticeable benefit in JSON parsing or serialization for our use-cases. kotlinx-serialization will also be inline with Kotlin releases (more often than not). - [build] removed room-specific ksp arguments because both
incrementalandgenerateKotlinare true by default since 2.7.0 (c2920ab) - [build] use
networkSecurityConfigfor disabling HTTPS for local builds (7aed228)
Doesn't affect production/test builds. This is simply a migration away from the deprecatedusesCleartextTraffic=truethat was sometimes used for local testing. - [deps] use bundles to group common libs together (547bf5e)
- [ci] fix incorrect
actions/setup-javaversion bump (65535de)
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size increased by 512 KB relative to the previous release, v6.8.0.
v6.8.0
Most importantly, this release improves support for downloading OxygenOS/ColorOS 16+ updates. The process has been made more seamless & automatic, and the app will do its best to auto-recover from any failures regarding expired download URLs.
If you still encounter issues, please email us at support@oxygenupdater.com with detailed information about your device and the OTA update you're trying to download from our app.
Added
- [settings] add convenience button to clear API & image caches (20fe87a)
- [device] show kernel version if available (under "Software info") (6f79585)
This will also show on the main "Update" screen, if the user's device is already up-to-date. - [device] show screen size and camera megapixel counts if available (under "Hardware info") (a2ec999)
Fixed
- [download] auto-recover expired OxygenOS/ColorOS 16+ dynamic download URL by refreshing them before failure (6b6ae15)
You should no longer see these downloads fail with an obscure error message. The app will automatically handle refreshing the download URL for you. You don't need to manually refresh the app or clear its cache anymore. - [strings] unformatted
HTTP $1d: $2sin download error dialog (2561482)
This download error dialog was supposed to show a detailed HTTP error code & message in place of$1dand$2s(e.g. HTTP 403: Access Denied), which it should now do. - [device] tint fallback image icons for legibility (ea9f34b)
- [device] rare crash:
MissingResourceExceptionunable to construct NumberFormat (728f102)
Changed
- [api] Keep track of device market name, pipeline code, manifest hash to aid in future device/region support (b0fe851)
Miscellaneous
- Updated dependencies (3ab37ec)
Many dependencies have newer versions, but we intentionally held them back because they require a
Gradle 9.0.0 -> 9.3.1 AGP 8.13.0 -> 8.13.2 Kotlin 2.2.10 -> 2.2.21 KSP 2.0.2 -> 2.0.5 Compose 1.9.0 -> 1.9.5 Compose M3 1.3.2 -> 1.4.0 Activity-Compose 1.10.1 -> 1.11.0 Navigation-Compose 2.9.3 -> 2.9.7 Placeholder-Compose 1.0.11 -> 1.0.12 AndroidX Core-Splashscreen 1.0.1 -> 1.2.0 AndroidX Lifecycle 2.9.2 -> 2.9.4 AndroidX Work 2.10.3 -> 2.10.5 Dagger 2.57 -> 2.58 OkHttp 5.1.0 -> 5.3.2 Jacoco 0.8.13 -> 0.8.14
minSdkbump to 23 (Android 6/Marshmallow. For now, our app still has aminSdkof 21 (Android 5/Lollipop), because we want older devices to also benefit from the many improvements in this release. However, the next app update will most likely bumpminSdkto 23 so that we can take advantage of all the improvements that newer dependencies bring with them. - [ci] bump actions to latest stable versions (cb84933)
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size increased by 50 KB relative to the previous release, v6.7.6.
v6.7.6
Fixed
- [update] #275: crash when tapping download for OxygenOS/ColorOS 16+ updates (320746a)
- [icons] regenerate badly-formed
ReleaseAlerticon for announcements (4065cdc)
Changed
- [update]: use Material Symbols icon for
download&download_anim(53436cb)
Miscellaneous
- Updated dependencies (d514b32, f280a27)
AGP 8.13.0 -> 8.14.0 Kotlin 2.2.0 -> 2.2.10 Crashlytics Plugin 3.0.5 -> 3.0.6 Google Services Plugin 4.4.3 -> 4.4.4 Compose 1.8.3 -> 1.9.0 (also enabled diagnostic traces for DEBUG builds) AndroidX Core 1.16.0 -> 1.17.0
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size increased by 54 KB relative to the previous release, v6.7.5.
v6.7.5
Fixed
- [main] Google Play in-app update 'Reload' snackbar no longer immediately dismisses (d6ae882)
This snackbar, or rather its 'Reload' action, is what kicks off the in-app update installation process. A bug (probably since the Compose rewrite) prevented this from remaining on-screen post-download, and would only show again after an app restart. This is no longer the case; the snackbar is now once again shown after an in-app update has been successfully downloaded, allowing the user to apply the update by tapping the 'Reload' action on the snackbar.
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size increased by 0.2 KB relative to the previous release, v6.7.4.
v6.7.4
Fixed
- [detection/oppo] regression in OPPO device detection (db16ab8)
Regression since 3ac0f58 (v6.7.2). Cause:pipelinewas never appended todeviceProductNamedue to incorrect logic (human error).
Miscellaneous
- Updated dependencies (f72706f)
Gradle 8.14.2 -> 9.0.0 AGP 8.11.1 -> 8.12.0 Navigation-Compose 2.9.2 -> 2.9.3 AndroidX Browser 1.8.0 -> 1.9.0 AndroidX Work 2.10.2 -> 2.10.3 AndroidX Test 1.6.1 -> 1.7.0
- Minor performance improvements (d640d51, 6c381dd)
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size decreased by 43 KB relative to the previous release, v6.7.3.
v6.7.3
Added
- [detection] differentiate between different OnePlus Pad 3 regional variants (4d037fe)
Fixed
- [main] "Become a contributor" sheet no longer auto-hides immediately upon open (d639d20)
- [main] possible fix for in-app updates not offering the 'Reload' button until an app restart (67c0cb5)
Changed
- [icons] switched to Material Symbols (cb82bad)
- [icons] re-generated shortcut icons and switched to WebP images for the same (cb82bad)
- [device] remove
oneplus7pro.webpfor fallback/error cases, use conditional icons instead(24d3242)
Earlier, we'd displayoneplus7pro.webpwhen the device image URL did not return a successful response. However, this neither conveyed device support status, nor did it correctly indicate if it was a network failure that prevented the image from being retrieved, or if the image simply did not exist. Replacing the default image with icons based on device/OS support status allows us to at least solve the first problem, and conveniently, also helps reduce APK size, because we don't need to bundle a raster image anymore. - [NewsList] improved performance when scrolling (4ede971)
- Improved performance by utilizing AndroidX
fastCoerce*inline functions wherever possible (6c4f50c)
Miscellaneous
- Updated dependencies (b470b2d)
Gradle 8.14.2 -> 8.14.3 AGP 8.11.0 -> 8.11.1 Crashlytics Plugin 3.0.4 -> 3.0.5 Navigation-Compose 2.9.1 -> 2.9.2 Coil 3.2.0 -> 3.3.0 Dagger 2.56.2 -> 2.57 OkHttp 4.12.0 -> 5.1.0 AndroidX Lifecycle 2.9.1 -> 2.9.2 Play Services Base 18.7.1 -> 18.7.2
- Removed unused images from
src/main/(ic_faq-web.png, ic_launcher-web.png, image_error-web.png) (cb82bad)
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size decreased by 12 KB relative to the previous release, v6.7.2.
v6.7.2
Fixed
- [detection] incorrect model number selection for
INOPPO devices (3ac0f58) - #261: [settings] allow inputting spaces in the device selection sheet's search bar (3ddfb31)
Miscellaneous
- Updated dependencies (6375031)
AGP 8.10.1 -> 8.11.0 Kotlin 2.1.21 -> 2.2.0 Google Services Plugin 4.4.2 -> 4.4.3 Navigation-Compose 2.7.0 -> 2.7.1 Firebase BOM 33.15.0 -> 33.16.10 Play Billing 7.1.1 -> 8.0.0 Play Services Base 18.7.0 -> 18.7.1
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! See https://oxygenupdater.com/article/519/ for more info.
Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size increased by 1.2 KB relative to the previous release, v6.7.1.
v6.7.1
Fixed
- [detection] incorrect model number selection for EU OPPO devices (937da9d)
Miscellaneous
- Updated dependencies (7563b43)
Gradle 8.14 -> 8.14.2 Compose 1.8.2 -> 1.8.3 Placeholder-Compose 1.0.9 -> 1.0.11 Coil 3.1.0 -> 3.2.0 AndroidX Room 2.7.1 -> 2.7.2 AndroidX Work 2.10.1 -> 2.10.2
In case you missed it, the app now supports OPPO devices (as of v6.6.0)! See https://oxygenupdater.com/article/519/ for more info.
Also, see the news article we published that detailed changes & improvements in v6 (Jetpack Compose rewrite).
Full APK size increased by 1.96 KB relative to the previous release, v6.7.0.