Skip to main content
WWDC26: Everything non-AI

WWDC26: Everything non-AI

· 13 min read
Practical guides for developers

WWDC26's AI announcements got most of the coverage, but the non-AI stack is larger and touches every Apple platform developer whether they use AI or not.

Swift 6.2 makes concurrency opt-in by default — a single compiler flag turns your module into a single-threaded program until you explicitly reach for parallelism. Liquid Glass rolls out across every Apple platform, and while standard components adopt it automatically, custom UI needs an explicit opt-in. macOS 27 gains a native OCI container CLI and open-source Containerization framework, the first time Apple has shipped first-party Linux container tooling.

Below that: iOS 27 extends swipe actions and drag-to-reorder to any SwiftUI container, visionOS 27 ships cloth simulation and a foveated streaming API for cloud content, and Metal gains neural rendering pipelines that enable GPU-side ML inference without CPU round-trips.

If you're deciding what to prioritise from WWDC26's non-AI announcements, here's the developer-focused rundown by platform tier.

What's new at WWDC26 for platform developers (quick reference)

WWDC26 · QUICK REFERENCEWhat's new for platform developersAREAKEY CHANGEPLATFORMSAVAILABLELiquid Glass.glassEffect() modifier; standard viewsauto-adopt; GlassEffectContainer for morphingAll platformsOS 27Swift 6.2-default-isolation MainActor; @concurrent;InlineArray; weak letAll platformsSep 2025SwiftUIswipeActions + reorder on any container;.crossFade nav; AsyncImage cachingiOS, iPadOS, macOSOS 27Container MachinesOCI container CLI + Containerization framework;VM-per-container; open sourcemacOS 27macOS 27PaperKitPaper-like writing surface framework for iPad;distinct from PencilKit canvasiPadOS 27iPadOS 27RealityKitCloth simulation; Projective Textures;foveated streaming; 90 Hz object trackingvisionOS 27visionOS 27Metal / GamesNeural rendering pipelines; MetalFX upscaling;Game Porting Toolkit 4; Metal 4.1macOS, iOS, tvOSOS 27WebKit 27CSS Grid Lanes; custom select; HTML modelelement; 1,000+ engine improvementsmacOS, iOSSafari 27All platform features ship with OS 27 / Xcode 27

Liquid Glass design system

Available on iOS 27, iPadOS 27, macOS 27, watchOS 27, visionOS 27

Liquid Glass is a new translucent, fluid material rolling out across all Apple platforms. Standard components adopt it automatically, but custom views need explicit opt-in via SwiftUI modifiers.

