Navigation Title no longer showing for first Tab in iOS/iPadOS 26

Navigation Title no longer showing for first Tab in iOS/iPadOS 26 (Directives) in my app Starship SE Corps when running is Xcode 26 simulator and on iPad device itself running iPadOS 26 beta.

  1. Launch app
  2. Notice Navigation Title “Directives” is missing from top tab in Sidebar and Floating Tab View (iPad) and TabView (iOS).
  3. Navigate to other tabs and Navigation Titles appear as expected.
  4. Worked fine (as expected) in iOS/iPadOS 18.5, but broken in iOS/iPadOS 26.

Reference Feedback: FB17987650

Answered by aandyzoom01 in 850879022

Fixed DirectivesView navigation title issue by raising the ScrollView{} up one level in my VStack hierarchy so that all VStack views were encompassed by the ScrollView{}. This was not needed before and not sure why this had to be done for iOS/iPadOS 26 (what changed??), but it works now.

Update as of 6/26/25: Still same issue (No Navigation Title displayed on first tab in TabView and NavigationSplitView) when tried on iOS 26.0 Developer Beta 2 and iPadOS 26.0 Developer Beta 2, in Simulator and on device running 26.0 Developer Beta 2. More Info:

  • iPhone 16 Pro Max Simulator 26.0, in Portrait, Navigation Title for first Tab view is blank. Turning iPhone 16 Pro Max Simulator 26.0, in Landscape, in-line navigation title appears as expected.
  • iPhone 16e Simulator 26.0, in Portrait, Navigation Title for first Tab view is blank. Turning iPhone 16e Simulator 26.0, in Landscape, in-line navigation title appears as expected.
  • iPad Pro 11-in Simulator 26.0, in Portrait, Navigation Title for first Tab view is blank. Turning iPad Pro 11-in Simulator 26.0, in Landscape, Navigation Title for first Tab view is blank.

Also, this issue with the navigation title not appearing doesn’t happen at all on current App Store release production app running on iOS 18.5 and iPadOS 18.5 so this is a recent occurrence with the new iOS and iPadOS 26.

Reference Feedback bug item FB17987650. I completed an extensive diagnostic and troubleshooting chat session with Xcode 26 Beta 2 Swift Assist AI Coding Assistant (ChatGPT) regarding this bug. Additional details that came out of this chat session that should be considered for this feedback FB17987650.

The issue does not appear to be with the first tab, but with navigation title and navigation stack in a set of views in a TabView (iOS) or NavigationSplitView (iPadOS). I've added the following new content to the feedback issue:

SwiftUI .navigationTitle Bug Diagnosis — iOS/iPadOS 26.0

Issue Summary • The navigation title set using .navigationTitle("Directives") in DirectivesView fails to appear on iOS/iPadOS 26.0, even when following Apple’s current SwiftUI best practices. • The same code works as expected in earlier versions (e.g., iOS/iPadOS 18.5). • The issue persists for both iPhone and iPad targets.

Diagnostic Steps Taken

  1. Modifier Placement and View Structure • Tested both attaching .navigationTitle and a .toolbar (with a visible button) directly to the immediate child of NavigationStack (ZStack), and to the NavigationStack itself. • No change: Navigation bar, title, and toolbar item remain absent in iOS/iPadOS 26.0.

  2. Content Minimization Test • Replaced the entire content of DirectivesView with just Text("Test") inside a NavigationStack, using .navigationTitle and .toolbar. • Result: Navigation bar and title are still missing, confirming that the issue is not related to content, layout, or subviews.

  3. Subview Analysis • Confirmed that all custom subviews (DirectivesLogoView, DirectivesHeaderView, DirectivesSignatureView) are simple SwiftUI views with no use of navigation containers/modifiers or safe area overlays. • No evidence of .navigationBarHidden(true) or nested navigation stacks.

  4. Background Image Diagnostic • Temporarily removed and then reintroduced the background image (Image("Starfield")) to ensure it was not affecting the navigation bar rendering. • No effect on the presence of the navigation title or bar.

  5. Toolbar Item Diagnostic • Added and then removed a visible .toolbar item to test if a toolbar presence would force the navigation bar/title to appear (as sometimes required in new SwiftUI). • Toolbar item did not affect the navigation bar or title presence in iOS/iPadOS 26.0.

  6. TabView Position Control Test • Swapped the position of DirectivesView in the parent TabView to check for index-related issues. • The navigation bar/title remains missing regardless of tab order, confirming the problem is specific to the view or navigation stack context.

