TabView with .page style vibrates and reloads content during sheet detent drag

FeedBack Id: FB22031397 (Demo proj Attached to Feedback)

Description:

When a TabView using .page tabViewStyle is placed inside a sheet configured with multiple presentationDetents, dragging the sheet handle to resize between detents causes the TabView to re-render all its pages on every frame of the drag gesture. This results in visible content vibration, scroll position jumping, and tab content flashing during the drag. The issue is fully reproducible with the attached minimal demo project.

Steps to Reproduce:

  • Run the attached TabViewSheetVibrationDemo.swift on any iOS device or simulator
  • Tap "Open Sheet" on the main screen
  • Swipe left to any tab
  • Scroll down inside the tab so content is not at the top
  • Grab the sheet drag indicator at the top and slowly drag upward or downward to resize between medium and large detent
  • Observe the tab content while dragging

Expected Results:

The TabView page content should remain completely stable during sheet resize. Scroll positions should be preserved and no re-rendering should occur because the underlying data has not changed. The sheet should resize smoothly while tab content stays still.

Actual Results:

The TabView re-renders all pages on every frame of the drag gesture. This causes:

  • Visible content vibration and jitter while dragging the sheet handle
  • Scroll position jumping back toward the top mid-drag
  • Tab content flashing as pages are recreated
  • The problem is proportional to drag speed — slower drags show a stuttering effect, faster drags cause a full content flash

Configuration:

  • All Xcode including beta
  • iOS 26 (also reproduced on iOS 16, iOS 17 and iOS 18)
  • Reproducible on both Simulator and real device
  • Affects iPhone and iPad
TabView with .page style vibrates and reloads content during sheet detent drag
 
 
Q