Re: đź’¬ More human error messages, MCP, and DI for iOS Apps
Hey everyone!
I’ve just returned from iOSKonf25 in Skopje, Macedonia, and I am still blown away. It was one of the best organised conferences I’ve been to, with great talks, a friendly community, amazing hosts, and a beautiful city.
Going to conferences is a great way to meet new people - or meet people in real life who you’ve only known online! It was really heartwarming to meet some of the people who watch my livestreams, and hear from you what you like and how I can improve my content.
Speaking of which - the next livestream will be on Monday, May 19th, 20:00 CEST - one day before the Google I/O keynote!
After a couple of weeks of traveling, it’s time for a new livestream! Cloud Functions for Firebase now support streaming, which is particularly useful for LLM-powered applications. In this episode, I will look into using this feature to improve the usablity of the Q&A feature of the Second Brain app I am working on.
I love Paul’s summaries of what’s coming in future releases of Swift - they provide a concise overview of what’s (likely) coming in future releases of Swift, including code snippets to explain how the new language features work.
This next release of the language will introduce changes to Swift concurrency that will (hopefully) make it easier to adopt, and a bunch of quality of life improvements such as default values in string interpolations.
I am particularly excited about Transactional Observation of Values (SE-0475), which will make it easier to observe changes to values outside of SwiftUI - as you probably can tell: I linked to no less than three articles in the past (in issue 47, 70, and 71) that showed how to implement this yourself! It’s good to have an official implementation that is part of the language.
Cihat GĂĽndĂĽz has been working on a project called ErrorKit, which is a tool that maps system errors to clearer, more helpful descriptions (I wrote about this in issue 80).
“Only worry about what you can control” - we obviously cannot control the error messages in Apple’s closed source implementations, but thanks to ErrorKit, it is possible to convert cryptic error messages into more meaningful ones for any framework or library.
In this article, Cihat describes how you (yes, YOU!) can contribute to making Swift’s error messages more human-friendly for everyone. This also works for third-party libraries and frameworks, by the way!
This article provides a good overview of what Dependency Injection is, why it’s important, which types of dependency injection are available to Swift developers, and how to implement it in your apps.
If you’ve seen my talk Why every SwiftUI developer should care about the Environment at iOSKonf 2025, you might remember that I briefly touched on dependency injection in the context of SwiftUI’s Environment. The SwiftUI Environment allows you to inject dependencies into your views, and can be considered a form of dependency injection. However, as the article points out (and as many of us can confirm from own, painful experience), using the SwiftUI Environment has two major drawbacks: it provides no guaratees about the existence of a dependency, and it is tightly coupled to SwiftUI.
As Pawel Kozielecki points out, the SwiftUI Environment is not the best option for dependency injection, and you should consider using one of the other options discussed in the article.
With Model Context Protocol (MCP), you can connect LLMs to apps, allowing you to provide contextual information to the LLM. I’ve covered MCP before in previous issues of this newsletter, and even started building an MCP server that allows you to connect Apple’s Keynote app to an LLM, allowing you to generate an entire slide deck by just talking to a model.
If you thought that MCP just works with desktop apps, you’re wrong! In this article, Artem shows how to implement MCP in an iOS app that fetches data from HealthKit - pretty cool, just think about the use cases this unlocks!
If you’d like to learn more about MCP, come to my talk Beyond Prompts: Building Intelligent Applications with Genkit and the Model Context Protocol at AI Heroes 2025 in Turin on May 27th!
In this episode of The Verge’s Decoder podcast, Nilay Patel sits down with John Gruber to discuss the future of the App Store. The conversation explores how Apple’s massive scale and shift toward digital services have created new challenges for the company, both in terms of regulatory scrutiny and developer relations.
At around the 53 minutes mark, they discuss the launch of Apple Intelligence, Siri, and whether or not Apple still can rely on the goodwill of the developer community for adopting App Intents.
John makes a great point about the relationship between Apple and the developer community:
[Developers] should not in theory see Apple as their competitor. They should see Apple as their partner and they should be like, “Yeah, this is a partner we really like working with.”
From a financial standpoint, both Nilay and John seem to be very doubtful whether any developer sees the 70/30 split in favourable light.
We’re well into 2025, and the conference season is in full swing. I’ve compiled a list of iOS and Swift conferences happening in 2025. Whether you’re looking to speak, attend, or just stay informed about the community, here’s what’s coming up:
Happening this week
SwiftCraft, 19th-21th May, Folkestone, UK 🇬🇧
Some conferences are still finalizing their dates and details. I’ll keep this list updated as more information becomes available. If you know of any conferences that should be included, please let me know!