Skip to content

fix: preserve Android images during row updates and navigation - #98

Draft
originalix wants to merge 3 commits into
mainfrom
codex/android-device-flicker
Draft

fix: preserve Android images during row updates and navigation#98
originalix wants to merge 3 commits into
mainfrom
codex/android-device-flicker

Conversation

@originalix

@originalix originalix commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Android account-selector balance patches rebuild the native row and clear an unchanged avatar before loading it again. React-owned images can also be cleared while Android is still drawing them during a removal transition. These changes preserve the image across both paths.

  • Update existing account subtitle text, tone, formatted segments, accessibility text and selection state when the account, image, theme, layout and remaining row structure are unchanged. Other changes and actual recycling retain full binding and cleanup.
  • Keep the drawable and its Glide target for an attached React-owned image until detachment. Cancel pending callbacks immediately, release detached or explicitly owned native images immediately, and restore callbacks on recycling.

The final diff contains only three Android Kotlin runtime files. Package versions remain at 3.0.114; release/version changes and the temporary test build configuration have been reverted. There are no JS API or iOS implementation changes.

Validation completed before cleanup: 87 Android JVM tests passed (Image 81, NativeList 6), including two regression cases that failed against the original d971e760 sources. The three runtime files are byte-identical to the tested bf1cd56b versions. That earlier commit retains the test harness for reference; the harness and its Gradle configuration are outside the final diff.

The requester is continuing physical-device testing with the existing Android APK from App commit 4127073aed1630094b03d8c67832469c3261dd8e. The App branch carries equivalent patches against published 3.0.114 packages and the stable-element correction. No new build or npm publication is requested. Keep this PR in draft until physical-device verification passes.

Physical-device acceptance covers repeated balance updates, device-detail exit transitions, account/image changes, recycling and foreground/background transitions. The separate asynchronous settings-row layout shift and whole-page blank-frame behavior still require verification; the code-level tests do not establish that every recorded flicker is resolved.

Related investigation: OK-62255, OK-62104.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant