Comprehensive guide to new SwiftUI features in iOS 26, iPadOS 26, macOS Tahoe, watchOS 26, and visionOS 26. From the Liquid Glass design system to rich text editing, these enhancements make SwiftUI more powerful across all Apple platforms.
Confirm successful installation by checking the skill directory location:
.cursor/skills/axiom-swiftui-26-ref
Restart Cursor to activate axiom-swiftui-26-ref. Access via /axiom-swiftui-26-ref in your agent's command palette.
β
Security Notice
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Comprehensive guide to new SwiftUI features in iOS 26, iPadOS 26, macOS Tahoe, watchOS 26, and visionOS 26. From the Liquid Glass design system to rich text editing, these enhancements make SwiftUI more powerful across all Apple platforms.
Core principle From low level performance improvements all the way up through the buttons in your user interface, there are some major improvements across the system.
When to Use This Skill
Adopting the Liquid Glass design system
Implementing rich text editing with AttributedString
Embedding web content with WebView
Optimizing list and scrolling performance
Using the @Animatable macro for custom animations
Building 3D spatial layouts on visionOS
Bridging SwiftUI scenes to UIKit/AppKit apps
Implementing drag and drop with multiple items
Creating 3D charts with Chart3D
Adding widgets to visionOS or CarPlay
Adding custom tick marks to sliders (chapter markers, value indicators)
Constraining slider selection ranges with enabledBounds
Customizing slider appearance (thumb visibility, current value labels)
Creating sticky safe area bars with blur effects
Opening URLs in in-app browser
Using system-styled close and confirm buttons
Applying glass button styles (iOS 26.1+)
Controlling button sizing behavior
Implementing compact search toolbars
Adjusting line height or baseline spacing for text
For comprehensive coverage, see axiom-liquid-glass (design principles, variants, review pressure) and axiom-liquid-glass-ref (app-wide adoption guide). This section covers WWDC 256-specific APIs only.
Automatic Adoption
Recompile with iOS 26 SDK β navigation containers, tab bars, toolbars, toggles, segmented pickers, and sliders automatically adopt the new design. Bordered buttons default to capsule shape. Sheets get Liquid Glass background (remove any presentationBackground customizations).
Toolbar APIs (iOS 26)
ToolbarSpacer
.toolbar {ToolbarItem(placement:.bottomBar){Button("Archive", systemImage:"archivebox"){}}ToolbarSpacer(.flexible, placement:.bottomBar)// Push items apartToolbarItem(placement:.bottomBar){Button("Compose", systemImage:"square.and.pencil"){}}}// .fixed separates groups visually; .flexible pushes apart (like Spacer in HStack)
ToolbarItemGroup (Visual Grouping)
Items in a ToolbarItemGroup share a single glass background "pill". ToolbarItemPlacement controls visual appearance: confirmationAction β glassProminent styling, cancellationAction β standard glass. Use .sharedBackgroundVisibility(.hidden) to exclude items (e.g., avatars) from group background.
Toolbar Morphing
Attach .toolbar {} to individual views inside NavigationStack (not to NavigationStack itself). iOS 26 morphs between per-view toolbars during push/pop. Use toolbar(id:) with matching ToolbarItem(id:) across screens for items that should stay stable (no bounce):
#1 gotcha: Toolbar on NavigationStack = nothing to morph between.
DefaultToolbarItem
Reposition system-provided items (like search) within your toolbar layout:
DefaultToolbarItem(kind:.search, placement:.bottomBar)// Replaces system's default placement of matching kind
Use in collapsed NavigationSplitView sidebar to specify which column shows search on iPhone. Wrap in if #available(iOS 26.0, *) for backward compatibility.
User-Customizable Toolbars
toolbar(id:) enables user customization (rearrange, show/hide). Only .secondaryAction items support customization on iPadOS. Use showsByDefault: false for optional items. Add ToolbarCommands() for macOS menu item.
Other Toolbar Features
.navigationSubtitle("3 unread") β Secondary line below title
.badge(3) on toolbar items β Notification counts
Monochrome icon rendering β Reduces visual noise; tint for meaning, not decoration
Scroll edge blur β Automatic, no code required
Bottom-Aligned Search
Foundational search APIs: See axiom-swiftui-search-ref. This section covers iOS 26 refinements only.
NavigationSplitView{List{}.searchable(text: $searchText)}// Bottom-aligned on iPhone, top trailing on iPad (automatic)// Use placement: .sidebar to restore sidebar-embedded search on iPad
searchToolbarBehavior(.minimize) β Compact search that expands on tap
Tab(role: .search) β Dedicated search tab; search field replaces tab bar. See swiftui-nav-ref Section 5.7
Glass Effect for Custom Views
Button("To Top", systemImage:"chevron.up"){scrollToTop()}.padding().glassEffect()// Add .interactive for custom controls on iOS
GlassEffectContainer β Required when multiple glass elements are nearby (glass can't sample glass)
glassEffectID(_:in:) β Fluid morphing transitions between glass elements using a namespace
Sheet morphing β Use .matchedTransitionSource + .navigationTransition(.zoom(...)) to morph sheets from buttons
Button & Control Changes
Capsule shape default for bordered buttons (override with .buttonBorderShape(.roundedRectangle))
.controlSize(.extraLarge) β New extra-large button size
.controlSize(.small) on containers β Preserve pre-iOS 26 density
// Static ticks with labelsSlider(value: $value,in:0...10){Text("Rating")} ticks:{SliderTick(0){Text("Min")}SliderTick(5){Text("Mid")}SliderTick(10){Text("Max")}}// Dynamic ticks from collectionSliderTickContentForEach(stops, id:\.self){ value inSliderTick(value){Text("\(Int(value))Β°").font(.caption2)}}// Step-based ticks (called for each step value)Slider(value: $volume,in:0...10, step:2, label:{Text("Volume")}, tick:{ value inSliderTick(value){Text("\(Int(value))")}})
API constraint: SliderTickContentForEach requires Data.Element to match SliderTick<V> value type. For custom structs, extract numeric values: chapters.map(\.time) then look up labels via chapters.first(where: { $0.time == time }).
Full-Featured Slider
Slider( value: $rating,in:0...100, neutralValue:50,// Starting point / center value enabledBounds:20...80,// Restrict selectable range label:{Text("Rating")}, currentValueLabel:
Implementation Guide
Prerequisites
βΊClaude Desktop or compatible AI client with skill support
βΊClear understanding of task or problem to solve
βΊWillingness to iterate and refine outputs
Time Estimate
15-45 minutes depending on use case complexity
Steps
1Install skill using provided installation command
2Test with simple use case relevant to your work
3Evaluate output quality and relevance
4Iterate on prompts to improve results
5Integrate into regular workflow if valuable
Common Pitfalls
β Expecting perfect results without iteration
β Not providing enough context in prompts
β Using skill for tasks outside its intended scope
β Accepting outputs without review and validation
Best Practices
β Do
+Start with clear, specific prompts
+Provide relevant context and constraints
+Review and refine all outputs before using
+Iterate to improve output quality
+Document successful prompt patterns
β Don't
βDon't use without understanding skill limitations
βDon't skip validation of outputs
βDon't share sensitive information in prompts
βDon't expect skill to replace human judgment
π‘ Pro Tips
β Be specific about desired format and style
β Ask for multiple options to choose from
β Request explanations to understand reasoning
β Combine AI efficiency with human expertise
When to Use This
β Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
β Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
Learning Path
1Familiarize yourself with skill capabilities and limitations
2Start with low-risk, non-critical tasks
3Progress to more complex and valuable use cases
4Build expertise through regular use and experimentation