# app state (blogs) — RSS Amplifier

Recent posts from the 1 feeds in the RSS Amplifier directory that cover app state.

Page: <https://rssamplifier.com/topics/app-state/blogs>  
Feed: <https://rssamplifier.com/topics/app-state/blogs.md>

---

## [Observation Framework in Swift](https://wesleydegroot.nl/blog/observation-framework-in-swift)

_2026-07-09 · Wesley de Groot_

The Observation framework is a modern Swift feature that provides automatic change tracking for observable objects. It replaces ObservableObject with a cleaner, more efficient approach using Swift macros. What is the Observation Framework? Introduced in iOS 17, the Observation framework uses the @Observable macro to automatically track property changes. It eliminates boilerplate code like…

## [Voice Control](https://wesleydegroot.nl/blog/voice-control)

_2026-07-09 · Wesley de Groot_

Voice Control enables users to navigate and interact with their devices entirely through voice commands, without touching the screen or using a keyboard. In this post, we'll explore how to ensure your SwiftUI apps work seamlessly with Voice Control, making them accessible to users with motor impairments and those who prefer hands-free interaction. What is Voice Control? Voice Control is an…

## [Searchable Modifier in SwiftUI](https://wesleydegroot.nl/blog/searchable-modifier-in-swiftui)

_2026-07-09 · Wesley de Groot_

The searchable modifier in SwiftUI makes it easy to add search functionality to your views. It provides a native search experience with automatic keyboard handling, search suggestions, and integration with the navigation bar. What is the searchable Modifier? The searchable modifier, introduced in iOS 15, adds a search field to your view. It integrates seamlessly with NavigationStack and List…

## [Accessibility in SwiftUI](https://wesleydegroot.nl/blog/accessibility-in-swiftui)

_2026-07-09 · Wesley de Groot_

Accessibility in app development is all about making sure everyone, regardless of their abilities, can use your app. Apple’s SwiftUI framework makes integrating accessibility features more streamlined. Here, we'll explore key strategies to make your SwiftUI apps more inclusive. Understanding Accessibility Accessibility isn't just a checklist; it’s a mindset. Think of it as designing for the…

## [Building xcstrings-translator](https://wesleydegroot.nl/blog/building-xcstrings-translator)

_2026-07-09 · Wesley de Groot_

xcstrings-translator is a tool to (easily) translate .xcstrings files, It is a GUI tool, written in Swift and SwiftUI to translate .xcstrings files to different languages using Apple's Translation Framework . Idea The idea behind this tool is to provide a simple and easy way to translate .xcstrings files. The tool should be able to read the .xcstrings file, my original idea was to make this a…

## [Swift Package: FilePicker](https://wesleydegroot.nl/blog/swift-package-filepicker)

_2026-07-09 · Wesley de Groot_

