SwiftUI
Learn more and get better in building apps with SwiftUI.
SFSafariViewController in SwiftUI: Open webpages in-app
SFSafariViewController can be used to let your users open webpages in-app instead of in an external browser. While the view controller works great for UIKit, getting it to work in a SwiftUI app might be challenging. Whenever you're running into cases where a UIKit solution is available only, you want ...
Debugging SwiftUI views: what caused that change?
Debugging SwiftUI views is an essential skill when writing dynamic views with several redrawing triggers. Property wrappers like @State and @ObservedObject will redraw your view based on a changed value. This is often expected behavior, and things look like they should. However, in so-called Massive SwiftUI Views (MSV), there could ...
App Intents Spotlight integration using Shortcuts
App Intents have been new since iOS 16 and offer a programmatic way to service your app's content and functionality to Siri and the Shortcuts app. New in iOS 17 is the option to surface App Shortcuts integrated into Spotlight, making your app's functionality even more discoverable. App Intents are ...
ContentUnavailableView: Handling Empty States in SwiftUI
ContentUnavailableView is a SwiftUI view introduced in iOS 17 during WWDC 2023. It allows you to handle cases of networking failure or empty search results. It's essential to explain an empty state and its cause to your users. While you can generate custom empty states, reusing standard SwiftUI components is ...
Universal Links implementation on iOS
Universal Links allow you to link to content inside your app when a user opens a particular URL. Webpages will open in the app browser by default, but you can configure specific paths to open in your app if the user has it installed. Redirecting users into your app is ...
Deeplink URL handling in SwiftUI
Deeplinks allow you to open your app and navigate into a specific location right after launch. An example could be deep linking to a recipe or movie based on the tapped link. You can determine the destination page based on the metadata provided by the URL. You can use a ...
View Composition using ViewModifiers in SwiftUI
View Composition allows you to create reusable components to create enriched views. You can extract logic into reusable components using the ViewModifier protocol in SwiftUI and set up your code for reusability. I've been developing a set of view modifiers in RocketSim to enable TextField customizations. Combining all modifiers results ...
Introducing Roadmap: Offer Public Feature Voting
Roadmap is a new open-source framework written completely in Swift and SwiftUI, allowing you to integrate feature voting functionality for your apps. While developing apps, spending your time on the most impactful features is essential. While the definition of impactful divers it's certainly driven by what your users want to ...
How to use FormatStyle to restrict TextField input in SwiftUI
A custom FormatStyle can help you control the allowed characters of a SwiftUI TextField. You might want to allow numbers only or a specific set of characters. While you could use a formatter in many cases, it's good to know there's a flexible solution using a custom FormatStyle implementation. In ...
Sheets in SwiftUI explained with code examples
Sheets in SwiftUI allow you to present views that partly cover the underlying screen. You can present them using view modifiers that respond to a particular state change, like a boolean or an object. Views that partly cover the underlying screen can be a great way to stay in the ...
Alternate App Icon Configuration in Xcode
Adding alternate app icons to your app allows users to customize their home screen with an app icon that fits their style. An alternative icon could be a dark or light-mode version of the original icon or a collection of completely different styles. iOS 10.3 was the first version to ...
Variable WidgetBundle configuration based on conditions
The WidgetBundle protocol inside WidgetKit allows you to configure supported widgets for your apps. Whenever you add one or more widgets, you'll have to add a @main struct conforming to this protocol. Like SwiftUI views, you'll return the supported widgets inside the body computed property. You'll not have issues with ...