iOS 26/27 introduced Liquid Glass as the new design language, shifting how apps should express brand identity. Color now belongs in the scrollable content layer rather than fixed navigation bars, allowing Liquid Glass controls to dynamically pick up brand color while keeping navigation familiar and native.
⢠Liquid Glass replaces the solid-color bar design language introduced previously, making translucent floating controls the new standard
⢠Recommended pattern flips: brand color moves from toolbar/tab bar backgrounds into the scrollable content layer
⢠Standard components like TabView and NavigationStack automatically adopt Liquid Glass without any code changes
⢠Custom components should now use .glassEffect() modifier and match concentric corner radii to feel native
⢠Liquid Glass tab bars and toolbars dynamically tint from your content layer's background color ā move your brand color into scroll views, not navigation backgrounds
⢠Custom components still feel native when they adopt Liquid Glass backing, concentric corner radii, and standard interaction patterns
⢠Supporting Dark Mode and Dynamic Type is now more critical than ever since Liquid Glass adapts to system settings ā apps that ignore these feel visually broken on iOS 27
Demonstrates the iOS 27 recommended pattern: brand color lives in the scrollable content area so Liquid Glass navigation controls dynamically pick it up, rather than setting a solid navigation bar color.
import SwiftUI
// MARK: - Brand Color Content Layer Demo
// iOS 27 recommended approach: put brand color in the scroll view,
// let Liquid Glass controls tint themselves automatically.
struct BrandedRecipeListView: View {
// App's brand accent ā used as tint, NOT as a toolbar background
private let brandColor = Color(red: 0.95, green: 0.45, blue: 0.25)
let recipes = ["Chocolate Chip", "Snickerdoodle", "Lemon Poppy", "Brown Butter", "Matcha", "Espresso Walnut"]
var body: some View {
NavigationStack {
ScrollView {
// Brand gradient lives here ā in the content layer, scrolls away
LinearGradient(
colors: [brandColor.opacity(0.25), Color(.systemBackground)],
startPoint: .top,
endPoint: .center
)
.frame(height: 200)
.ignoresSafeArea(edges: .top)
LazyVStack(alignment: .leading, spacing: 12) {
ForEach(recipes, id: \.self) { recipe in
RecipeRow(title: recipe, accentColor: brandColor)
}
}
.padding(.horizontal)
}
.navigationTitle("This Week's Flavors")
.navigationBarTitleDisplayMode(.large)
// ā
No .toolbarBackground() call ā let Liquid Glass do its thing
.toolbar {
ToolbarItem(placement: .primaryAction) {
Button("Order", systemImage: "cart.badge.plus") {}
.tint(brandColor) // accent only, not background
}
}
}
.tint(brandColor) // Sets accent color for all interactive elements
}
}
struct RecipeRow: View {
let title: String
let accentColor: Color
var body: some View {
HStack {
RoundedRectangle(cornerRadius: 8)
.fill(accentColor.opacity(0.15))
.frame(width: 56, height: 56)
.overlay {
Image(systemName: "birthday.cake")
.foregroundStyle(accentColor)
.font(.title2)
}
VStack(alignment: .leading, spacing: 4) {
Text(title)
.font(.headline)
Text("Limited weekly flavor")
.font(.subheadline)
.foregroundStyle(.secondary)
}
Spacer()
Image(systemName: "chevron.right")
.foregroundStyle(.tertiary)
}
.padding()
.background(.regularMaterial, in: RoundedRectangle(cornerRadius: 16))
.contextMenu {
Button("Add to Favorites", systemImage: "heart") {}
Button("Share", systemImage: "square.and.arrow.up") {}
Divider()
Button("Order Now", systemImage: "cart") {}
}
}
}
#Preview {
BrandedRecipeListView()
}Avoid setting a solid background color on TabView or NavigationStack toolbars ā this defeats Liquid Glass and letterboxes your content area. Instead set background color on the scroll view content. Dynamic Type support must be manually implemented for custom fonts; test at all accessibility size categories. Context menus are free with SwiftUI but custom replacements must match native animation timing.
Liquid Glass visual effects require devices capable of running iOS 26+; the translucency and real-time tinting may be reduced on older or lower-memory devices
More iOS 27 APIs land every week.
Get notified when new capabilities are published ā no noise, just signal.