maxrave-dev / maxrave-dev/SimpMusic
App crashes with UnsupportedOperationException on Android 15 when using blur and glass effects (Haze , Liquid Glass)
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 11.4k
- Forks
- 599
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 7
Description
Duplicate Check
- I confirm I searched for existing reports and found no duplicates.
Describe the Bug
The app crashes on Android 15 with a java.lang.UnsupportedOperationException, in androidx.compose.ui.platform or while rendering.
From error logs, the exception is thrown during View dispatchDraw – most likely when applying blur or 'glass' UI effects (Haze, Liquid Glass,).
Root Cause:
Android 15 (API 35) introduced stricter rendering pipeline checks. Libraries like Haze and Liquid Glass (used for real-time blur effects) rely on low-level drawing APIs that are no longer supported in Android 15, causing this exception.
Note:
i dont know about the cause i just researched about this and this is what i learnt. I know it is in be
Relevant Libraries involved:
dev.chrisbanes.haze:haze:1.7.2liquid-glass:2.0.0-alpha03
**Full crash log and context below. (See 'Log / Error Details')
Steps to Reproduce
- Install the app on a device running Android 15 (my device Motorola moto g45 5G with SDK 35).
- Launch the app and visit any screen that shows a blur/glass effect (this only happens when im listerning for long period of time like 10-20 mins).
- The app crashes with an UnsupportedOperationException.
Expected Behavior
App should render blur/glass effects without crashing, or gracefully disable/fallback on Android 15 if not supported by the library.
App Version
1.1.1
Android Version
Android 15 (SDK 35)
Device Model
Motorola moto g45 5G
Custom ROM
- I am using a custom ROM
Custom ROM Name (if applicable)
No response
Screenshots (optional)
No response
Log / Error Details
Build version: 1.1.1
Current date: 2026-04-27 11:04:43
Device: Motorola moto g45 5G
OS version: Android 15 (SDK 35)
Stack trace:
java.lang.UnsupportedOperationException
at k2.f.p(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:3)
at v.r.z(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:5)
at rf.c.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:430)
at f2.e.f(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:3)
at b3.n0.b(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:52)
at b3.k1.W0(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:48)
at b3.j1.b(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:27)
at z1.q.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:310)
at b3.i1.invoke(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:482)
at b3.a.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:856)
at l2.c.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:47)
at b3.a.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:104)
at l2.g.x(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:35)
at l2.c.f(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:55)
at c3.x1.f(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:99)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:74)
at android.view.View.draw(View.java:24935)
at android.view.View.updateDisplayListIfDirty(View.java:23782)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:703)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:709)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:807)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:6028)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5674)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4626)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3178)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10901)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1455)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1464)
at android.view.Choreographer.doCallbacks(Choreographer.java:1037)
at android.view.Choreographer.doFrame(Choreographer.java:955)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1438)
at android.os.Handler.handleCallback(Handler.java:1001)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loopOnce(Looper.java:268)
at android.os.Looper.loop(Looper.java:384)
at android.app.ActivityThread.main(ActivityThread.java:8936)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:907)
User actions:
2026-04-27 10:52:21: MainActivity created
2026-04-27 10:52:21: MainActivity resumed
2026-04-27 10:52:49: MainActivity paused
2026-04-27 11:03:17: MainActivity resumed
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the crash on Android 15 (SDK 35) while using a screen with blur or glass effects, then inspect the AndroidComposeView.dispatchDraw stack and the Haze 1.7.2 and liquid-glass 2.0.0-alpha03 integrations. Done means the affected screen no longer crashes, either while rendering the effects or with a graceful fallback, and the behavior is checked on Android 15.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100