Weekly Comment
Since beta 7, I’ve upgraded all my Apple devices to this year’s new system. After using it for a while, I felt this year’s update seemed much more stable than the past two years. However, it turns out this was just my personal illusion.
Over the past few days, with the official release of the new system, many developers have begun encountering various issues with their apps. Some problems are minor, but others are driving people crazy.
Developers seem to have grown accustomed to SwiftUI’s “quirky behavior” after every major update, showing much higher tolerance for these small glitches than before. At the same time, the new display mode has caused widespread issues with unadapted widgets, making interfaces more troublesome.
Compared to minor UI-level glitches, deeper crash issues have caught some developers off guard. Apps using SwiftData have seen a noticeable increase in crash frequency, undoubtedly disappointing many developers who had high hopes for the new framework. Even more surprising is that the fetchedProperties
feature in Core Data on iOS 18 can also cause crashes—quite unexpected for a framework that’s known for its stability.
Additionally, several well-known security applications have experienced varying degrees of network connection issues on macOS 15, with developers urging users not to upgrade for the time being. Based on current information, these companies don’t believe the problem is on their side, meaning they can’t provide a quick fix.
Compatibility issues after major system updates have become the norm. However, as system features and new frameworks continue to expand, these compatibility and stability issues are becoming more frequent. For users, this undoubtedly affects their experience; for developers, it’s more like a test of patience and perseverance.
We hope the entire ecosystem can strike a better balance between innovation and stability. After all, only with a healthy ecosystem can we all truly benefit.
May your app overcome this challenge and not be defeated by the new system.
Originals
Mastering Data Binning with Swift Charts
Data binning is a commonly used data processing technique that typically divides continuous numerical or temporal data into multiple intervals (which are mostly adjacent and non-overlapping). This method not only covers the entire data range but also provides clear demarcation for data points within each interval. By performing data binning, we can analyze, visualize, and statistically process complex datasets more effectively. This article will explore how to use the advanced APIs provided by Swift Charts to achieve precise and efficient data binning.
Recent Selections
Understanding Colors and Styles in Terminal Output
When building terminal tools, the ability to flexibly adjust the style of the output text not only enhances the visual experience but also significantly improves information delivery. In this article, Natan Rolnik provides a detailed explanation of ANSI Escape Codes and demonstrates how to modify terminal text’s foreground color, background color, and styles (such as bold and underline) using these codes. He also provides Swift code examples to show how these effects can be easily implemented.
How to pass Bindings to views in SwiftUI’s NavigationDestination modifier
Since iOS 16, SwiftUI has introduced a more robust programmatic navigation experience. Developers can use navigationDestination
to pass data types that conform to the Hashable
protocol to destination views. However, this constraint has led to challenges when passing Binding
values directly. In this article, Pol Piella Abadia introduces two different approaches for passing bindings to SwiftUI views and provides code examples and performance optimization tips to help developers handle navigation and data binding more efficiently in SwiftUI.
Getting started with SwiftPM Snippets
SwiftPM Snippets, introduced in 2022, is a feature of Swift Package Manager that allows developers to quickly prototype, debug, and document tasks using simple code snippets. Through platforms like Swiftinit, these snippets can be rendered as interactive examples with clickable references, allowing readers to engage and learn from the code. In this article, Dianna Ma provides a detailed introduction to the usage of Snippets and discusses how they can optimize the development process, particularly in multi-module or complex projects.
A Strategy for Moving to Swift 6 and async/await
In this article, Quentin Zervaas shares his strategy and techniques for migrating to Swift 6, helping developers transition their code from using completion handlers to Swift’s async/await
asynchronous model. The article covers the use of Xcode’s “Add Async Wrapper” tool to generate async
versions of functions and the gradual deprecation of old methods using @available
. Quentin emphasizes the importance of maintaining two versions of a function during the early stages of migration to ensure a smooth transition from older calls to the new async
versions, ultimately achieving a full async transformation.
An Ode To Cocoapods And Realm
Recently, CocoaPods announced it was entering maintenance mode, and MongoDB revealed that support for Realm (now called Atlas Device SDK) would end in 2025. In this article, Danny Bolella pays tribute to these two SDKs that had a profound impact on the development community. Danny reflects on how CocoaPods simplified dependency management, driving modular evolution in iOS development, while Realm transformed mobile data persistence with its lightweight, high-performance storage solution. The article also explores the reasons behind their gradual shift towards maintenance or termination and offers alternative solutions for developers.
Insetting Scrollable Views’ Content With contentMargins In SwiftUI
Starting with iOS 17, developers can use the contentMargins
modifier to flexibly set margins around the content of scrollable views such as ScrollView
, List
, and TextEditor
, optimizing layout. In this article, Gabriel Theodoropoulos provides a detailed guide on how to use this modifier, demonstrating how to adjust margins with different parameters, along with comprehensive code examples.
iOS ≥ 18 NSAttributedString attributes Range Behavior Change
In iOS 18, the mechanism for merging attributes in NSAttributedString
has changed, leading to crashes when developers process attributes with Range
. Harry Li analyzes this issue and points out that, starting in iOS 18, the system references the Equatable
implementation of the attribute values when merging Range Attribute
. This behavior was not present in iOS 17 and earlier versions.