WWDC 2025: Liquid Glass, a version number reset, and a local model API
Apple renumbers every OS to 26, redesigns everything, and quietly ships the most developer-relevant thing in years.
Apple's developer conference delivered a visual redesign, a version-numbering change, and an API that matters more than either.
the version reset#
Every OS jumps to 26: iOS 26, macOS 26 Tahoe, watchOS 26, tvOS 26, visionOS 26. Year-based, aligned across platforms, matching the model-year convention.
Genuinely good housekeeping. "Requires iOS 17, macOS 14, watchOS 10" was needlessly hard to reason about. Now it is one number.
Liquid Glass#
A system-wide redesign built around translucent, refractive material that reacts to content behind and beneath it. Controls float. Layers have depth. Things bend light.
Reactions split predictably. It is undeniably a strong visual identity and the first genuinely new direction since iOS 7 flattened everything in 2013. It is also, in the first betas, a legibility problem in a lot of contexts — text over a refractive layer over a busy background is exactly the situation typography guidance has warned about for a century.
Apple will iterate through the beta cycle. They always do. Contrast will be raised, blur will be increased, and the shipping version will be about 70% of the demo. That is the normal arc and knowing it saves you from having the argument twice.
For developers: if you use standard controls you get it for free. If you built custom UI, budget real time. Custom navigation bars and tab bars in particular are going to need work.
Foundation Models framework#
Here is the actual news. Apple exposes the on-device model to third-party apps via a Swift API, with guided generation, tool calling, and streaming.
import FoundationModels
@Generable
struct Recipe {
@Guide(description: "Dish name") var name: String
@Guide(.count(3...8)) var ingredients: [String]
var minutes: Int
}
let session = LanguageModelSession()
let recipe = try await session.respond(to: "A quick pasta dish", generating: Recipe.self)That @Generable macro is the good part. You define a Swift type, the framework constrains decoding so the output is guaranteed to parse into it. No JSON parsing, no retry loop for malformed output, no schema drift between your prompt and your struct. Type safety all the way through.
And it costs nothing per call. No API key, no rate limit, no network, no privacy review. For a small on-device model that is enough for summarization, classification, extraction, and simple generation, that changes the calculus for a huge number of app features that were previously not worth a server bill.
The model is small — roughly 3B parameters — and you should not expect frontier behavior. Expect a good small model that is free and private, and design features that fit that envelope.
Containerization#
A framework for running Linux containers on macOS with each container in its own lightweight VM, open source, with sub-second start times. Docker Desktop on macOS has been a performance complaint for a decade. This is Apple's answer and it is architecturally cleaner: per-container VMs rather than one shared Linux VM.
Xcode 26#
Model integration in the editor with support for multiple providers including Claude, plus a new coding assistant experience. Apple shipping first-party support for a competitor's model inside its own IDE is notable — it means they have concluded the model layer is a component, not a differentiator.
the read#
Consumer-facing, this was a design conference. Developer-facing, it was the conference where Apple's local-first AI strategy finally produced something you can build on.
The strategy is coherent: small models on device, free and private, with the big stuff handled elsewhere. It is not going to win benchmark comparisons and it was never trying to.
— Dom, June 10, 2025