I'm running into this dreaded message in my latest...
# compose
r
I'm running into this dreaded message in my latest version of the app, but unlike every other case of this I've seen referenced, my code is nowhere in the stack trace, making it really hard to track down. I'll put the full trace in a 🧵, but was curious if anyone has any guidance about how to identify where this might be coming from.
Copy code
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
👀 1
Full stack trace:
Copy code
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
    at androidx.compose.runtime.snapshots.SnapshotKt.readError(Snapshot.kt:2059)
    at androidx.compose.runtime.snapshots.SnapshotKt.current(Snapshot.kt:2402)
    at androidx.compose.runtime.DerivedSnapshotState.current(DerivedState.kt:167)
    at androidx.compose.runtime.DerivedSnapshotState$ResultRecord.readableHash(DerivedState.kt:142)
    at androidx.compose.runtime.DerivedSnapshotState$ResultRecord.isValid(DerivedState.kt:114)
    at androidx.compose.runtime.DerivedSnapshotState.currentRecord(DerivedState.kt:175)
    at androidx.compose.runtime.DerivedSnapshotState.current(DerivedState.kt:167)
    at androidx.compose.runtime.DerivedSnapshotState$ResultRecord.readableHash(DerivedState.kt:142)
    at androidx.compose.runtime.DerivedSnapshotState$ResultRecord.isValid(DerivedState.kt:114)
    at androidx.compose.runtime.DerivedSnapshotState.currentRecord(DerivedState.kt:175)
    at androidx.compose.runtime.DerivedSnapshotState.getCurrentRecord(DerivedState.kt:279)
    at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.recordInvalidation(SnapshotStateObserver.kt:597)
    at androidx.compose.runtime.snapshots.SnapshotStateObserver.drainChanges(SnapshotStateObserver.kt:71)
    at androidx.compose.runtime.snapshots.SnapshotStateObserver.access$drainChanges(SnapshotStateObserver.kt:43)
    at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:50)
    at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:48)
    at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1945)
    at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1960)
    at androidx.compose.runtime.snapshots.SnapshotKt.access$advanceGlobalSnapshot(Snapshot.kt:1)
    at androidx.compose.runtime.snapshots.Snapshot$Companion.sendApplyNotifications(Snapshot.kt:692)
    at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1557)
    at android.view.View.draw(View.java:25197)
    at android.view.View.updateDisplayListIfDirty(View.java:24053)
    at android.view.View.draw(View.java:24924)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4804)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4562)
    at android.view.View.updateDisplayListIfDirty(View.java:24039)
    at android.view.View.draw(View.java:24924)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4804)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4562)
    at android.view.View.updateDisplayListIfDirty(View.java:24039)
    at android.view.View.draw(View.java:24924)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4804)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4562)
    at android.view.View.updateDisplayListIfDirty(View.java:24039)
    at android.view.View.draw(View.java:24924)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4804)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4562)
    at android.view.View.updateDisplayListIfDirty(View.java:24039)
    at android.view.View.draw(View.java:24924)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4804)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4562)
    at android.view.View.updateDisplayListIfDirty(View.java:24039)
    at android.view.View.draw(View.java:24924)
    at android.view.ViewGroup.drawChild(ViewGroup.java:4804)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4562)
    at com.android.internal.policy.DecorView.dispatchDraw(DecorView.java:1197)
    at android.view.View.draw(View.java:25197)
    at com.android.internal.policy.DecorView.draw(DecorView.java:1179)
    at android.view.View.updateDisplayListIfDirty(View.java:24053)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:768)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:774)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:872)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:6121)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5776)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4858)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3345)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:11437)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1690)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1699)
    at android.view.Choreographer.doCallbacks(Choreographer.java:1154)
    at android.view.Choreographer.doFrame(Choreographer.java:1080)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1647)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.app.ActivityThread.main(ActivityThread.java:9063)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
I know which activity is active, but it contains a view pager with several fragments, many of which contain composable views, so I haven't been able to pin down where this might be coming from. From this report, I think it's a
State
dependency of a
derivedStateOf
call, but would love any extra help pointing out where to look.