Repository navigation
fix(ios): keep tab screens hidden until their stack is sized - #349
Merged
Merged
Conversation
A navigation stack lays its root out at zero size for its first frames, on a cold launch and on the first visit to a tab. SwiftUI drew that layout, so Home's hero and Pipeline card, and Find's empty state, showed squeezed into a sliver before snapping to full width. Each tab root now stays invisible until its stack reports a real size. Find showed "No results for these filters" before its first load had started; it now shows the skeleton until that load settles, and its empty and error states take the full width. The Continue card paints its saved copy before the first frame instead of animating it in afterwards, which slid Home's Pipeline card across it. A DEBUG simulator launch with RAWKOON_SERVER and RAWKOON_TOKEN now signs in before the first frame, so it reproduces a signed-in device launch instead of passing through Login.
Five segments truncated their labels on a phone. The Activity tab now offers Inbox, Requests, Calendar and History; the download queue opens on its own screen from Home's Pipeline card, which was already its only direct entry point. The French Inbox label becomes "Notifications" so all four fit.
fix(ios): drop the Queue lane from the Activity picker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On a cold launch, and on the first visit to a tab, screens drew a squeezed layout for a few frames before snapping to full width. Home's hero title wrapped word by word and the Pipeline card stacked one letter per line. Find showed "No results for these filters" in a narrow column, fading into the grid. #348 removed the crossfade that had been blurring these frames together, so they became more visible.
Measuring the layout showed the cause: the tab container is full size from the first frame, but the navigation stack inside it hands its root a zero-size proposal for its first ~0.3 s. SwiftUI lays the content out against that and draws it.
Changes
hiddenUntilSized(), applied inRootTabsView.tabRoot).RAWKOON_SERVERandRAWKOON_TOKENnow signs in before the first frame, so it reproduces a signed-in device launch. Previously it passed through Login, which hid the bug on the simulator.Verification
swiftformat --lint, andswiftlint(no errors).