Repository navigation
Remove top search bar on iOS Workspaces and Notifications tabs - #9129
Merged
Merged
Conversation
The .searchable modifier sat on the primary TabView, so every tab's NavigationStack inherited it and rendered a second search field at the top of the Workspaces and Notifications tabs, on top of the iOS 26 bottom search tab. Attach .searchable (and its .onSubmit) to the search tab's destination instead, so the only search entrypoint is the bottom tab-bar search pill. Verified on an iOS 26.5 simulator: no top search field on Workspaces or Notifications; tapping the search pill from either tab still presents the bottom search field with the matching scope prompt and keyboard. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe iOS 26+ search configuration now applies within the ChangesiOS search tab scope
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 25✅ Passed checks (25 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
azooz2003-bit
added a commit
that referenced
this pull request
Aug 1, 2026
Since search became its own tab (#9129), the workspaces/notifications NavigationStack is unmounted while search is active. The eager onChange consume mutated the navigation path with no registered destination, SwiftUI popped it back, and the pending ID was already cleared, so the mount-time onAppear retry found nothing: selecting a search result landed on the tab root without opening the workspace. Instrumented run 30688718660 proved the select action fires and search dismisses while the push vanishes. Keep the pending ID armed through consume and clear it from the pushed destination's onAppear instead, so the stack's onAppear re-issues the path once the tab content is mounted. Split layout clears immediately (no push involved). The layout-preview fixture mirrors the same change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
The
.searchablemodifier sat on the primaryTabViewinMobilePrimaryTabScaffold, so on iOS 26 every tab'sNavigationStackinherited it and rendered a second search field pinned to the top of the Workspaces and Notifications tabs, duplicating the bottom tab-bar search. This moves.searchableand its.onSubmit(of: .search)onto the search tab's destination, making the bottom search pill the only search entrypoint.Tab(role: .search)and.tabViewSearchActivation(.searchTabSelection)are unchanged, so pill activation, scope switching (workspaces vs notifications prompt), and submit-to-tab behavior all keep working.Verified on an iOS 26.5 iPhone 17 Pro Max simulator: Workspaces and Notifications tabs no longer show a top search field; tapping the search pill from either tab presents the bottom search field with the matching scope prompt and keyboard. No automated test added: the field placement is system-rendered chrome with no practical behavior-level assertion, and the search coordinator logic is unchanged and already covered by MobilePrimarySearchCoordinatorTests.
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Removed the duplicate top search field on iOS by scoping
.searchableto the Search tab content. The bottom search pill is now the only entry point, with activation and submit behavior unchanged..searchableand.onSubmit(of: .search)from theTabViewto the Search tab destination to prevent inherited nav bar fields on Workspaces and Notifications.Tab(role: .search)and.tabViewSearchActivation(.searchTabSelection)so pill activation, scope prompts, and submit-to-tab still work.Written for commit dcca52e. Summary will update on new commits.
Summary by CodeRabbit