๐Ÿซฃ Am I too late to share my thoughts on WWDC 2025? ๐Ÿ‘จโ€๐Ÿ’ป

WWDC
June 16, 2025
Sponsored

Try out Xcode 26 in your GitHub Actions with Cirrus Runners

Enjoy the fastest Apple Silicon M4 Pro chips at a fixed monthly price โ€” fully managed so you can focus on shipping great code. Start your free 10-day trial and get 50% off your first three months with code WWDC50.

This message is brought to you by a sponsor who helps keep this content free for everyone. If you have a moment, check them out โ€” your support means a lot!

Welcome to issue #49 of the iOS Coffee Break Newsletter ๐Ÿ“ฌ.

The most exciting week of the year for iOS developers has officially wrapped up! ๐Ÿฅน Between watching sessions and diving into technical write-ups, there is no shortage of opportunities to learn, experiment and get inspired!

Luckily, my team lead joined the fun and organized a full day dedicated to watching selected sessions together and sharing our takeaways. Naturally, we made sure to stock up on snacks and drinks to keep things more interesting!

The day turned out to be incredibly valuable โ€” we covered nine sessions in total and had some great discussions about how to approach our upcoming sprints.

Below, I have put together some thoughts on the frameworks and features that stood out to me:

Liquid Glass

Liquid Glass is a significant new step and evolution of the look and feel of Apple Software. It introduces a flexible, dynamic layer to apps and system experiences across Apple's ecosystem of products.

It merges different visual and interface elements throught Apple's software design history:

  • Aqua's tridimensional surfaces
  • iOS 7's visual layers
  • iPhone X's fluidity of gestures
  • Dynamic Island's motion dynamics and merge behaviors.

From what I have seen, this design has received widespread criticism on social media โ€” primarily for accessibility concerns such as poor contrast, visually overwhelming backgrounds and distracting animations.

That said, this is still a beta release, and I am confident Apple will refine and resolve these issues in the final version.

Foundation Models Framework

It is no surprise Apple delivered on-device model APIs, but the usability of the Foundation Models API genuinely impressed me! This new framework allows you to interact with an on-device Large Language Model (LLM) designed for everyday use cases. It is great for things like summarization, extraction, classification and more.

Using the model is incredibly straightforward โ€” it takes just three lines of code. Here is one example shared in one of Apple's sessions:

import FoundationModels
  
// start a language model session.
let session = LanguageModelSession()
 
// provide a prompt.
let prompt = "Generate a bedtime story about a fox."
let response = try await session.respond(to: prompt)
 
print(response.content)

On top of that, the @Generable macro makes defining structured outputs much easier, removing the usual pain of parsing model responses and streamlining the development process.

For more on how guided generation works, check out Meet Foundation Models framework talk.

I am genuinely excited to spend more time exploring this new framework. While I expect there will be some constraints given the size of the on-device LLM, the benefits of local execution and the wide spread of use cases make it especially attractive from a developer's perspective.

SwiftUI

SwiftUI has seen significant upgrades across multiple core areas this year, such as list, scrolling behavior, performance profiling and debugging tools. The framework has also broadened what views can do โ€” from rich text editing to 3D chart rendering, there are several exciting new view types and updates to existing ones.

One particularly welcome change is the ability to embed web content directly within SwiftUI apps. Apple has introduced a complete set of SwiftUI APIs for WebKit, including support for WebView.

Here is an example Apple highlighted during one of their sessions:

struct HikeGuideWebView: View {
	var body: some View {
		WebView(url: sunshineMountainURL)
	}
}

To learn more about all these new WebKit APIs, check session Meet WebKit for SwiftUI.

UIKit

In my opinion, the major enhancement is the built-in support for Swift Observable objects in UIKit. UIKit now integrates Swift Observation at its foundation: in update methods like layoutSubviews, it automatically tracks any Observable you reference, wires up dependencies, and invalidates the right views, without requiring you to manually call setNeedsLayout.

Here is a demonstration of automatic observation tracking in action:

// Using an Observable object and automatic observation tracking
@Observable class UnreadMessagesModel {
    var showStatus: Bool
    var statusText: String
}
 
class MessageListViewController: UIViewController {
    var unreadMessagesModel: UnreadMessagesModel
    var statusLabel: UILabel
    
    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
 
        statusLabel.alpha = unreadMessagesModel.showStatus ? 1.0 : 0.0
        statusLabel.text = unreadMessagesModel.statusText
    }
}

Swift

Swift improvements span various parts of the development workflow โ€” from writing code to building and debugging.

A key factor in developer productivity is how fast and efficient the tools are. Swift 6.2 delivers notable performance gains, especially for projects that make use of macro-based APIs. In many cases, clean build times have been dramatically reduced โ€” in some projects, by several minutes.

Xcode

This year, Apple is launching a new feature called Playground, designed to help you experiment with code more efficiently.

Much like previews, we can embed a playground directly within your document, and the output from running your code will be displayed in a dedicated canvas tab.

Personally, I find this tool incredibly handy โ€” I often need to step away from full Xcode projects just to try out a snippet of code. It also offers a more straightforward approach to testing code and can help spark ideas for writing better unit tests. Here is an example:

import Playgrounds
 
#Playground {
    let landmark = Landmark.exampleData.first
}

๐Ÿค Wrapping Up

Several other exciting features were announced as well, and I am eager to explore them in more depth over the coming week. I have bookmarked quite a few sessions that I haven't had a chance to watch yet ๐Ÿ˜….

Over the next few months, I plan to dive into the new APIs and share a more in-depth look at what they offer.

Have any feedback, suggestions, or ideas to share? Feel free to reach out to me on Twitter.

tiagohenriques avatar

Thank you for reading this issue!

I truly appreciate your support. If you have been enjoying the content and want to stay in touch, feel free to connect with me on your favorite social platform: