$ cat mobile/month/2026-08-01.log
the month in review · August 2026
Swift and Flutter steady runtimes; Kotlin locks down builds
August brought a pair of quiet but critical releases: Swift trimmed its standard library and sped up refcount tests, while Flutter fixed Metal crashes and shipped analyzer migrations.
Swift's standard library shed ThreadLocalStorage entirely, favoring platform-backed concurrency in embedded contexts [1][2]. The move removes dead code paths that were never fully wired; code that relied on internal ThreadLocalStorage symbols will see them disappear. Separately, the runtime's long refcount tests got faster by refcounting in bulk, cutting test wall time without changing runtime behavior . A silent miscompile in OSSA ownership was fixed, and lifetime dependencies on `let` properties were enabled, meaning region isolation notes now fire where they previously stayed silent . One type-checker refinement: type join now considers toll-free bridging, so code that mixes Foundation and Core Foundation types may produce different, more accurate common supertypes .
Flutter focused on stability across platforms. The most visible change reverted a platform-view rendering improvement after introducing regressions: non-rect platform views on iOS should render as before, at the cost of the earlier visual enhancement [3]. Metal rendering on iOS also got a fix: Impeller now skips binding resources that dead-code elimination has removed, preventing crashes tied to stale bindings [6]. Platform-view flakes when backgrounding and a macOS text-input crash were also resolved, and a ProMotion display crash patch landed [4][5]. Flutter's GPU pipeline validation is stricter: invalid render pipelines raise Dart errors immediately, and per-draw pipeline state is memoized, cutting redundant work [7].
The engine's tooling matured. The analyzer plugin migration is complete: legacy checks no longer ship as built-in analyzer checks and are now distributed as IDE rules [8]. The new actions handler shipped earlier is broken, per the Flutter team, and a fix is expected. On the web, a server race condition was fixed, and ICU was rolled forward .
Kotlin hardened its JVM and build tooling. Reflection now correctly finds underlying fields for inline classes, fixing a long-standing lookup bug [9]. Kotlin also fixed a Swift PM lock-file issue: when switching from an `exact` version to a `from` range, the lock file is now honored [10]. Gradle 8.13 support was dropped, so projects pinning that version must move to a supported one before upgrading . Kotlin's JS/Wasm companion object initialization was aligned with the JVM, reducing platform surprises .
References
- [1] [stdlib] Remove standard library's ThreadLocalStorage ↗ apple/swift
- [2] [Embedded] Enable platform-backed threading in Concurrency ↗ apple/swift
- [3] Revert "Improve non rect platform view rendering (#182662)" ↗ flutter/flutter
- [4] iOS: Fix flake when backgrounding platform views (#190816) flutter/flutter
- [5] iOS: Serialise CADisplayLink access in VSyncClient tests ↗ flutter/flutter
- [6] [Impeller] Skip binding dead-code-eliminated resources on Metal ↗ flutter/flutter
- [7] [Flutter GPU] Raise Dart errors for invalid render pipelines and memoize per-draw pipeline state ↗ flutter/flutter
- [8] Migrate test rules to analyzer plugin (#191038) ↗ flutter/flutter
- [9] JVM/Reflection: fix underlying field search for inline classes ↗ JetBrains/kotlin
- [10] [KT-88154] Swift PM lock file is ignored on switching version from `exact` to `from` JetBrains/kotlin
$ ls mobile/month/ # the briefings behind this review