I am trying to customize my navigation title and subtitle in iOS 26. But it seems like setting largeSubtitleTextAttributes on UINavigationBarAppearance doesn’t seem to do anything.
So for a view with something like this:
NavigationStack {
// content
.navigationTitle("Title")
.navigationSubtitle("Subtitle")
}
I am setting the appearance:
let appearance = UINavigationBarAppearance()
// Large title
appearance.largeTitleTextAttributes = [.foregroundColor: UIColor.green]
appearance.largeSubtitleTextAttributes = [.foregroundColor: UIColor.yellow]
// Inline title
appearance.titleTextAttributes = [.foregroundColor: UIColor.blue]
appearance.subtitleTextAttributes = [.foregroundColor: UIColor.red]
let navAppearance = UINavigationBar.appearance()
navAppearance.standardAppearance = appearance
| Large | Inline |
|---|---|
![]() |
![]() |
Here we can see that when we scroll, the title shrinks to the inline style, and the color changes from green to blue. But the subtitle is red the entire time. If I remove the subtitleTextAttributes, then the subtitle is the default color in both cases.
Is this is a bug with UINavigationBarAppearance Or am I doing something wrong? I’ve tried with both a SwiftUI view in a NavigationStack and a UIKit view in a UINavigationController, and the behavior is the same.
I have been able to get this to work with UIKit using navigationItem.attributedSubtitle and navigationItem.largeAttributedSubtitle, and it switches between both appropriately. But obviously I can’t do the same in SwiftUI.