What's new for developers:

  • Standard SwiftUI components (buttons, tab bars, sheets) adopt Liquid Glass automatically with no code changes
  • .glassEffect() — apply to any custom view; default shape is a Capsule
  • .glassEffect(in: .rect(cornerRadius: 16.0)) — use a custom shape
  • .glassEffect(.regular.tint(.orange).interactive()) — tinted glass that reacts to touch and pointer like a standard button
  • GlassEffectContainer(spacing:) — group multiple glass views for better rendering performance and shape morphing
  • .glassEffectUnion(id:namespace:) — merge several views into a single glass shape at rest
  • GlassButtonStyle / .buttonStyle(.glass) — ready-made glass button appearance
  • Two transition types: .matchedGeometry (shapes morph into each other when within the container's spacing threshold) and .materialize (simpler appear/disappear for views farther apart)
  • Performance note: apply .glassEffect() after other appearance modifiers; too many ungrouped effects or containers degrades rendering

How glass morphing works

GlassEffectContainer(spacing:) is the key to fluid animations. When two glass-effect views are closer together than the container's spacing value, their shapes begin to blend at rest. Animate a view in or out and the shapes morph smoothly, merging as they approach and separating as they pull apart. Use .glassEffectID(_:in:) with a @Namespace to associate specific shapes across transitions, so SwiftUI animates the correct pairs when views appear or disappear from the hierarchy.


Swift 6.2 and SwiftUI

Swift 6.2 released September 2025; SwiftUI changes ship with OS 27

Swift 6.2's biggest change is a single compiler flag that turns your whole module into a single-threaded program until you explicitly opt in to parallelism, making concurrency approachable for the first time without rewriting existing code.

Swift 6.2 concurrency changes

  • -default-isolation MainActor compiler flag: the entire module runs on the main actor by default; external modules are unaffected, and URLSession and other async work still runs off the main thread
  • nonisolated async functions now run on the caller's actor (SE-0461); to get the old off-actor behaviour, mark the function @concurrent
  • Task.immediate {}: starts executing synchronously if already on the target executor, unlike a regular Task which queues to the next opportunity
  • isolated deinit: safely access actor-isolated state in a deinit; required for main-actor classes that need to clean up non-Sendable properties
  • Task naming: Task(name: "MyTask") {} — name appears in LLDB debugger and profiling tools via Task.name

The practical effect: new app targets in Xcode 27 can now default to Swift 6 language mode without concurrency warnings flooding existing code.

Swift 6.2 language additions

  • Raw identifiers (SE-0451): backtick any identifier name, including spaces and numbers — func `Strip HTML tags from string`() or case \404`` in an enum
  • Typed string interpolation default (SE-0477): "\(age, default: "Unknown")" works across mismatched types, unlike ?? which requires matching types
  • InlineArray (SE-0453): fixed-size, stack-allocated array — InlineArray<4, String> or the shorthand [4 of String]; no append() or remove(at:), iterate via indices
  • weak let (SE-0481): immutable weak reference; enables Sendable conformance on types that hold weak properties
  • Method key paths (SE-0479): strings.map(\.uppercased())
  • enumerated() as Collection (SE-0459): use directly in SwiftUI — List(items.enumerated(), id: \.offset) { ... }

Swift Testing in 6.2 adds exit tests (await #expect(processExitsWith: .failure) {}), test attachments (Attachment.record(result, named: "Label")), and raw identifier test names.

SwiftUI updates for OS 27

Swipe actions and drag-to-reorder, previously limited to List, now work on any container.

  • .swipeActionsContainer() on the parent + .swipeActions {} on any child view — works in ScrollView, LazyVStack, custom layouts
  • .reorderable() on items + .reorderContainer(for: T.self) { difference in difference.apply(to: &items) } on the parent
  • .navigationTransition(.crossFade) — joins .zoom as a built-in navigation transition
  • Tab(role: .prominent) — trailing-separated tab, similar to search
  • AsyncImage now caches automatically via HTTP caching protocols; customise with .asyncImageURLSession(session) on a parent view
  • New toolbar APIs: placement: .topBarPinnedTrailing, ToolbarOverflowMenu {}, .visibilityPriority(.high)
  • @State is now a Swift macro, avoiding repeated evaluation of the initial expression on view re-instantiation; back-deploys to iOS 17-aligned OSes

iOS 27 platform APIs

Available on iOS 27, iPadOS 27

iOS 27 and iPadOS 27 ship updates across commerce, health, writing tools, and camera that are individually targeted but collectively affect most production apps.

  • StoreKit: offer code redemption now returns VerificationResult<Transaction>; new Product.ProductType for subscription Bundles and Suites; Transaction.OwnershipType.assigned for volume purchases
  • HealthKit: two new Reproductive Health sample types — HKCategoryTypeIdentifierMenopausalState (values: menopause, perimenopause, none) and HKCategoryTypeIdentifierBleedingAfterMenopause
  • MetricKit: new Swift-first MetricManager API with AsyncStream of MetricReport and DiagnosticReport; new MetalFrameRateMetric per CAMetalLayer; old MXMetricManager is deprecated
  • Background Assets: localized asset packs deliver the right language assets automatically; On Demand Resources and NSBundleResourceRequest are now deprecated — migrate to Background Assets
  • Camera: high-resolution photo capture improvements, Center Stage front camera support
  • UIKit: apps built with the iOS 27 SDK must include a launch screen, and scene-based life cycle is now required — apps without it fail to launch
  • Shortcuts: updated APIs (session: "What's new in Shortcuts")
  • CarPlay: updated CPNavigationSession and CPMapPanel APIs (session: "Rev up your CarPlay app", 5.6k views)

PaperKit for iPad

PaperKit is a new iPadOS 27 framework for a paper-like writing surface, distinct from PencilKit's drawing canvas. Where PencilKit gives you a canvas for capturing and manipulating strokes, PaperKit is the surface itself: the feel of writing on paper in note-taking and writing apps. Full API details are in the "Unwrap PaperKit" WWDC26 session.


macOS 27

Available on macOS 27 (Tahoe)

macOS 27's most developer-significant addition is a native OCI container CLI and open-source Containerization framework, the first time Apple has shipped first-party Linux container tooling.

Container machines

Apple announced two separate things, and the distinction matters:

  • Containerization framework: a general-purpose Swift framework that could be adopted as a backend by Docker or other tools
  • container CLI: an OCI-compliant command-line tool for running Linux containers; not a Docker replacement

The architecture uses a VM-per-container model via macOS Virtualization.framework, with each container getting its own Kata Containers Linux kernel. Everything is written in Swift (no Go), with Protobuf for daemon communication. Container startup is around 0.7 seconds.

Key details:

  • Open source at github.com/apple/container
  • container system start to initialise the daemon, then container run alpine uname -a
  • No macOS containers, no iOS containers, no GPU passthrough (yet)
  • Image unpack is slower than Docker for large images
  • Missing quality-of-life features Docker and OrbStack have — Docker is not directly threatened at this stage

The VM-per-container model provides more isolation than Docker's single-VM approach, making it potentially better for production multitenant workloads, but more memory-intensive for a typical dev environment running several services at once.

Safari and WebKit 27

  • 1,000+ browser engine improvements
  • CSS Grid Lanes
  • Customizable <select> element
  • HTML <model> element for inline 3D spatial content in web pages
  • Build Safari web extensions with Xcode Cloud — no Mac required

visionOS 27

Available on visionOS 27

visionOS 27 extends RealityKit with physically-accurate rendering features, ships a new foveated streaming API for cloud content, and upgrades object tracking to 90 Hz.

  • Physical space lighting: virtual objects cast light onto physical surfaces in the room
  • Projective Textures API: apply textures to spotlights for effects like stained glass or underwater caustics
  • Real-time cloth simulation: physics-based simulation for flags, curtains, and clothing
  • Reverb Mesh API: spatial audio that models the acoustics of the actual physical room geometry
  • 3D Gaussian Splat rendering: photorealistic scans of real-world objects (note: the Gaussian Splat Component API is listed as "available in an upcoming release" — it is not in Beta 1)
  • Foveated streaming: session-based API streaming full-quality content only where the user is looking; OpenXR integration with NVIDIA CloudXR SDK; mix RealityKit content with streamed content in the same scene
  • Object tracking: up to 90 Hz, extended Create ML training for better accuracy, metric space pose API for surgical navigation and precision measurement
  • Reality Composer Pro 3: Live Preview on Apple Vision Pro while editing, visual scripting, deep Xcode integration

Foveated streaming

Foveated streaming addresses the bandwidth-quality tradeoff that makes high-resolution immersive content expensive to deliver. Rather than streaming the full scene at maximum quality, the API streams full resolution only at the user's gaze point and lower resolution at the periphery, where the eye's acuity is naturally lower anyway. The result is near-lossless perceived quality at a fraction of bandwidth. The OpenXR integration means existing CloudXR pipelines can connect without a full rewrite.


Games and Metal

Available on macOS 27, iOS 27, tvOS 27

Game Porting Toolkit 4 lowers the porting barrier; Metal's new neural rendering pipelines raise visual quality without proportional GPU cost.

  • Game Porting Toolkit 4: open source; agentic coding skills for Metal and Apple game development best practices baked in; AI-driven porting workflow built into Xcode 27
  • Metal neural rendering pipelines: real-time neural rendering; ML inference runs directly in Metal shaders on the GPU, with no CPU round-trips; MetalFX upscaling for temporal upscaling and anti-aliasing
  • Metal 4.1: now supported on iOS 27, iPadOS 27, and macOS 27
  • Cyberpunk 2077: announced for Mac in the WWDC26 keynote, showcasing the porting toolkit

Metal neural rendering pipelines

Running ML inference in Metal shaders means upscaling, denoising, and style effects execute on the GPU at shader time. The practical entry point for most game developers is MetalFX upscaling: render at a lower resolution and upscale with a neural network, recovering image quality at a fraction of the raw rendering cost. The session "Build real-time neural rendering pipelines with Metal" covers authoring custom neural rendering passes for more advanced use cases.


Xcode 27 and developer tools

Available on macOS (Xcode 27)

Outside of its AI features, Xcode 27 ships Device Hub for multi-device testing, Xcode Cloud improvements, and a VS Code Swift extension now officially distributed by Swift.org.

  • Device Hub: manage and test across multiple physical devices simultaneously from a single Xcode interface
  • Xcode Cloud: build and deliver Safari web extensions without a Mac; automated delivery pipeline improvements
  • VS Code Swift extension: now officially verified and distributed by Swift.org — background indexing, built-in LLDB debugging, Swift project panel, live DocC preview
  • Macro build performance: SwiftPM now supports pre-built swift-syntax, eliminating the expensive swift-syntax source rebuild in CI for macro-heavy projects
  • Async debugging: reliable step-into for async functions in LLDB even across thread switches; task context visible at breakpoints; named tasks surfaced in profiling tools
  • Warning control: .treatWarning("DeprecatedDeclaration", as: .warning) per diagnostic group in package manifests
  • SwiftData: no major new APIs in Beta 1

Which WWDC26 platform change affects your work?

If you ship any app on any Apple platform, Liquid Glass requires a UI audit before submitting against the iOS 27 SDK. Standard components adopt automatically, but any custom view with a non-standard background needs .glassEffect() to match.

If you write Swift, the -default-isolation MainActor flag in Swift 6.2 is the practical migration path for teams that have been avoiding the Swift 6 language mode because of concurrency warnings.

If you target iPad, PaperKit is worth evaluating even if you're not a drawing app. It's a first-class writing surface framework separate from PencilKit's drawing canvas.

If you're on macOS, Container Machines is an interesting new tool but not yet a Docker replacement. Watch the "Discover container machines" session before switching your dev workflow.

If you're in games, Metal neural rendering and Game Porting Toolkit 4 are worth a session watch now. The agentic porting workflow in GPTK4 is genuinely new ground.

All sessions referenced in this article are at developer.apple.com/wwdc26.

About the author

ST
Simple Tech GuidesPractical guides for developers

Simple Tech Guides publishes practical, developer-focused content on frameworks, tools, and platforms.