Navigation title scroll issue in iOS 26

Navigation title scroll along with the content in iOS 26. working fine in iOS 18 and below. One of my UI component is outside the scrollview which is causing the issue.

    var body: some View {
        VStack {
            Rectangle()
                .frame(maxWidth: .infinity)
                .frame(height: 60)
                .padding(.horizontal)
                .padding(.top)
            ScrollView {
                ForEach(0...5, id: \.self) { _ in
                    RoundedRectangle(cornerRadius: 10)
                        .fill(.green)
                        .frame(maxWidth: .infinity)
                        .frame(height: 100)
                        .padding(.horizontal)
                }
            }
        }
        .navigationTitle("Hello World")
    }
}

Answered by DTS Engineer in 884492022

In iOS 26, the navigation bar's large-title collapse behavior requires a ScrollView as the direct content of the view. When you wrap the ScrollView in a VStack alongside other views, the system can't connect the scroll position to the title transition, so the title scrolls away with the content.

Move your Rectangle out of the VStack and use safeAreaInset instead:

    ScrollView {
        ForEach(0...5, id: \.self) { _ in
            RoundedRectangle(cornerRadius: 10)
                .fill(.green)
                .frame(maxWidth: .infinity)
                .frame(height: 100)
                .padding(.horizontal)
        }
    }
    .safeAreaInset(edge: .top) {
        Rectangle()
            .frame(maxWidth: .infinity)
            .frame(height: 60)
            .padding(.horizontal)
    }
    .navigationTitle("Hello World")

This keeps the ScrollView as the primary content so the title collapse works correctly, while safeAreaInset places your Rectangle above the scroll region without interfering.

In iOS 26, the navigation bar's large-title collapse behavior requires a ScrollView as the direct content of the view. When you wrap the ScrollView in a VStack alongside other views, the system can't connect the scroll position to the title transition, so the title scrolls away with the content.

Move your Rectangle out of the VStack and use safeAreaInset instead:

    ScrollView {
        ForEach(0...5, id: \.self) { _ in
            RoundedRectangle(cornerRadius: 10)
                .fill(.green)
                .frame(maxWidth: .infinity)
                .frame(height: 100)
                .padding(.horizontal)
        }
    }
    .safeAreaInset(edge: .top) {
        Rectangle()
            .frame(maxWidth: .infinity)
            .frame(height: 60)
            .padding(.horizontal)
    }
    .navigationTitle("Hello World")

This keeps the ScrollView as the primary content so the title collapse works correctly, while safeAreaInset places your Rectangle above the scroll region without interfering.

In response to your comment above ~ We tested several approaches to keep a fixed view above a ScrollView while preserving the navigation title behavior, and none produce consistent results across iPhone and iPad in iOS 26.

On iPhone, using safeAreaInset combined with .navigationBarTitleDisplayMode(.inline) or .toolbarTitleDisplayMode(.inlineLarge) keeps the title pinned, but these change the title's visual style. On iPad, the same approaches hide the title entirely. Other approaches — pinned section headers, toolbar placement, placing the view inside the ScrollView — all produce layout artifacts.

The layout pattern in your original code (a VStack containing a fixed view and a ScrollView, with .navigationTitle) worked correctly in iOS 18. The behavior change in iOS 26 broke it, and no supported alternative restores the same result on both iPhone and iPad.

Please file a feedback report at https://feedbackassistant.apple.com with your sample project and note that the layout worked in iOS 18. Post the feedback number here so we can track it.

Navigation title scroll issue in iOS 26
 
 
Q