You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Selection could go stale on iOS 15 and 16. Before iOS 17, onChange hands the action closure a view value captured one update earlier, so removing the selected tab left selection pointing at an item that no longer existed while the pager displayed the first tab. Selection now resolves against the value onChange delivers.
A fixed tab bar could run off screen. Tabs were laid out with maxWidth: .infinity, so a label wider than its share pushed the bar past the trailing edge. Every tab is now pinned to an equal width and clipped inside its own tab. Debug builds warn once when a label cannot fit, with what to do about it.
Pages are given the full page area, so a background applied to page content covers the whole tab rather than just the content.
Changed
The bottom safe area is filled by default. A full-bleed page needs no setup; add .contentRespectsSafeArea() when the pager sits above a tab bar or toolbar and its content must not run underneath.
Internal
Selection rules and fixed-bar sizing moved into testable helpers, with 25 new unit tests covering them — including the iOS 15/16 regression above.
Sample app: Different Views now shows a List and a grid, Separator exposes live color/thickness/padding controls, and Fixed vs Scrollable keeps a separate selection per style.