Key Conclusion • The navigation title and navigation bar are not rendered under any tested conditions in iOS/iPadOS 26.0 for this view hierarchy, even in the most minimal NavigationStack configuration. • This is a regression or unannounced behavioral change in SwiftUI on iOS/iPadOS 26.0, not caused by content, overlays, modifier placement, or subview implementation.

Action Requested • Please clarify if there are new requirements for navigation bar/title visibility in root NavigationStack views in iOS/iPadOS 26.0, or confirm this is a regression. • Requesting a fix or documentation update, since the app’s existing navigation structure now fails to show basic navigation elements in the latest OS.

⸻ In addition: Summary of the Issue:

• A minimal SwiftUI view (MinimalNavigationTitleBugView) was created to demonstrate the navigation title bug. • In the Xcode Canvas preview, the navigation title for this minimal view appears as expected. • In contrast, my production app’s view (DirectivesView) does not display the navigation title—neither in the Xcode Canvas preview nor when running the app in the simulator or on device (iOS/iPadOS 26.0).

Additional Diagnostic Details:

• The issue does not appear to be caused by my code: • Both minimal and production views use the standard SwiftUI navigation patterns (NavigationStack, .navigationTitle attached to the direct child). • All custom subviews are simple, do not use navigation modifiers, and do not overlay the navigation bar area. • No .navigationBarHidden(true), nested navigation stacks, or unusual global environment modifiers are used. • The bug persists even when all content is reduced to a single Text view.

Conclusion:

• The fact that the minimal view works in preview but the production view does not—even in preview—suggests this bug is likely triggered by app structure, view hierarchy, or a change/regression in SwiftUI’s navigation logic for complex root or tab-based views.

Action Requested:

• Please clarify whether there are any new requirements for root navigation bar/title visibility in iOS/iPadOS 26.0, or confirm this as a regression.

Thank you for your attention!

I have attempted to reproduce this bug in a minimal project that uses a TabView and NavigationStack, but the issue does not appear in the Xcode Canvas preview or in that context. The navigation title bug only occurs in my full production app. This suggests that the issue is likely triggered by real-world app hierarchy, parent containers, or app-level configuration that does not exist in minimal or preview scenarios.

Still an issue with iOS/iPadOS 26.0 Developer Beta 3.

Still an issue with iOS/iPadOS 26.0 Developer Beta 4.

Accepted Answer

Fixed DirectivesView navigation title issue by raising the ScrollView{} up one level in my VStack hierarchy so that all VStack views were encompassed by the ScrollView{}. This was not needed before and not sure why this had to be done for iOS/iPadOS 26 (what changed??), but it works now.

It looks to me like there is an issue with the frame of the ScrollView. Applying a frame(maxWidth: .infinity) to a child of the ScrollView, fixes the issue.

So this won't work:

var body: some View {
    NavigationStack {
        VStack {
            ScrollView {
                Text("Hello, world")
            }
        }
        .navigationTitle(Text("Title"))
        .navigationSubtitle(Text("Subtitle"))
    }
}

But adding the frame modifier, fixes it:

var body: some View {
    NavigationStack {
        VStack {
            ScrollView {
                Text("Hello, world")
                    .frame(maxWidth: .infinity) // <-- resolves the issue
            }
        }
        .navigationTitle(Text("Title"))
        .navigationSubtitle(Text("Subtitle"))
    }
}

It appears it doesn't matter on which child you apply this "fix", it should just be on a child of the ScrollView.

iOS 26 Navigation Title Not Displaying - Solution

Problem Description

After updating to iOS 26 beta, navigation titles stopped displaying in some of our SwiftUI views, while others continued to work. The affected views showed no navigation bar - the title, large title display mode, and toolbar items were not visible.

