Issue #127

Apple at 50 and Me at 51

Cover for Weekly Issue 127

In less than half a month, Apple will celebrate its 50th birthday. Tim Cook has also published a short piece paying tribute to the journey of the past half-century. However, because of Apple’s image as a constant trendsetter, many people don’t realize that it is now a veritable elder statesman in the IT industry. Among the tech giants of its age, very few remain at the top-tier table today.

As a tech enthusiast who is only one year older than Apple, from the Apple II to today’s iPhone and MacBook, Apple’s products have accompanied me through most of my life. Strictly speaking, I wouldn’t call myself a hardcore Apple fan—I don’t feel regret if I don’t buy a new product on day one, I rarely stay up late to watch keynotes anymore, and I’m even less familiar with the exact specs of their newest devices. But looking back, at every major milestone in my life, I have naturally chosen Apple products, and in recent years, I have become a part of the Apple developer ecosystem.

To be honest, I haven’t entirely figured out where Apple’s enduring appeal to me comes from. Is it because I started using its products so early on? Is it its innovation, user experience, and overall vibe? Or is it Steve Jobs’ charisma? Truth be told, my choice today is driven purely by habit and instinct, much like the unspoken understanding between old friends—it simply no longer requires any specific reason.

Of course, Apple’s path of growth hasn’t always been smooth sailing; there have been valleys along the way. But one thing must be acknowledged: its corporate positioning over the past 50 years has remained almost completely unchanged—to create powerful tools for individuals and society. Even in the latest wave of AI, where Apple seems to have lost the first-mover advantage, as the core player connecting people to the digital world in that “last centimeter,” it still holds the capital to remain at the center of the table in the AI era. After all, we live in a physical world, and we need tangible hardware and personalized services to truly enjoy the fruits of technological progress.

Apple at 50 might offer an inspiration to other companies: rather than imitating its “cool” and “innovative” exterior, it is better to learn from its focus and persistence. Becoming a long-term companion to its users is perhaps the true secret to its success.

In all likelihood, ten years from now, when Apple turns 60 and I turn 61, I will still be using a Mac.

Happy Birthday, Apple!

This Week’s Sponsor

Native AI chat app — ultra-fast, privacy-first, 100+ pro features

One native app, 100+ AI models on Mac, iOS, and Android. Fast, keyboard-driven, no Electron. 25% off for a limited time with code FATBOBMAN25.

⚡️ Get BoltAI — 25% off ->

Original

Why I’m Still Thinking About Core Data in 2026

By 2026, Core Data has been around for 21 years. While many developers still use it, in modern Swift projects it increasingly feels like a relic of an earlier era. Concurrency still relies on layers of perform calls, model declarations are filled with boilerplate, and string-based predicates are always ready to trip you up. This article is not a defense of Core Data, nor an attempt to persuade new developers to adopt it. Instead, it’s more of a problem inventory: why do some developers still choose to stick with Core Data in 2026, and if we continue using it, what are the real issues we need to address today?

Recent Recommendations

Fortify Your App: Essential Strategies to Strengthen Security Q&A

During a security-focused event hosted by Apple’s Developer Center, several Apple engineers spent nearly six hours discussing application security and memory safety, covering topics such as modern security challenges and the defensive technologies available across Apple platforms. Anton Gubarenko compiled and organized a large portion of the developer Q&A from the session. The discussion touches on topics such as evaluating the security of third-party libraries, risks when storing data with UserDefaults or plist files, best practices for Keychain and file protection, the safe use of Swift unsafe APIs, and enabling Enhanced Security capabilities in Xcode. For developers interested in understanding Apple’s platform security model and practical recommendations, this is a dense and valuable collection of insights, many of them coming directly from Apple engineers.


Faster iOS Subscriptions with ASC CLI and RevenueCat MCP

Adding subscription support to an app isn’t particularly difficult, but configuring everything across both App Store Connect and RevenueCat can be surprisingly tedious. Rudrank Riyam introduces a more efficient approach: using the ASC CLI to create App Store Connect subscription products directly from the terminal, and then letting an AI agent configure the corresponding entitlements, offerings, and paywalls through RevenueCat’s MCP Server. This workflow effectively moves the entire setup process from manual dashboard interactions into a CLI + AI agent automation pipeline.


JetBrains Swift Developers Survey

JetBrains recently released a survey aimed at Swift developers, inviting them to share the tools they use, their development workflows, and the pain points they encounter in the Swift ecosystem. Although JetBrains has not explained the specific purpose of the survey, the community has already started to speculate that it may be related to a renewed evaluation of Swift development tooling support.

