Subscribe to our monthly newsletter
Get exclusive Swift and SwiftUI tips, project updates, behind-the-scenes insights, and special discounts on our books — all in a monthly email from us.
Invalid email address
Unexpected server error
Subscribed!
Step through the essential setup for AlarmKit timers in iOS 26, from requesting authorization and scheduling a countdown to presenting the Live Activity and an in-app list of active timers.
Starting with Swift 6.2 and iOS 26, EnumeratedSequence conforms to RandomAccessCollection, allowing enumerated() to be used directly in ForEach and List views.
Build a stretchy image header in SwiftUI using the visualEffect() modifier, scaling the image on pull-down without tracking scroll offset or modifying its frame.
The new backgroundExtensionEffect() modifier in iOS 26 lets us extend and blur visual content beyond a view’s bounds, creating continuous backgrounds behind elements like sidebars, inspectors, and overlay controls.
Support large accessibility text by wrapping content in a scroll view, and prevent unnecessary bounce by enabling scrolling only when the content doesn’t exceed the screen size.
Quickly split long function calls or initializers into separate lines using a built-in Xcode shortcut.
SwiftUI uses a localized string matching the image name as the accessibility label, without needing to apply the accessibilityLabel() modifier.
Detect window focus with the appearsActive environment value to adjust UI and handle focus changes.
Implement a high-performance lazy scrolling list in SwiftUI by efficiently reusing views for smooth scrolling with large datasets.
Learn how to add Codable conformance to Swift enums, including automatic synthesis, customizations, and fully manual implementations for complex cases.
Explore different ways to work with SwiftUI environment, including reading and setting values, creating custom environment keys, and using the environment to pass down actions and observable classes.
Discover how to use the @Observable macro in SwiftUI and its advantages over ObservableObject, such as more efficient view updates and simplified code management.