FilePicker is a Swift Package to open and save files in SwiftUI. It provides a simple way to open and save files in SwiftUI views. Installation To install FilePicker, add it to your Package.swift file: dependencies: \[ .package(url: "https://github.com/0xWDG/FilePicker", branch: "main") \] Use Case: Open a file Opening a file: import SwiftUI import FilePicker struct ContentView: View { // MARK:…

## [Translation framework in Swift](https://wesleydegroot.nl/blog/translation-framework-in-swift)

_2026-07-09 · Wesley de Groot_

Exploring the Translation Framework in Swift With the release of iOS 17.4, Apple introduced the Translation framework , a powerful tool that allows developers to integrate text translation capabilities directly into their Swift applications. This framework leverages CoreML models to perform on-device translations, ensuring fast and secure translations without the need for an internet connection.…

## [Protocol Extensions in Swift](https://wesleydegroot.nl/blog/protocol-extensions-in-swift)

_2026-07-05 · Wesley de Groot_

Protocols describe capabilities that types can adopt. Protocol extensions let you provide shared behavior for those types without requiring a common superclass. Defining a Protocol This protocol describes anything that can produce a display title: protocol Displayable { var name: String { get } var subtitle: String? { get } } Every conforming type must provide the required properties. Adding…

## [Error Handling in Swift](https://wesleydegroot.nl/blog/error-handling-in-swift)

_2026-07-05 · Wesley de Groot_

Swift uses typed errors and throw to represent operations that can fail. Handling those failures explicitly makes code easier to understand and gives your app a chance to recover. Defining an Error An enum is a convenient way to describe the possible failures: enum ValidationError: Error { case emptyName case invalidEmail case passwordTooShort(minimumLength: Int) } Throwing Errors Mark a function…

## [URLSession with async await](https://wesleydegroot.nl/blog/urlsession-with-async-await)

_2026-06-07 · Wesley de Groot_

Modern Swift makes network requests easier to read with async and await . URLSession provides asynchronous methods that return data and a response without completion handlers. Creating a Network Model The response model should conform to Decodable : struct Todo: Decodable, Identifiable { let id: Int let title: String let completed: Bool } Fetching Data Create a request, validate the response, and…

## [Refer a Friend, Earn Rewards (Sponsored)](https://crawlproof.com/a/s6qJInYF4K18)

_2026-06-07 · **Sponsored**_

Earn rewards when a friend signs up for the Graphite Business Card

## [Custom Codable Implementations in Swift](https://wesleydegroot.nl/blog/custom-codable-implementations-in-swift)

_2026-06-07 · Wesley de Groot_

Swift's Codable protocol makes converting models to and from JSON straightforward. The compiler can synthesize most implementations, but APIs do not always use the same names and structure as your app. In those cases, a custom implementation gives you full control. Renaming JSON Keys Use a CodingKeys enum when a JSON key differs from the Swift property name: struct User: Codable { let id: Int let…

## [App Lifecycle Management in iOS](https://wesleydegroot.nl/blog/app-lifecycle-management-in-ios)

_2026-04-13 · Wesley de Groot_

The iOS app lifecycle defines how your app transitions between states—from launch through background and termination. Handling these transitions correctly lets your app save user data at the right moment, release resources when backgrounded, and resume without surprises. UIKit App Lifecycle The UIKit app lifecycle revolves around the AppDelegate and SceneDelegate: @main class AppDelegate:…

## [Custom Operators in Swift](https://wesleydegroot.nl/blog/custom-operators-in-swift)

_2026-04-13 · Wesley de Groot_

Custom operators in Swift allow you to define your own operators or overload existing ones to create expressive, domain-specific syntax. Understanding how to create and use custom operators can make your code more readable and concise when used appropriately. This is an advanced topic. Before creating custom operators, consider whether a named function would be clearer — custom operators can make…

## [Swift Testing Framework](https://wesleydegroot.nl/blog/swift-testing-framework)

_2026-04-13 · Wesley de Groot_

Testing is how you verify your code works correctly and keeps working as you make changes. Swift provides XCTest for unit and UI testing, and Swift 5.9+ introduced the new Swift Testing framework with improved syntax and features. XCTest Basics The traditional testing framework in Swift: import XCTest class CalculatorTests: XCTestCase { var calculator: Calculator! override func setUp() {…

## [Combine Framework Essentials](https://wesleydegroot.nl/blog/combine-framework-essentials)

_2026-04-13 · Wesley de Groot_

Combine is Apple's functional reactive programming framework that provides a declarative Swift API for processing values over time. It simplifies handling asynchronous events like network responses, user input, and notifications. Combine requires iOS 13+ and has a steeper learning curve. Reactive programming (a style of programming around data streams and change propagation) is a key concept here.…

## [Result Builders in Swift](https://wesleydegroot.nl/blog/result-builders-in-swift)

_2026-04-13 · Wesley de Groot_

Result builders (formerly known as function builders) are a powerful Swift feature that enables you to create elegant domain-specific languages (DSLs). They're the magic behind SwiftUI's declarative syntax and can be used to build your own custom DSLs. This is an advanced Swift feature (requires Swift 5.4+; platform availability depends on the APIs you use, such as SwiftUI). Familiarity with…

## [Property Wrappers Deep Dive](https://wesleydegroot.nl/blog/property-wrappers-deep-dive)

_2026-04-13 · Wesley de Groot_

Property wrappers are a Swift feature that allows you to define reusable logic for getting and setting property values. They reduce boilerplate code and enable elegant solutions for common patterns like lazy initialization, validation, and persistence. This post is a deep dive suited for intermediate to advanced Swift developers who already have basic familiarity with property wrappers. What are…

## [Welcome 2026](https://wesleydegroot.nl/blog/welcome-2026)

_2026-04-13 · Wesley de Groot_

Welcome to 2026! I hope you'll all have a fantastic year and that all your wishes may become true. We're going to start this year with accessibility in mind. Stay tuned for more updates and exciting content throughout the year. Date Topic 06-JAN-2026 Dark Mode 13-JAN-2026 Reduced Motion (plus prefers-reduced-motion CSS media query for your websites!) 20-JAN-2026 Sufficient Contrast 27-JAN-2026…

## [Dark Mode](https://wesleydegroot.nl/blog/dark-mode)

_2026-04-13 · Wesley de Groot_

Dark Mode is an important feature that many users appreciate for its aesthetic appeal, and for people with visual impairments. When do we need Dark Mode support? Dark Mode support is essential. supporting Dark Mode can enhance accessibility for users with visual impairments who may find it easier to read content on a dark background. How to implement Dark Mode in SwiftUI Implementing Dark Mode in…

## [AsyncImage in SwiftUI](https://wesleydegroot.nl/blog/asyncimage-in-swiftui)

_2026-04-05 · Wesley de Groot_

AsyncImage is a SwiftUI view that simplifies loading and displaying images from remote URLs. It handles the asynchronous nature of network requests, provides loading states, and manages caching automatically. What is AsyncImage ? AsyncImage is a SwiftUI view introduced in iOS 15 that loads and displays images from a URL asynchronously. It eliminates the need for manual URLSession code and state…

## [Recipe PDFs Ready Fast (Sponsored)](https://crawlproof.com/a/5q1E4GisO7gd)

_2026-04-05 · **Sponsored**_

Turn online or personal recipes into clean, printable PDFs in seconds.

## [Semantic Accessibility in SwiftUI](https://wesleydegroot.nl/blog/semantic-accessibility-in-swiftui)

_2026-03-30 · Wesley de Groot_

SwiftUI does a lot of accessibility work for you automatically, but understanding how to add semantic meaning — labels, hints, values, and element grouping — takes your app's accessibility from good to great. Why Semantics Matter Assistive technologies like VoiceOver rely on the semantic description of your UI to convey meaning to users. A button with only an icon has no inherent meaning to…

## [Dependency Injection in Swift](https://wesleydegroot.nl/blog/dependency-injection-in-swift)

_2026-03-30 · Wesley de Groot_

Dependency Injection (DI) is a design pattern that helps create loosely coupled, testable code by passing dependencies from the outside rather than creating them internally. Using DI makes iOS applications easier to maintain and test. What is Dependency Injection? DI is about providing objects with their dependencies rather than having them create dependencies themselves: // Without DI - tight…

## [Swift Concurrency Best Practices](https://wesleydegroot.nl/blog/swift-concurrency-best-practices)

_2026-03-30 · Wesley de Groot_

Swift Concurrency provides modern tools for handling asynchronous code through async/await, actors, and structured concurrency. Following best practices ensures your concurrent code is safe, efficient, and maintainable. Understanding Swift Concurrency Swift Concurrency introduces language-level support for asynchronous programming. It makes async code easier to write and understand while…

## [GeometryReader in SwiftUI](https://wesleydegroot.nl/blog/geometryreader-in-swiftui)

_2026-03-30 · Wesley de Groot_

GeometryReader is a SwiftUI view that provides access to the size and position of its parent container. It's essential for creating responsive layouts, custom alignments, and size-dependent views. What is GeometryReader ? GeometryReader is a container view that makes its child view aware of its size and coordinate space. It passes a GeometryProxy to its content closure, which you can use to query…

## [SwiftData Basics](https://wesleydegroot.nl/blog/swiftdata-basics)

_2026-03-30 · Wesley de Groot_

SwiftData is Apple's modern framework for data persistence, introduced in iOS 17. It provides a Swift-native way to model and persist data using macros and property wrappers, making it easier than ever to work with persistent data in your apps. What is SwiftData? SwiftData is a declarative framework for data modeling and management that leverages Swift macros. It replaces Core Data's complex setup…

## [ScrollView Performance in SwiftUI](https://wesleydegroot.nl/blog/scrollview-performance-in-swiftui)

_2026-03-30 · Wesley de Groot_

Slow scroll views are one of the most noticeable performance problems in SwiftUI apps. Optimizing them can make a significant difference, especially when dealing with large datasets or complex layouts. Understanding ScrollView Performance ScrollView in SwiftUI doesn't have built-in view recycling like UITableView or UICollectionView. This means all views are created upfront, which can lead to…

## [Custom Shapes in SwiftUI](https://wesleydegroot.nl/blog/custom-shapes-in-swiftui)

_2026-03-30 · Wesley de Groot_

Creating custom shapes in SwiftUI allows you to draw unique graphics and build creative user interfaces. By conforming to the Shape protocol, you can create reusable, scalable vector graphics that integrate seamlessly with SwiftUI's rendering system. What are Custom Shapes? Custom shapes in SwiftUI are types that conform to the Shape protocol. They define a path that SwiftUI can fill, stroke, or…

## [Focus State in SwiftUI](https://wesleydegroot.nl/blog/focus-state-in-swiftui)

_2026-03-30 · Wesley de Groot_

Managing focus state in SwiftUI is essential for creating accessible and user-friendly forms and interactive interfaces. The @FocusState property wrapper allows you to programmatically control which field has focus, improving keyboard navigation and user experience. What is @FocusState ? @FocusState is a property wrapper introduced in iOS 15 that enables you to track and control which view has…

## [TextField Styles in SwiftUI](https://wesleydegroot.nl/blog/textfield-styles-in-swiftui)

_2026-03-30 · Wesley de Groot_

SwiftUI provides various built-in text field styles that allow you to customize the appearance of text input fields. Understanding these styles helps you create consistent and polished user interfaces that match your app's design language. What are TextField Styles? TextField styles in SwiftUI are modifiers that change the visual appearance of text fields. SwiftUI includes several built-in styles…

## [Keyboard Navigation](https://wesleydegroot.nl/blog/keyboard-navigation)

_2026-03-30 · Wesley de Groot_

Keyboard navigation enables users to navigate and interact with your app using only a keyboard or assistive input devices. In this post, we'll explore how to implement comprehensive keyboard navigation support in SwiftUI, making your apps accessible to users with motor impairments, power users, and anyone who prefers keyboard-based interaction. What is Keyboard Navigation? Keyboard navigation…

## [Ask the crowd: AI or not (Sponsored)](https://crawlproof.com/a/fC09UDP57NQr)

_2026-03-30 · **Sponsored**_

Get a transparent verdict from verified humans via web, RSS, or API.

## [withAnimation](https://wesleydegroot.nl/blog/withanimation)

_2026-03-30 · Wesley de Groot_

withAnimation wraps state changes to produce smooth transitions. It's one of the most common ways to add animation to a SwiftUI view. Use Case A common use case for withAnimation is when you want to animate the appearance or disappearance of a view based on a state change. For example, you might want to animate a button that toggles the visibility of a text label. import SwiftUI struct…

## [Captions](https://wesleydegroot.nl/blog/captions)

_2026-03-30 · Wesley de Groot_

Captions and subtitles make video and audio content accessible to deaf and hard of hearing users, as well as non-native speakers and users in sound-sensitive environments. In this post, we'll explore how to implement caption support in your SwiftUI apps and respect user preferences for displaying captions. What are Captions? Captions (also called subtitles or closed captions) are text overlays…

## [Audio Descriptions](https://wesleydegroot.nl/blog/audio-descriptions)

_2026-03-30 · Wesley de Groot_

Audio descriptions provide narration of visual elements in video content, making it accessible to blind and low vision users. In this post, we'll explore what audio descriptions are, how to detect user preferences for them, and how to implement audio description support in your SwiftUI apps. What are Audio Descriptions? Audio descriptions (also called video descriptions or descriptive narration)…

## [Larger Text](https://wesleydegroot.nl/blog/larger-text)

_2026-03-30 · Wesley de Groot_

iOS lets users set their preferred text size system-wide through Accessibility settings. SwiftUI's dynamic type support handles most of this automatically — as long as you use semantic font styles like .body or .headline rather than fixed sizes. Why Larger Text? Larger text improves readability and accessibility for users with visual impairments or those who prefer bigger fonts for comfort. It…

## [Differentiate Without Color](https://wesleydegroot.nl/blog/differentiate-without-color)

_2026-03-30 · Wesley de Groot_

Color is a powerful design tool, but relying solely on color to convey information creates accessibility barriers for users with color blindness or low vision. In this post, we'll explore how to make your SwiftUI apps more accessible by ensuring that information is communicated through multiple visual channels, not just color alone. What is Differentiate Without Color? Differentiate Without Color…

## [VoiceOver](https://wesleydegroot.nl/blog/voiceover)

_2026-03-30 · Wesley de Groot_

VoiceOver is Apple's screen reader that enables blind and low vision users to navigate and interact with iOS, iPadOS, and macOS devices. In this post, we'll explore how to make your SwiftUI apps fully accessible to VoiceOver users by providing clear, descriptive labels and implementing proper accessibility support. What is VoiceOver? VoiceOver is a gesture-based screen reader that speaks aloud the…

## [Reduced Motion](https://wesleydegroot.nl/blog/reduced-motion)

_2026-03-30 · Wesley de Groot_

Reduced motion is an important accessibility feature that helps create a comfortable user experience for individuals sensitive to motion effects. What is Reduced Motion ? Reduced Motion is an accessibility feature available on iOS, macOS, and other Apple platforms that minimizes the amount of motion and animation in the user interface. This feature is designed to help users who may experience…

## [Sufficient Contrast](https://wesleydegroot.nl/blog/sufficient-contrast)

_2026-03-30 · Wesley de Groot_

Sufficient contrast makes your text and UI elements readable for everyone — especially users with low vision or color blindness. WCAG recommends a minimum ratio of 4.5:1 for normal text and 3:1 for large text. What is Sufficient Contrast ? Sufficient contrast refers to the difference in luminance or color that makes an object distinguishable from other objects and the background. In the context of…

## [The Identifiable Protocol in Swift](https://wesleydegroot.nl/blog/identifiable-protocol-in-swift)

_2026-01-22 · Wesley de Groot_

The Identifiable protocol is a fundamental building block in Swift and SwiftUI that enables unique identification of instances. Understanding how to effectively use Identifiable improves code clarity, enables powerful SwiftUI features, and provides type-safe identity management across your applications. Understanding Identifiable The Identifiable protocol requires a single property, id , that…

## [It's a wrap (2025)](https://wesleydegroot.nl/blog/its-a-wrap-2025)

_2025-12-31 · Wesley de Groot_

In 2025 I have written 68 articles! The most used tags are: SwiftUI , Swift , SwiftPM , macOS , iOS , January In January I've released 4 articles Apple version numbers (1 min) \[Tags: Apple , version numbers \] As you may know, Apple releases new versions of its operating systems every year. The version numbers are not always the same across all platforms, and they don't always follow the same…

## [Task.sleep() vs. Task.yield(): The differences explained](https://wesleydegroot.nl/blog/task-sleep-vs-task-yield-the-differences-explained)

_2025-12-22 · Wesley de Groot_

Task.sleep() vs. Task.yield() The differences explained What is Task.sleep() ? With Task.sleep() , you can suspend the execution of a task for a specified duration. This is useful when you want to introduce a delay in your asynchronous code, such as waiting for a certain condition to be met or simulating a long-running operation. What is Task.yield() ? With Task.yield() , you can voluntarily yield…

## [Make your app visible with alternative app names](https://wesleydegroot.nl/blog/inalternativeappnames)

_2025-12-02 · Wesley de Groot_

With INAlternativeAppNames , you can provide alternative names for your app so that the user can find your app more easily. Example you have a agenda app called Calendo You can provide alternative names like Calendar , Kalender or Agenda to help users discover your app through different keywords. How to implement Add the INAlternativeAppNames key to your app's Info.plist file and provide an array…

## [iOS Settings URL's](https://wesleydegroot.nl/blog/ios-settings-urls)

_2025-11-21 · Wesley de Groot_

This is a list of internal URLs for settings on your iPhone, iPad, ... Please note that this list will be updated if required, if you see something which is not right, please drop me a message and i'll try to fix it. I included a guide how to extract the newest data . Updated for iOS 26.1 (21-NOV-2025) Exposure Notifications prefs:root=EXPOSURE\_NOTIFICATION Picture in Picture…

## [Form in SwiftUI](https://wesleydegroot.nl/blog/swiftui-form)

_2025-10-17 · Wesley de Groot_

User input powers almost every app. From reminders to events, contacts, or sign-ups thats where Form comes in. A Basic Contact Form The simplest way to start is by grouping TextField inside a Form . SwiftUI automatically handles grouping, scrolling, and native styling. Form { Section { TextField("First name", text: $firstName) TextField("Last name", text: $lastName) TextField("Company", text:…

## [How to Position Views in SwiftUI](https://wesleydegroot.nl/blog/how-to-position-views-in-swiftui)

_2025-10-17 · Wesley de Groot_

Sometimes you want to position your views precisely within a SwiftUI layout. How to place your view on a specific coordinate You can use the position modifier to place a view at a specific point within its parent. import Swift struct ContentView: View { var body: some View { Circle() .fill(Color.blue) .frame(width: 100, height: 100) .position(x: 100, y: 100) } } Caveats Using the position modifier…

## [Tracking Screen Views in SwiftUI with a Custom ViewModifier](https://wesleydegroot.nl/blog/tracking-screen-views-in-swiftui-with-a-custom-viewmodifier)

_2025-10-17 · Wesley de Groot_

In this post we'll create a small extension to track which screens are being viewed in a SwiftUI application. Why Track Screen Views? Tracking screen views is essential for understanding user behavior within your app. By knowing which screens are viewed most often, you can make informed decisions about where to focus your development efforts, improve user experience, and ultimately drive…

## [Monospace digits](https://wesleydegroot.nl/blog/monospace-digits)

_2025-10-17 · Wesley de Groot_

Monospace digits are a type of font where each character takes up the same amount of horizontal space. This is particularly useful in programming and data presentation, as it allows for better alignment and readability of numbers. Use Case: Monospace Digits If you have a countdown timer in your app, using only Text will cause the digits to be misaligned as they change. By using a monospace font,…

## [Environment: OpenURL](https://wesleydegroot.nl/blog/environment-openurl)

_2025-10-17 · Wesley de Groot_

@Environment(\\.openURL) allows you to open URLs from your SwiftUI views. What is @Environment(\\.openURL) ? @Environment(\\.openURL) is a property wrapper that provides a way to open URLs in your SwiftUI application. It gives you access to the OpenURL environment value, which you can use to present a URL in the appropriate way for the current platform. struct ContentView: View {…

## [Quick actions in SwiftUI](https://wesleydegroot.nl/blog/quick-actions-for-swiftui)

_2025-10-17 · Wesley de Groot_

Quick actions are a powerful feature in SwiftUI that allows developers to add contextually relevant actions to their views. These actions can be triggered by user interactions, such as tapping and holding on a view, and can provide a more streamlined and efficient user experience. Static Quick Actions Static quick actions are predefined actions that can be added to a view without requiring any…

## [Picker in SwiftUI](https://wesleydegroot.nl/blog/swiftui-picker)

_2025-10-17 · Wesley de Groot_

The Picker is a SwiftUI view that presents a set of options for the user to choose from. It can be displayed as a dropdown menu, a segmented control, or a wheel, depending on the context and the number of options available. Use Case: Picker A common use case for Picker is to allow users to select a value from a predefined list. For example, you might use a Picker to let users choose their favorite…

