[2026-10-06] eagle: work/notes/webkit-macos-version-mapping.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-06 16:27:43 +06:00
1 parent f6267b7c52
commit 0566f6b69b
1 file changed
+181 -183
+181 -183
View File
@@ -17,12 +17,34 @@ Evidence labels:
| Label | Meaning |
|---|---|
| `exact/tag` | Apple published an OS-specific WebKit source tag. The full five-part source version is known. |
| `exact/binary` | The OS build, WebKit UUID and `CFBundleVersion` were matched in Ravel. |
| `train` | The Safari/WebKit release family is known, but Apple has not published an exact OS-specific source tag. `.*` is intentional. |
| `exact/tag` | ✅ Confirmed: Apple published an OS-specific WebKit source tag. The full five-part source version is known. |
| `exact/binary` | ✅ Confirmed binary mapping: the OS build, WebKit UUID and `CFBundleVersion` were matched in Ravel. This does not by itself confirm an unpublished source tag or a specific source-level API change. |
| `❓ unconfirmed/train` | Only the Safari/WebKit release family is known. Apple has not published an exact OS-specific source tag; `.*` is intentional. |
An OS marketing version alone is not enough for crash forensics. Hardware-specific OS builds can differ, and macOS can receive Safari/WebKit updates separately. For an exact answer, match **OS build + WebKit UUID + `CFBundleVersion`**.
## Research and table-update procedure
1. **Identify the OS release.** Record the marketing version and every stable Apple build from [AppleDB](https://api.appledb.dev/ios/main.json). Keep beta builds in the separate beta table.
2. **Match the shipped WebKit binary.** Open the same Apple build in [Ravel](https://ravel.dbg.re/browse), select the correct architecture, and record the WebKit Mach-O UUID. For crash research, require an exact UUID match with the crash image.
3. **Read `CFBundleVersion`.** Use Ravel metadata when present or read it on the target OS with the Swift snippet below. Strip the platform prefix to obtain `FULL_VERSION`: iOS uses `8`; macOS uses `17` for macOS 12, `18` for 13, `19` for 14, `20` for 15, `21` for 26, and `22` for 27.
4. **Resolve and inspect the source.** Check the exact public tag `WebKit-7<FULL_VERSION>`; for version 612 and early 613, also check `Safari-<FULL_VERSION>`. Inspect the API or symbol at that tag. `main`, Safari Technology Preview, or a release-train match alone does not prove inclusion in a system release.
5. **Update the row with its evidence.** Use `exact/tag` when the exact public tag is verified. Use `exact/binary` when build + UUID + `CFBundleVersion` are verified but the tag is unavailable, and prefix the inferred source tag with `❓`. If only the release family is known, retain `.*` and use `❓ unconfirmed/train`.
```swift
import WebKit
let webKitBundleVersion = Bundle(for: WKWebView.self)
.object(forInfoDictionaryKey: "CFBundleVersion") as? String
```
Ravel binary paths:
```text
macOS: /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit
iOS: /System/Library/Frameworks/WebKit.framework/WebKit
```
## iOS mapping
iOS production bundle versions use prefix `8`: `CFBundleVersion = 8 + FULL_VERSION`.
@@ -45,7 +67,7 @@ iOS production bundle versions use prefix `8`: `CFBundleVersion = 8 + FULL_VERSI
| `15.4.1` | `19E258` | `15.4` | `613.1.17.0.8` | `Safari-613.1.17.0.8` | `exact/tag` |
| `15.5` | `19F77` | `15.5` | `613.2.7.0.7` | `WebKit-7613.2.7.0.7` | `exact/tag` |
| `15.6` | `19G71` | `15.6` | `613.3.9.0.5` | `WebKit-7613.3.9.0.5` | `exact/tag` |
| `15.6.1` | `19G82` | `15.6` | `613.3.9.*` | `WebKit-7613.3.9.*` | `train` |
| `15.6.1` | `19G82` | `15.6` | `613.3.9.*` | `WebKit-7613.3.9.*` | `❓ unconfirmed/train` |
| `15.7` | `19H12` | `15.6.2` | `613.4.1.0.2` | `WebKit-7613.4.1.0.2` | `exact/tag` |
| `15.7.1` | `19H117` | `15.6.3` | `613.5.1.0.2` | `WebKit-7613.5.1.0.2` | `exact/tag` |
| `15.7.2` | `19H218` | `15.6.4` | `613.6.1.0.3` | `WebKit-7613.6.1.0.3` | `exact/tag` |
@@ -57,14 +79,14 @@ iOS production bundle versions use prefix `8`: `CFBundleVersion = 8 + FULL_VERSI
| `15.7.8` | `19H364` | `15.6.6` | `613.7.1.0.13` | `WebKit-7613.7.1.0.13` | `exact/tag` |
| `15.7.9` | `19H365` | `15.6.6` | `613.7.1.0.13` | `WebKit-7613.7.1.0.13` | `exact/tag` |
| `15.8` | `19H370` | `15.6.6` | `613.7.1.0.13` | `WebKit-7613.7.1.0.13` | `exact/tag` |
| `15.8.1` | `19H380` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.2` | `19H384` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.3` | `19H386` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.4` | `19H390` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.5` | `19H394` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.6` | `19H402` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.7` | `19H411` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.8` | `19H422` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `train` |
| `15.8.1` | `19H380` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
| `15.8.2` | `19H384` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
| `15.8.3` | `19H386` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
| `15.8.4` | `19H390` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
| `15.8.5` | `19H394` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
| `15.8.6` | `19H402` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
| `15.8.7` | `19H411` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
| `15.8.8` | `19H422` | `15.6` | `613.7.1.*` | `WebKit-7613.7.1.*` | `❓ unconfirmed/train` |
### iOS 16
@@ -83,26 +105,26 @@ iOS production bundle versions use prefix `8`: `CFBundleVersion = 8 + FULL_VERSI
| `16.4` | `20E247` | `16.4` | `615.1.26.10.23` | `WebKit-7615.1.26.10.23` | `exact/tag` |
| `16.4.1` | `20E252` | `16.4` | `615.1.26.10.24` | `WebKit-7615.1.26.10.24` | `exact/tag` |
| `16.5` | `20F66` | `16.5` | `615.2.9.10.3` | `WebKit-7615.2.9.10.3` | `exact/tag` |
| `16.5.1` | `20F75` | `16.5` | `615.2.9.*` | `WebKit-7615.2.9.*` | `train` |
| `16.5.1` | `20F75` | `16.5` | `615.2.9.*` | `WebKit-7615.2.9.*` | `❓ unconfirmed/train` |
| `16.6` | `20G75` | `16.6` | `615.3.12.10.2` | `WebKit-7615.3.12.10.2` | `exact/tag` |
| `16.6.1` | `20G81` | `16.6` | `615.3.12.10.2` | `WebKit-7615.3.12.10.2` | `exact/tag` |
| `16.7` | `20H19` | `16.6` | `615.3.12.10.4` | `WebKit-7615.3.12.10.4` | `exact/tag` |
| `16.7.1` | `20H30` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.1` | `20H30` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.2` | `20H115` | `16.6` | `615.3.12.110.2` | `WebKit-7615.3.12.110.2` | `exact/tag` |
| `16.7.3` | `20H232` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.4` | `20H240` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.5` | `20H307` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.6` | `20H320` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.7` | `20H330` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.8` | `20H343` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.9` | `20H348` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.10` | `20H350` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.11` | `20H360` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.12` | `20H364` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.13` | `20H365` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.14` | `20H370` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.15` | `20H380` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.16` | `20H392` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `16.7.3` | `20H232` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.4` | `20H240` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.5` | `20H307` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.6` | `20H320` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.7` | `20H330` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.8` | `20H343` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.9` | `20H348` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.10` | `20H350` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.11` | `20H360` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.12` | `20H364` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.13` | `20H365` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.14` | `20H370` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.15` | `20H380` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `16.7.16` | `20H392` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
### iOS 17
@@ -111,30 +133,30 @@ iOS production bundle versions use prefix `8`: `CFBundleVersion = 8 + FULL_VERSI
| `17.0` | `21A326`<br>`21A327`<br>`21A329`<br>`21A331` | `17` | `616.1.27.10.13` | `WebKit-7616.1.27.10.13` | `exact/tag` |
| `17.0.1` | `21A340` | `17` | `616.1.27.10.15` | `WebKit-7616.1.27.10.15` | `exact/tag` |
| `17.0.2` | `21A350`<br>`21A351` | `17` | `616.1.27.10.15` | `WebKit-7616.1.27.10.15` | `exact/tag` |
| `17.0.3` | `21A360` | `17` | `616.1.27.*` | `WebKit-7616.1.27.*` | `train` |
| `17.1` | `21B74`<br>`21B80` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `train` |
| `17.1.1` | `21B91` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `train` |
| `17.1.2` | `21B101` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `train` |
| `17.0.3` | `21A360` | `17` | `616.1.27.*` | `WebKit-7616.1.27.*` | `❓ unconfirmed/train` |
| `17.1` | `21B74`<br>`21B80` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `❓ unconfirmed/train` |
| `17.1.1` | `21B91` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `❓ unconfirmed/train` |
| `17.1.2` | `21B101` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `❓ unconfirmed/train` |
| `17.2` | `21C62` | `17.2` | `617.1.17.10.9` | `WebKit-7617.1.17.10.9` | `exact/tag` |
| `17.2.1` | `21C66` | `17.2` | `617.1.17.10.9` | `WebKit-7617.1.17.10.9` | `exact/tag` |
| `17.3` | `21D50` | `17.3` | `617.2.4.*` | `WebKit-7617.2.4.*` | `train` |
| `17.3` | `21D50` | `17.3` | `617.2.4.*` | `WebKit-7617.2.4.*` | `❓ unconfirmed/train` |
| `17.3.1` | `21D61` | `17.3.1` | `617.2.4.10.8` | `WebKit-7617.2.4.10.8` | `exact/tag` |
| `17.4` | `21E219` | `17.4` | `618.1.15.10.11` | `WebKit-7618.1.15.10.11` | `exact/tag` |
| `17.4.1` | `21E236`<br>`21E237` | `17.4` | `618.1.15.*` | `WebKit-7618.1.15.*` | `train` |
| `17.4.1` | `21E236`<br>`21E237` | `17.4` | `618.1.15.*` | `WebKit-7618.1.15.*` | `❓ unconfirmed/train` |
| `17.5` | `21F79` | `17.5` | `618.2.12.10.9` | `WebKit-7618.2.12.10.9` | `exact/tag` |
| `17.5.1` | `21F90` | `17.5` | `618.2.12.10.9` | `WebKit-7618.2.12.10.9` | `exact/tag` |
| `17.6` | `21G80` | `17.6` | `618.3.11.10.5` | `WebKit-7618.3.11.10.5` | `exact/tag` |
| `17.6.1` | `21G101`<br>`21G93` | `17.6` | `618.3.11.10.5` | `WebKit-7618.3.11.10.5` | `exact/tag` |
| `17.7` | `21H16` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `17.7.1` | `21H216` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `17.7.2` | `21H221` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `17.7` | `21H16` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `17.7.1` | `21H216` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `17.7.2` | `21H221` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
### iOS 18
| OS version | Apple build(s) | Safari | WebKit `FULL_VERSION` | Source release | Evidence |
|---|---|---:|---:|---|---|
| `18.0` | `22A3351`<br>`22A3354` | `18` | `619.1.26.30.5` | `WebKit-7619.1.26.30.5` | `exact/tag` |
| `18.0.1` | `22A3370` | `18` | `619.1.26.*` | `WebKit-7619.1.26.*` | `train` |
| `18.0.1` | `22A3370` | `18` | `619.1.26.*` | `WebKit-7619.1.26.*` | `❓ unconfirmed/train` |
| `18.1` | `22B83` | `18.1` | `619.2.8.10.7` | `WebKit-7619.2.8.10.7` | `exact/tag` |
| `18.1.1` | `22B91` | `18.1.1` | `619.2.8.10.9` | `WebKit-7619.2.8.10.9` | `exact/tag` |
| `18.2` | `22C152` | `18.2` | `620.1.16.10.11` | `WebKit-7620.1.16.10.11` | `exact/tag` |
@@ -142,53 +164,53 @@ iOS production bundle versions use prefix `8`: `CFBundleVersion = 8 + FULL_VERSI
| `18.3` | `22D63`<br>`22D64`<br>`22D8063` | `18.3` | `620.2.4.10.7` | `WebKit-7620.2.4.10.7` | `exact/tag` |
| `18.3.1` | `22D72`<br>`22D8075` | `18.3` | `620.2.4.10.7` | `WebKit-7620.2.4.10.7` | `exact/tag` |
| `18.3.2` | `22D8082`<br>`22D82` | `18.3.1` | `620.2.4.10.8` | `WebKit-7620.2.4.10.8` | `exact/tag` |
| `18.4` | `22E240` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `train` |
| `18.4.1` | `22E252` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `train` |
| `18.5` | `22F76` | `18.5` | `621.2.5.*` | `WebKit-7621.2.5.*` | `train` |
| `18.6` | `22G86` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.6.1` | `22G90` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.6.2` | `22G100` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7` | `22H20` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.1` | `22H31` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.2` | `22H124` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.3` | `22H217` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.4` | `22H218` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.5` | `22H311` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.6` | `22H320` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.7` | `22H333`<br>`22H340` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.8` | `22H352` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.9` | `22H355` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.7.10` | `22H374` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `18.4` | `22E240` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `❓ unconfirmed/train` |
| `18.4.1` | `22E252` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `❓ unconfirmed/train` |
| `18.5` | `22F76` | `18.5` | `621.2.5.*` | `WebKit-7621.2.5.*` | `❓ unconfirmed/train` |
| `18.6` | `22G86` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.6.1` | `22G90` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.6.2` | `22G100` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7` | `22H20` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.1` | `22H31` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.2` | `22H124` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.3` | `22H217` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.4` | `22H218` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.5` | `22H311` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.6` | `22H320` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.7` | `22H333`<br>`22H340` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.8` | `22H352` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.9` | `22H355` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `18.7.10` | `22H374` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
### iOS 26
| OS version | Apple build(s) | Safari | WebKit `FULL_VERSION` | Source release | Evidence |
|---|---|---:|---:|---|---|
| `26.0` | `23A330`<br>`23A341`<br>`23A345` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `train` |
| `26.0.1` | `23A355` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `train` |
| `26.1` | `23B85` | `26.1` | `622.2.11.*` | `WebKit-7622.2.11.*` | `train` |
| `26.2` | `23C55` | `26.2` | `623.1.14.*` | `WebKit-7623.1.14.*` | `train` |
| `26.2.1` | `23C71` | `26.2` | `623.1.14.*` | `WebKit-7623.1.14.*` | `train` |
| `26.3` | `23D127`<br>`23D8128` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `train` |
| `26.3.1` | `23D8133` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `train` |
| `26.4` | `23E246` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `train` |
| `26.4.1` | `23E254` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `train` |
| `26.4.2` | `23E261` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `train` |
| `26.5` | `23F77` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `train` |
| `26.5.1` | `23F81` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `train` |
| `26.5.2` | `23F84` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `train` |
| `26.6` | `23G71` | `26.6` | `624.4.5.*` | `WebKit-7624.4.5.*` | `train` |
| `26.6.1` | `23G83` | `26.6` | `624.4.5.*` | `WebKit-7624.4.5.*` | `train` |
| `26.6.2` | `23G90` | `26.6` | `624.4.5.*` | `WebKit-7624.4.5.*` | `train` |
| `26.7` | `23H24` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `train` |
| `26.7.1` | `23H30` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `train` |
| `26.0` | `23A330`<br>`23A341`<br>`23A345` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `❓ unconfirmed/train` |
| `26.0.1` | `23A355` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `❓ unconfirmed/train` |
| `26.1` | `23B85` | `26.1` | `622.2.11.*` | `WebKit-7622.2.11.*` | `❓ unconfirmed/train` |
| `26.2` | `23C55` | `26.2` | `623.1.14.*` | `WebKit-7623.1.14.*` | `❓ unconfirmed/train` |
| `26.2.1` | `23C71` | `26.2` | `623.1.14.*` | `WebKit-7623.1.14.*` | `❓ unconfirmed/train` |
| `26.3` | `23D127`<br>`23D8128` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `❓ unconfirmed/train` |
| `26.3.1` | `23D8133` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `❓ unconfirmed/train` |
| `26.4` | `23E246` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `❓ unconfirmed/train` |
| `26.4.1` | `23E254` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `❓ unconfirmed/train` |
| `26.4.2` | `23E261` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `❓ unconfirmed/train` |
| `26.5` | `23F77` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `❓ unconfirmed/train` |
| `26.5.1` | `23F81` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `❓ unconfirmed/train` |
| `26.5.2` | `23F84` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `❓ unconfirmed/train` |
| `26.6` | `23G71` | `26.6` | `624.4.5.*` | `WebKit-7624.4.5.*` | `❓ unconfirmed/train` |
| `26.6.1` | `23G83` | `26.6` | `624.4.5.*` | `WebKit-7624.4.5.*` | `❓ unconfirmed/train` |
| `26.6.2` | `23G90` | `26.6` | `624.4.5.*` | `WebKit-7624.4.5.*` | `❓ unconfirmed/train` |
| `26.7` | `23H24` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `❓ unconfirmed/train` |
| `26.7.1` | `23H30` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `❓ unconfirmed/train` |
### iOS 27
| OS version | Apple build(s) | Safari | WebKit `FULL_VERSION` | Source release | Evidence |
|---|---|---:|---:|---|---|
| `27.0` | `24A427`<br>`24A437`<br>`24A8428` | `27` | `625.1.29.*` | `WebKit-7625.1.29.*` | `train` |
| `27.0.1` | `24A446` | `27` | `625.1.29.*` | `WebKit-7625.1.29.*` | `train` |
| `27.0` | `24A427`<br>`24A437`<br>`24A8428` | `27` | `625.1.29.*` | `WebKit-7625.1.29.*` | `❓ unconfirmed/train` |
| `27.0.1` | `24A446` | `27` | `625.1.29.*` | `WebKit-7625.1.29.*` | `❓ unconfirmed/train` |
## macOS mapping
@@ -204,24 +226,24 @@ macOS production prefixes are: 12 → `17`, 13 → `18`, 14 → `19`, 15 → `20
| `12.3.1` | `21E258` | `15.4` | `613.1.17.1.13` | `Safari-613.1.17.1.13` | `exact/tag` |
| `12.4` | `21F2081`<br>`21F2092`<br>`21F79` | `15.5` | `613.2.7.1.8` | `WebKit-7613.2.7.1.8` | `exact/tag` |
| `12.5` | `21G72` | `15.6` | `613.3.9.1.5` | `WebKit-7613.3.9.1.5` | `exact/tag` |
| `12.5.1` | `21G83` | `15.6` | `613.3.9.*` | `WebKit-7613.3.9.*` | `train` |
| `12.6` | `21G115` | `16` | `614.1.25.*` | `WebKit-7614.1.25.*` | `train` |
| `12.6.1` | `21G217` | `16.1` | `614.2.9.*` | `WebKit-7614.2.9.*` | `train` |
| `12.6.2` | `21G320` | `16.2` | `614.3.7.*` | `WebKit-7614.3.7.*` | `train` |
| `12.6.3` | `21G419` | `16.3` | `614.4.6.*` | `WebKit-7614.4.6.*` | `train` |
| `12.6.4` | `21G526` | `16.4` | `615.1.26.*` | `WebKit-7615.1.26.*` | `train` |
| `12.6.5` | `21G531` | `16.4` | `615.1.26.*` | `WebKit-7615.1.26.*` | `train` |
| `12.6.6` | `21G646` | `16.5` | `615.2.9.*` | `WebKit-7615.2.9.*` | `train` |
| `12.6.7` | `21G651` | `16.5.1` | `615.2.9.*` | `WebKit-7615.2.9.*` | `train` |
| `12.6.8` | `21G725` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.6.9` | `21G726` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.7` | `21G816` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.7.1` | `21G920` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.7.2` | `21G1974` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.7.3` | `21H1015` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.7.4` | `21H1123` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.7.5` | `21H1222` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.7.6` | `21H1320` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `12.5.1` | `21G83` | `15.6` | `613.3.9.*` | `WebKit-7613.3.9.*` | `❓ unconfirmed/train` |
| `12.6` | `21G115` | `16` | `614.1.25.*` | `WebKit-7614.1.25.*` | `❓ unconfirmed/train` |
| `12.6.1` | `21G217` | `16.1` | `614.2.9.*` | `WebKit-7614.2.9.*` | `❓ unconfirmed/train` |
| `12.6.2` | `21G320` | `16.2` | `614.3.7.*` | `WebKit-7614.3.7.*` | `❓ unconfirmed/train` |
| `12.6.3` | `21G419` | `16.3` | `614.4.6.*` | `WebKit-7614.4.6.*` | `❓ unconfirmed/train` |
| `12.6.4` | `21G526` | `16.4` | `615.1.26.*` | `WebKit-7615.1.26.*` | `❓ unconfirmed/train` |
| `12.6.5` | `21G531` | `16.4` | `615.1.26.*` | `WebKit-7615.1.26.*` | `❓ unconfirmed/train` |
| `12.6.6` | `21G646` | `16.5` | `615.2.9.*` | `WebKit-7615.2.9.*` | `❓ unconfirmed/train` |
| `12.6.7` | `21G651` | `16.5.1` | `615.2.9.*` | `WebKit-7615.2.9.*` | `❓ unconfirmed/train` |
| `12.6.8` | `21G725` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.6.9` | `21G726` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.7` | `21G816` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.7.1` | `21G920` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.7.2` | `21G1974` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.7.3` | `21H1015` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.7.4` | `21H1123` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.7.5` | `21H1222` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `12.7.6` | `21H1320` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
### macOS 13
@@ -256,8 +278,8 @@ macOS production prefixes are: 12 → `17`, 13 → `18`, 14 → `19`, 15 → `20
| `13.7.4` | `22H420` | `16.6` | `615.3.12.11.2` | `WebKit-7615.3.12.11.2` | `exact/tag` |
| `13.7.5` | `22H527` | `16.6` | `615.3.12.11.2` | `WebKit-7615.3.12.11.2` | `exact/tag` |
| `13.7.6` | `22H625` | `16.6` | `615.3.12.11.2` | `WebKit-7615.3.12.11.2` | `exact/tag` |
| `13.7.7` | `22H722` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `13.7.8` | `22H730` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `train` |
| `13.7.7` | `22H722` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
| `13.7.8` | `22H730` | `16.6` | `615.3.12.*` | `WebKit-7615.3.12.*` | `❓ unconfirmed/train` |
### macOS 14
@@ -266,13 +288,13 @@ macOS production prefixes are: 12 → `17`, 13 → `18`, 14 → `19`, 15 → `20
| `14.0` | `23A344` | `17` | `616.1.27.211.1` | `WebKit-7616.1.27.211.1` | `exact/tag` |
| `14.1` | `23B2073`<br>`23B2077`<br>`23B74` | `17.1` | `616.2.9.11.7` | `WebKit-7616.2.9.11.7` | `exact/tag` |
| `14.1.1` | `23B2082`<br>`23B81` | `17.1` | `616.2.9.11.7` | `WebKit-7616.2.9.11.7` | `exact/tag` |
| `14.1.2` | `23B2091`<br>`23B92` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `train` |
| `14.2` | `23C64` | `17.2` | `617.1.17.*` | `WebKit-7617.1.17.*` | `train` |
| `14.2.1` | `23C71` | `17.2` | `617.1.17.*` | `WebKit-7617.1.17.*` | `train` |
| `14.1.2` | `23B2091`<br>`23B92` | `17.1` | `616.2.9.*` | `WebKit-7616.2.9.*` | `❓ unconfirmed/train` |
| `14.2` | `23C64` | `17.2` | `617.1.17.*` | `WebKit-7617.1.17.*` | `❓ unconfirmed/train` |
| `14.2.1` | `23C71` | `17.2` | `617.1.17.*` | `WebKit-7617.1.17.*` | `❓ unconfirmed/train` |
| `14.3` | `23D2057`<br>`23D56` | `17.3` | `617.2.4.11.8` | `WebKit-7617.2.4.11.8` | `exact/tag` |
| `14.3.1` | `23D60` | `17.3` | `617.2.4.*` | `WebKit-7617.2.4.*` | `train` |
| `14.3.1` | `23D60` | `17.3` | `617.2.4.*` | `WebKit-7617.2.4.*` | `❓ unconfirmed/train` |
| `14.4` | `23E214` | `17.4` | `618.1.15.11.12` | `WebKit-7618.1.15.11.12` | `exact/tag` |
| `14.4.1` | `23E224` | `17.4` | `618.1.15.*` | `WebKit-7618.1.15.*` | `train` |
| `14.4.1` | `23E224` | `17.4` | `618.1.15.*` | `WebKit-7618.1.15.*` | `❓ unconfirmed/train` |
| `14.5` | `23F79` | `17.5` | `618.2.12.11.6` | `WebKit-7618.2.12.11.6` | `exact/tag` |
| `14.6` | `23G80` | `17.6` | `618.3.11.11.5` | `WebKit-7618.3.11.11.5` | `exact/tag` |
| `14.6.1` | `23G93` | `17.6` | `618.3.11.11.5` | `WebKit-7618.3.11.11.5` | `exact/tag` |
@@ -283,75 +305,75 @@ macOS production prefixes are: 12 → `17`, 13 → `18`, 14 → `19`, 15 → `20
| `14.7.4` | `23H420` | `17.6` | `618.3.11.11.5` | `WebKit-7618.3.11.11.5` | `exact/tag` |
| `14.7.5` | `23H527` | `17.6` | `618.3.11.11.5` | `WebKit-7618.3.11.11.5` | `exact/tag` |
| `14.7.6` | `23H626` | `17.6` | `618.3.11.11.5` | `WebKit-7618.3.11.11.5` | `exact/tag` |
| `14.7.7` | `23H723` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.7.8` | `23H730` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8` | `23J21` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.1` | `23J30` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.2` | `23J126` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.3` | `23J220` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.4` | `23J319` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.5` | `23J423` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.7` | `23J520` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.8` | `23J620` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.8.9` | `23J631` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `train` |
| `14.7.7` | `23H723` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.7.8` | `23H730` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8` | `23J21` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.1` | `23J30` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.2` | `23J126` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.3` | `23J220` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.4` | `23J319` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.5` | `23J423` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.7` | `23J520` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.8` | `23J620` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
| `14.8.9` | `23J631` | `17.6` | `618.3.11.*` | `WebKit-7618.3.11.*` | `❓ unconfirmed/train` |
### macOS 15
| OS version | Apple build(s) | Safari | WebKit `FULL_VERSION` | Source release | Evidence |
|---|---|---:|---:|---|---|
| `15.0` | `24A335`<br>`24A8332` | `18` | `619.1.26.31.6` | `WebKit-7619.1.26.31.6` | `exact/tag` |
| `15.0.1` | `24A340`<br>`24A348` | `18` | `619.1.26.*` | `WebKit-7619.1.26.*` | `train` |
| `15.1` | `24B2082`<br>`24B2083`<br>`24B83` | `18.1` | `619.2.8.*` | `WebKit-7619.2.8.*` | `train` |
| `15.0.1` | `24A340`<br>`24A348` | `18` | `619.1.26.*` | `WebKit-7619.1.26.*` | `❓ unconfirmed/train` |
| `15.1` | `24B2082`<br>`24B2083`<br>`24B83` | `18.1` | `619.2.8.*` | `WebKit-7619.2.8.*` | `❓ unconfirmed/train` |
| `15.1.1` | `24B2091`<br>`24B91` | `18.1.1` | `619.2.8.11.12` | `WebKit-7619.2.8.11.12` | `exact/tag` |
| `15.2` | `24C101`<br>`24C103`<br>`24C2101`<br>`24C2103` | `18.2` | `620.1.16.11.8` | `WebKit-7620.1.16.11.8` | `exact/tag` |
| `15.3` | `24D2059`<br>`24D60` | `18.3` | `620.2.4.11.5` | `WebKit-7620.2.4.11.5` | `exact/tag` |
| `15.3.1` | `24D70` | `18.3` | `620.2.4.11.5` | `WebKit-7620.2.4.11.5` | `exact/tag` |
| `15.3.2` | `24D2082`<br>`24D81` | `18.3` | `620.2.4.*` | `WebKit-7620.2.4.*` | `train` |
| `15.4` | `24E248` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `train` |
| `15.4.1` | `24E263` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `train` |
| `15.5` | `24F74` | `18.5` | `621.2.5.*` | `WebKit-7621.2.5.*` | `train` |
| `15.6` | `24G84` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.6.1` | `24G90` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7` | `24G222` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.1` | `24G231` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.2` | `24G325` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.3` | `24G419` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.4` | `24G517` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.5` | `24G624` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.7` | `24G720` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.8` | `24G824` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.7.9` | `24G830` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.8` | `24H23` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.8.1` | `24H32` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `train` |
| `15.3.2` | `24D2082`<br>`24D81` | `18.3` | `620.2.4.*` | `WebKit-7620.2.4.*` | `❓ unconfirmed/train` |
| `15.4` | `24E248` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `❓ unconfirmed/train` |
| `15.4.1` | `24E263` | `18.4` | `621.1.15.*` | `WebKit-7621.1.15.*` | `❓ unconfirmed/train` |
| `15.5` | `24F74` | `18.5` | `621.2.5.*` | `WebKit-7621.2.5.*` | `❓ unconfirmed/train` |
| `15.6` | `24G84` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.6.1` | `24G90` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7` | `24G222` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.1` | `24G231` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.2` | `24G325` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.3` | `24G419` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.4` | `24G517` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.5` | `24G624` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.7` | `24G720` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.8` | `24G824` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.7.9` | `24G830` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.8` | `24H23` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
| `15.8.1` | `24H32` | `18.6` | `621.3.11.*` | `WebKit-7621.3.11.*` | `❓ unconfirmed/train` |
### macOS 26
| OS version | Apple build(s) | Safari | WebKit `FULL_VERSION` | Source release | Evidence |
|---|---|---:|---:|---|---|
| `26.0` | `25A354`<br>`25A8353` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `train` |
| `26.0.1` | `25A362`<br>`25A8364` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `train` |
| `26.1` | `25B78` | `26.1` | `622.2.11.*` | `WebKit-7622.2.11.*` | `train` |
| `26.2` | `25C2058`<br>`25C56` | `26.2` | `623.1.14.*` | `WebKit-7623.1.14.*` | `train` |
| `26.3` | `25D125`<br>`25D2125` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `train` |
| `26.3.1` | `25D2128` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `train` |
| `26.3.2` | `25D2140`<br>`25D2150` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `train` |
| `26.4` | `25E246` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `train` |
| `26.4.1` | `25E253` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `train` |
| `26.5` | `25F71` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `train` |
| `26.5.1` | `25F80` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `train` |
| `26.5.2` | `25F84` | `26.5` | `624.2.5.11.8` | `WebKit-7624.2.5.11.8 (candidate; tag not public)` | `exact/binary` |
| `26.6` | `25G72` | `26.6` | `624.4.5.11.5` | `WebKit-7624.4.5.11.5 (candidate; tag not public)` | `exact/binary` |
| `26.6.1` | `25G76` | `26.6` | `624.4.5.11.5` | `WebKit-7624.4.5.11.5 (candidate; tag not public)` | `exact/binary` |
| `26.0` | `25A354`<br>`25A8353` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `❓ unconfirmed/train` |
| `26.0.1` | `25A362`<br>`25A8364` | `26` | `622.1.22.*` | `WebKit-7622.1.22.*` | `❓ unconfirmed/train` |
| `26.1` | `25B78` | `26.1` | `622.2.11.*` | `WebKit-7622.2.11.*` | `❓ unconfirmed/train` |
| `26.2` | `25C2058`<br>`25C56` | `26.2` | `623.1.14.*` | `WebKit-7623.1.14.*` | `❓ unconfirmed/train` |
| `26.3` | `25D125`<br>`25D2125` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `❓ unconfirmed/train` |
| `26.3.1` | `25D2128` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `❓ unconfirmed/train` |
| `26.3.2` | `25D2140`<br>`25D2150` | `26.3` | `623.2.7.*` | `WebKit-7623.2.7.*` | `❓ unconfirmed/train` |
| `26.4` | `25E246` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `❓ unconfirmed/train` |
| `26.4.1` | `25E253` | `26.4` | `624.1.16.*` | `WebKit-7624.1.16.*` | `❓ unconfirmed/train` |
| `26.5` | `25F71` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `❓ unconfirmed/train` |
| `26.5.1` | `25F80` | `26.5` | `624.2.5.*` | `WebKit-7624.2.5.*` | `❓ unconfirmed/train` |
| `26.5.2` | `25F84` | `26.5` | `624.2.5.11.8` | `❓ WebKit-7624.2.5.11.8 (inferred; tag not public)` | `exact/binary` |
| `26.6` | `25G72` | `26.6` | `624.4.5.11.5` | `❓ WebKit-7624.4.5.11.5 (inferred; tag not public)` | `exact/binary` |
| `26.6.1` | `25G76` | `26.6` | `624.4.5.11.5` | `❓ WebKit-7624.4.5.11.5 (inferred; tag not public)` | `exact/binary` |
| `26.6.2` | `25G83` | `26.6` | `624.5.1.11.3` | `WebKit-7624.5.1.11.3` | `exact/binary` |
| `26.7` | `25G229` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `train` |
| `26.7.1` | `25G241` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `train` |
| `26.7` | `25G229` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `❓ unconfirmed/train` |
| `26.7.1` | `25G241` | `26.6` | `624.5.1.*` | `WebKit-7624.5.1.*` | `❓ unconfirmed/train` |
### macOS 27
| OS version | Apple build(s) | Safari | WebKit `FULL_VERSION` | Source release | Evidence |
|---|---|---:|---:|---|---|
| `27.0` | `26A425`<br>`26A428` | `27` | `625.1.29.*` | `WebKit-7625.1.29.*` | `train` |
| `27.0.1` | `26A434` | `27` | `625.1.29.11.28` | `WebKit-7625.1.29.11.28 (candidate; tag not public)` | `exact/binary` |
| `27.0` | `26A425`<br>`26A428` | `27` | `625.1.29.*` | `WebKit-7625.1.29.*` | `❓ unconfirmed/train` |
| `27.0.1` | `26A434` | `27` | `625.1.29.11.28` | `❓ WebKit-7625.1.29.11.28 (inferred; tag not public)` | `exact/binary` |
## Binary mappings verified in Ravel
@@ -381,38 +403,14 @@ Ravel exposes the binary UUID for these iOS dyld caches, but not the framework `
## Current 27.2 beta builds
| Platform | OS build | WebKit UUID | `FULL_VERSION` | Evidence |
|---|---|---|---:|---|
| macOS 27.2 beta | `26B5086k` | `6F6AB57E-1492-3950-9962-85B6AFD430A3` | `625.2.4.1` | Ravel binary |
| macOS 27.2 beta 2 | `26B5091g` | `56B4AA44-CB66-3641-8B22-723C39B5BC6E` | `625.2.5.11.1` | Ravel binary |
| macOS 27.2 beta 3 | `26B5101f` | `B32D7081-AE42-3A2E-ACBB-CF4D4BE4F296` | `625.2.7.1` | Ravel binary |
| iOS 27.2 beta | `24B5084k` | `1FD67A57-D91B-3B26-9F4F-91AB8299B6E7` | unknown | UUID only |
| iOS 27.2 beta 2 | `24B5089g` | `509D51AD-2CF9-3982-BFD5-81221D1B903D` | unknown | UUID only |
| iOS 27.2 beta 3 | `24B5099f` | `0566BF55-2DC4-34F6-B211-96FFAA0A37A4` | unknown | UUID only |
## Exact lookup procedure
1. Read the OS build and WebKit image UUID from the crash report.
2. Open that build in Ravel and verify the same UUID and architecture.
3. Read `CFBundleVersion` from `Bundle(for: WKWebView.self)`.
4. Remove the platform prefix to obtain `FULL_VERSION`.
5. Resolve the source tag and inspect the released code.
```swift
import WebKit
let webKitBundleVersion = Bundle(for: WKWebView.self)
.object(forInfoDictionaryKey: "CFBundleVersion") as? String
```
Ravel paths:
```text
macOS: /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit
iOS: /System/Library/Frameworks/WebKit.framework/WebKit
```
Modern source tags use `WebKit-7<FULL_VERSION>`. The 612 and early 613 trains use `Safari-<FULL_VERSION>`.
| Platform | OS build | WebKit UUID | `FULL_VERSION` | Binary evidence | Source/API status |
|---|---|---|---:|---|---|
| macOS 27.2 beta | `26B5086k` | `6F6AB57E-1492-3950-9962-85B6AFD430A3` | `625.2.4.1` | `exact/binary` | `❓ unconfirmed — public source tag unavailable` |
| macOS 27.2 beta 2 | `26B5091g` | `56B4AA44-CB66-3641-8B22-723C39B5BC6E` | `625.2.5.11.1` | `exact/binary` | `❓ unconfirmed — public source tag unavailable` |
| macOS 27.2 beta 3 | `26B5101f` | `B32D7081-AE42-3A2E-ACBB-CF4D4BE4F296` | `625.2.7.1` | `exact/binary` | `❓ unconfirmed — public source tag unavailable` |
| iOS 27.2 beta | `24B5084k` | `1FD67A57-D91B-3B26-9F4F-91AB8299B6E7` | unknown | UUID only | `❓ unconfirmed` |
| iOS 27.2 beta 2 | `24B5089g` | `509D51AD-2CF9-3982-BFD5-81221D1B903D` | unknown | UUID only | `❓ unconfirmed` |
| iOS 27.2 beta 3 | `24B5099f` | `0566BF55-2DC4-34F6-B211-96FFAA0A37A4` | unknown | UUID only | `❓ unconfirmed` |
## Current certificate-info crash
@@ -422,10 +420,10 @@ Modern source tags use `WebKit-7<FULL_VERSION>`. The 612 and early 613 trains us
| Crash/Ravel UUID | `70BEE322-37EE-3B22-8012-4F76BA105C29` |
| `CFBundleVersion` | `22625.1.29.11.28` |
| `FULL_VERSION` | `625.1.29.11.28` |
| Candidate source tag | `WebKit-7625.1.29.11.28` — not public as of 2026-10-06 |
| Candidate source tag | `❓ WebKit-7625.1.29.11.28` — inferred; not public as of 2026-10-06 |
| Result | The shipped binary has the old one-argument `commitCertificateInfo` ABI; the fix is absent. |
The fix landed in `318982@main`. macOS 27.2 is a candidate for the first fixed system release, but public `WebKit-7625.2.*` source tags are not available yet.
The fix landed in `318982@main`. **❓ Unconfirmed:** macOS 27.2 is only a candidate for the first fixed system release; public `WebKit-7625.2.*` source tags are not available yet.
## Data sources and maintenance
@@ -437,4 +435,4 @@ The fix landed in `318982@main`. macOS 27.2 is a candidate for the first fixed s
- [WebKit commit 318982@main](https://commits.webkit.org/318982@main)
- DuckDuckGo Apple browsers deployment targets: `macOS/Configuration/Common.xcconfig` and `iOS/DuckDuckGo-iOS.xcodeproj/project.pbxproj`
To update this document, add new stable OS rows first. Use an OS-specific `releases/Apple/Safari-…` tag when available; otherwise record only the release train and keep the `.*` marker.
Follow **Research and table-update procedure** for every new stable or beta row.