Skip to content

Draw skeleton-first tabs on Android only - #90

Draft
simonhamp wants to merge 1 commit into
mainfrom
fix/skeleton-first-on-android-only
Draft

simonhamp wants to merge 1 commit into
mainfrom
fix/skeleton-first-on-android-only

Conversation

@simonhamp

Copy link
Copy Markdown
Member

On iOS, going back to a tab flashed a spinner for a frame or two. Notifications and Profile showed it most.

iOS keeps each tab's last frame and shows it the moment you tap the tab. The skeleton frame then replaced it with a spinner, and the kept rows came back about 17 ms later. On the iPhone, Notifications draws what it kept in about 10 ms and Profile in about 40 ms, so the skeleton frame bought nothing there. iOS now opens on what it kept, with no skeleton frame.

Android keeps the tab you left on screen until the new one draws, so the skeleton frame stays there as the sign your tap worked (#36).

A side effect: iOS tabs no longer dispatch FirstFrame, so they don't depend on NativePHP/mobile-air#615 any more. That fix still matters for Android and for other apps.

Reviewers: the first visit to a tab on iOS now shows the empty tab for the time it takes to draw what was kept, where it used to show a spinner first. A tab with nothing kept still shows its spinner while it loads.

Screenshots

Recordings to follow. The only change is the spinner flash on iOS tab switches, so still screenshots look the same before and after.

  • No visible change

🤖 Generated with Claude Code

On iOS a tab you go back to opens as it was last drawn, straight from the
tab bar. The skeleton frame then cut from those rows to a spinner, and
back to the kept rows a frame or two later, which showed as a flicker on
Notifications and Profile. iOS now opens on what it kept.

Android keeps showing the tab you left until the new one draws, so the
skeleton frame stays there as the sign your tap worked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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