This behavior is different from iOS 18, where the same code displays navigation titles as expected.

Affected Configuration

  • iOS Version: iOS 26 beta (all current betas through beta 7)
  • SwiftUI: NavigationStack with .navigationTitle() and .navigationBarTitleDisplayMode(.large)
  • Specific Pattern: Views where ScrollView or Form is the direct child of the view body

The Change in Behavior

In iOS 26, when a view's body directly returns a ScrollView or Form, the navigation title doesn't appear. Here's an example of code that displays the navigation title in iOS 18 but not in iOS 26:

struct DashboardView: View {
    var body: some View {
        ScrollView {
            LazyVStack {
                // Your content here
            }
        }
        .navigationTitle("Dashboard")
        .navigationBarTitleDisplayMode(.large)
    }
}

Similarly with Form:

struct SettingsView: View {
    var body: some View {
        Form {
            Section("Settings") {
                // Your settings here
            }
        }
        .navigationTitle("Settings")
        .navigationBarTitleDisplayMode(.large)
    }
}

Why Some Views Still Worked

Views that continued to work had a different structure - they wrapped their scrollable content in a VStack or had non-scrolling elements before the scrollable content:

struct WorkingView: View {
    var body: some View {
        VStack(spacing: 0) {
            headerView  // Non-scrolling content
            
            ScrollView {
                // Scrollable content
            }
        }
        .navigationTitle("This Works")
        .navigationBarTitleDisplayMode(.large)
    }
}

The Solution

The fix is to ensure there's at least one non-scrolling element in a VStack before your scrollable content. Even an invisible element works:

struct FixedDashboardView: View {
    var body: some View {
        VStack(spacing: 0) {
            // Non-scrolling placeholder to force navigation bar rendering in iOS 26
            Color.clear.frame(height: 1)
            
            ScrollView {
                LazyVStack {
                    // Your content here
                }
            }
        }
        .navigationTitle("Dashboard")
        .navigationBarTitleDisplayMode(.large)
    }
}

For Form-based views:

struct FixedSettingsView: View {
    var body: some View {
        VStack(spacing: 0) {
            // Non-scrolling placeholder to force navigation bar rendering in iOS 26
            Color.clear.frame(height: 1)
            
            Form {
                Section("Settings") {
                    // Your settings here
                }
            }
        }
        .navigationTitle("Settings")
        .navigationBarTitleDisplayMode(.large)
    }
}

Why This Works

In iOS 26, the navigation bar appears to require at least one non-scrolling element to display properly when using scrollable containers.

By adding a VStack with at least one non-scrolling element (even an invisible one), the navigation title displays correctly in iOS 26 while maintaining compatibility with iOS 18.

What Didn't Work

Before finding this solution, I tried many other approaches that did NOT fix the issue:

  • Adding .toolbar with empty content
  • Using .navigationBarHidden(false)
  • Using .toolbar(.visible, for: .navigationBar)
  • Adding .searchable() modifier (though all working views had this)
  • Restructuring ScrollViewReader placement
  • Adding .frame(maxWidth: .infinity) to child views
  • Various other modifier combinations

Impact

This change in behavior affects SwiftUI apps using:

  • NavigationStack or NavigationView
  • Views where ScrollView or Form is the direct child
  • Large title display mode (inline mode may also be affected)

Workaround Summary

Always wrap ScrollView or Form in a VStack with at least one non-scrolling element in iOS 26:

VStack(spacing: 0) {
    Color.clear.frame(height: 1)  // Minimal workaround
    
    ScrollView { /* content */ }  // or Form { /* content */ }
}

Additional Notes

This behavior change has been observed consistently across iOS 26 betas. The workaround described above ensures navigation titles display correctly in iOS 26 while maintaining backward compatibility with iOS 18 and earlier versions.

Whether this is an intentional change or will be addressed in future iOS 26 releases remains to be seen. For now, the VStack wrapper approach provides a reliable solution.

Navigation Title no longer showing for first Tab in iOS/iPadOS 26
 
 
Q