List rows partially obscured by navigation bar briefly render fully opaque when switching tabs (iOS 26)

Overview

In iOS 26, a List embedded in a NavigationStack inside a TabView exhibits a visual glitch when switching tabs.

When the list is scrolled such that some rows are partially obscured by the navigation bar, the system correctly applies a fade/opacity effect to those rows. However, if the user switches to another tab while rows are in this partially obscured (faded) state, those rows briefly flash at full opacity during the tab transition before disappearing.

This flash is visually distracting and appears to be inconsistent with the intended scroll-edge opacity behavior.

  • The issue occurs only for rows partially obscured by the navigation bar.
  • Rows partially obscured by the tab bar do not exhibit this flashing behavior.

Steps to Reproduce:

  1. Run the attached minimal reproduction on iOS 26.
  2. Open the first tab.
  3. Scroll the list so that some rows are partially hidden behind the navigation bar (showing the native faded appearance).
  4. While rows are in this partially faded state, switch to the second tab.
  5. Observe that the faded rows briefly render fully opaque during the tab switch.

Expected Behavior:

Rows that are partially obscured by the navigation bar should maintain consistent opacity behavior during tab transitions, without flashing to full opacity.

import SwiftUI

@main
struct NavBarReproApp: App {
    /// Minimal repro for iOS 26:
    /// - TabView with two tabs
    /// - First tab: NavigationStack + List
    /// - Scroll so some rows are partially behind the nav bar (faded)
    /// - Switch tabs: those partially-faded rows briefly flash fully opaque. Partially faded rows under the tab bar do not flash
    
    private let items = Array(0..<200).map { "Row \($0)" }
    
    var body: some Scene {
        WindowGroup {
            TabView {
                NavigationStack {
                    List {
                        ForEach(items, id: \.self) { item in
                            Text(item)
                        }
                    }
                    .navigationTitle("One")
                    .navigationBarTitleDisplayMode(.inline)
                }
                .tabItem { Label("One", systemImage: "1.circle") }

                NavigationStack {
                    Text("Second tab")
                        .navigationTitle("Two")
                        .navigationBarTitleDisplayMode(.inline)
                }
                .tabItem { Label("Two", systemImage: "2.circle") }
            }
        }
    }
}

Thanks for the post, trying to see what you are describing, running into a simulator 26.2 and I don't see what you are describing, can you provide images or screen recordings showing the experience so SwiftUI experts can jump in and help?

Albert Pascual
  Worldwide Developer Relations.

Here is two screenshots, notice the top couple of rows losing their opacity when switching from tab 1 to tab 2.

It is a very brief effect only present for a couple of frames during tab switch. These screenshots are from a screen recording made on an iphone 17 simulator running ios 26.2

As a note, this only appears to happen on iphone, not ipad

Using the simulator so screenshots are weird where I see the height of the table restricted at this time. But you running into a physical device.

I wonder if there is anything weird in that project, can you submit the project with the sysdiagnose of that device?

Once you open the bug report, please post the FB number here for my reference.

If you have any questions about filing a bug report, take a look at Bug Reporting: How and Why?

Thanks

Albert Pascual
  Worldwide Developer Relations.

Bug report number: FB21804922

Thanks for doing that!! Looks like the bug is going to the correct team. Please give them sometime to investigate. I would recommend to zip up the project and upload it into the FB.

For more details on when you'll see updates to your report, please see What to expect after submission.

Albert Pascual
  Worldwide Developer Relations.

List rows partially obscured by navigation bar briefly render fully opaque when switching tabs (iOS 26)
 
 
Q