After JetBrains discontinued AppCode in 2022, most Swift developers returned to an Xcode-centric toolchain. This new survey has sparked some discussion: some developers hope JetBrains might revisit Swift tooling, while others suspect the effort could be more closely related to Kotlin Multiplatform or Swift build tooling. If you’re interested in the future direction of Swift development tools, you might want to take part in the survey.


How Well Can You Detect a Swift Protocol Without the Compiler?

Protocols are everywhere in Swift projects, but how reliably can you determine whether a Swift file defines or references a protocol without compiling the project or resolving its dependencies? In this article, Xiangyu Sun evaluates a variety of detection strategies, including SourceKit/LSP queries, SwiftSyntax AST parsing, simple keyword regex matching, and heuristic signals such as extension Foo: Bar or the any/some prefixes. Each method is analyzed in terms of accuracy and applicability.

One particularly interesting finding is that simple naming conventions can dramatically improve static analysis accuracy. If a team consistently uses a *Protocol suffix for protocol types (for example, PaymentServiceProtocol), many otherwise ambiguous heuristics become far more reliable. The author also explores how this convention can benefit AI-assisted development workflows: by pre-classifying protocol files before sending code to an LLM, it becomes possible to reduce token usage and improve analysis efficiency — an insightful perspective for teams experimenting with AI-driven tooling.


What you should know before Migrating from GCD to Swift Concurrency

Migrating from GCD to Swift Concurrency is not merely a matter of replacing syntax. In this article, Soumya Ranjan Mahunt highlights several important differences between the two concurrency models. Swift Concurrency differs from GCD in task scheduling, execution ordering, and concurrency semantics — differences that can introduce subtle data races or difficult-to-reproduce runtime issues during migration if not properly considered.

For example, Task scheduling does not guarantee the same FIFO execution order as GCD, and actor should not be viewed as a direct replacement for DispatchQueue, since task priorities and scheduling strategies can influence execution behavior. The article also discusses practical migration pitfalls, such as the lack of a direct equivalent to DispatchGroup in Swift Concurrency, and compatibility issues that may arise when using assumeIsolated on older system versions.


A 9-Step Framework for Choosing the Right Agent Skill

As AI agents become increasingly integrated into development workflows, designing the right “skills” (tools or capabilities) for those agents is emerging as a new engineering challenge. Antoine van der Lee proposes a nine-step framework to help determine when it actually makes sense to implement a dedicated agent skill.

As Antoine points out, not every task should be delegated directly to an LLM, and not every capability needs to become an agent tool. The framework evaluates factors such as task determinism, execution cost, reusability, and security considerations, providing a structured way to reason about when and how to extend an AI agent’s capabilities.

Tools

DataStoreKit

This is a particularly interesting open-source project developed by Anferne Pineda. It leverages SwiftData’s custom store capability to re-implement a SQLite-backed persistence engine while preserving SwiftData’s higher-level developer experience. The project maps SwiftData models, predicates, and queries to SQLite schemas, SQL execution, snapshots, and persistent history management.

DataStoreKit also introduces several noteworthy capabilities. For example, it supports predicate queries on collection types such as arrays and dictionaries by mapping them to JSON structures stored in SQLite. It also exposes a SQL passthrough layer, allowing developers to bypass #Predicate when necessary and directly execute SQLite queries or maintenance operations.

This is one of the few projects that explores SwiftData’s DataStore extensibility at significant depth, demonstrating how SwiftData can function as a data abstraction layer rather than a complete persistence engine. The project is still in an early stage and its APIs and capabilities may evolve, but it is already well worth watching.


Playwright for Swift

Developed by Miguel Piedrafita, swift-playwright brings the mature browser automation capabilities of Playwright into the Swift ecosystem. Developers can control Chromium, Firefox, and WebKit directly from Swift code to perform tasks such as page navigation, clicking, form input, screenshots, and JavaScript execution. The API design also closely mirrors the official Playwright interface.

Under the hood, the project does not re-implement a browser automation framework. Instead, it wraps the Playwright protocol on the Swift side while continuing to communicate with browsers through the Node.js Playwright driver. For developers interested in building testing tools, CLI utilities, or even AI agents using Swift, this project offers a compelling entry point.

Related Weekly

Subscribe to Fatbobman

Weekly Swift & SwiftUI highlights. Join developers.

Subscribe Now