Skip to content

What iPhone Duo and iOS 27.1 mean for web apps

Published

iPhone Duo, Apple’s first foldable iPhone, goes on sale on 2026-10-23 in the first group of countries, and Apple’s announcement states that “iPhone Duo will be available with iOS 27.1” (Apple unveils iPhone Duo, apple.com). Browser-compat-data lists Safari on iOS 27, released 2026-09-14, as the current Safari on iOS release, and Apple’s notes for Safari 27.0 record support for the service worker static routing API and two fixes to service worker registration (BCD browsers/safari_ios.json, github.com; Safari 27 Release Notes, developer.apple.com). Neither Apple’s Safari release notes index nor browser-compat-data lists a Safari 27.1 release, and web app behavior across the device’s two displays has not been tested.

The press release that introduced the device on 2026-09-09 describes two displays. Opened, iPhone Duo has a 7.6-inch inner display; closed, it has a 5.4-inch outer display. Apple writes that “both displays share the same aspect ratio, so content scales proportionally” (Apple unveils iPhone Duo, apple.com).

The same release describes new multitasking on the inner display. Split View lets a user open two apps side by side, and Apple names Safari as an example of an app a user can open in two windows, “for comparison shopping”. Pre-orders open on 2026-10-16, availability begins on 2026-10-23 in the first group of countries, and the release lists 28 other countries and regions from 2026-10-30 (Apple unveils iPhone Duo, apple.com).

On 2026-10-05 Apple Developer News published “Prepare and submit your apps for iPhone Duo”. The notice says to recompile existing apps with Xcode 27.1, “which adds development support for iPhone Duo”, and to use Device Hub “to visualize how your apps behave on iPhone Duo across all poses and orientations” (Prepare and submit your apps for iPhone Duo, developer.apple.com).

The notice also sets a date for App Store product pages. Updated screenshot and app preview specifications cover iPhone Duo, an app that submits iPhone Duo screenshots gets a badge on its product page, and “starting April 2027, any apps or games submitted will need to include screenshots for iPhone Duo” (Prepare and submit your apps for iPhone Duo, developer.apple.com).

Apple’s Safari 27 Release Notes date the release September 14, 2026, give its version as 27.0 (20625.1.29), and state that Safari 27 is available for iOS 27, iPadOS 27, visionOS 27, and macOS. The notes list “Added support for the service worker static routing API.” They also fix two registration failures. Service worker registrations are unregistered when the main script is missing, and when retrieving stored imported scripts fails (Safari 27 Release Notes, developer.apple.com).

WebKit’s feature post for the release describes the static routing API as letting “a service worker declare routing rules that the browser can use to bypass the service worker entirely for certain requests, reducing overhead for high-performance PWAs” (WebKit Features for Safari 27.0, webkit.org).

MDN documents the method that registers those rules, InstallEvent.addRoutes(), as specifying static routes “which define rules for fetching specified resources that will be used even before service worker startup”. Its stated purpose is bypassing a service worker when a resource should always come from the network or from a browser Cache, which “avoids the performance overhead of unnecessary service worker cycles” (InstallEvent: addRoutes() method, developer.mozilla.org).

Each rule pairs a condition with a source. MDN lists urlPattern, requestMethod, requestMode, requestDestination, and runningStatus as condition properties, plus not and or for combining conditions. A source can be "network", "cache", "fetch-event", or "race-network-and-fetch-handler", or an object naming one Cache with cacheName. The urlPattern condition takes a URLPattern instance or constructor input, and MDN says regular expression capturing groups are not allowed in it (InstallEvent: addRoutes() method, developer.mozilla.org).

MDN explains what each source does. "cache" loads matching resources from a browser Cache, "fetch-event" hands them to the service worker’s fetch handler, and "network" loads them from the network. "race-network-and-fetch-handler" sends the request to the network and to the fetch handler at the same time and uses whichever completes first. MDN adds that "fetch-event" can be combined with the runningStatus condition, so resources come from the service worker when it is running and from a network route when it is not (InstallEvent: addRoutes() method, developer.mozilla.org).

MDN also documents when addRoutes() throws a TypeError when a rule is invalid, when a rule uses "fetch-event" as its source and the service worker has no fetch handler, or when or is combined with another condition type. Its first example routes URLs that start with /articles to the network when the service worker is not running (InstallEvent: addRoutes() method, developer.mozilla.org).

Browser-compat-data records api.InstallEvent.addRoutes from Safari 27 and Safari on iOS 27, and from Chrome 123 and Chrome Android 123. It records no support in Firefox or Firefox for Android and links Bugzilla bug 1855580 as the implementation tracker (BCD api/InstallEvent.json, github.com).

The Safari 27 notes also fix service worker routes that were not matched when no fetch event handler was set. A second routing fix addresses rules that did not “enforce limitation checks as required by the specification” (Safari 27 Release Notes, developer.apple.com).

Apple’s Safari release notes index, read on 2026-10-20, lists “Safari 27 Release Notes” and “Safari 27.2 Beta Release Notes” in the version 27 group, and no Safari 27.1 notes (Safari release notes, developer.apple.com).

Browser-compat-data lists two Safari on iOS releases in the 27 series. These are 27, with status current and release date 2026-09-14, and 27.2, with status beta. It lists no 27.1 release (BCD browsers/safari_ios.json, github.com).

The web platform has an API for screens like this one. MDN says the Viewport Segments API “allows developers to access the position and dimensions of logically separate viewport segments using CSS and JavaScript”, and that segments are created “when the viewport is split by one or more hardware features such as a fold or a hinge between separate displays” (Viewport Segments API, developer.mozilla.org).

Among the API’s CSS features are the horizontal-viewport-segments and vertical-viewport-segments media features. MDN describes horizontal-viewport-segments as detecting “whether the device has a specified number of viewport segments laid out horizontally (side by side)”. It lists a value of 1 for a foldable device that is either unfolded or closed in the continuous device posture, and a value of 2 for a foldable device that is folded and oriented so its segments are side by side (horizontal-viewport-segments, developer.mozilla.org).

Browser-compat-data records api.Viewport.segments from Chrome 138 and Chrome Android 138, and records no support in Safari, Safari on iOS, Firefox, or Firefox for Android (BCD api/Viewport.json, github.com). For the two media features, browser-compat-data records support from Chrome 138 and no support in Safari or Firefox, with the Safari on iOS and Firefox for Android entries mirroring those records (BCD css/at-rules/media.json, github.com). MDN labels the API experimental and not Baseline (Viewport Segments API, developer.mozilla.org).

Apple’s developer releases page lists iOS 27.2 RC (24B115) on 2026-10-19 (Releases, developer.apple.com). The Safari 27.2 Beta Release Notes give their date as October 13, 2026 and their version as 27.2 beta (20625.2.8) (Safari 27.2 Beta Release Notes, developer.apple.com).

The service worker change is the part a team can act on before touching the device. Browser-compat-data’s support range for addRoutes() on Safari on iOS starts at 27, next to Chrome 123, and Firefox has no recorded support (BCD api/InstallEvent.json, github.com). A rule that names "fetch-event" as its source throws a TypeError in a worker without a fetch handler, and Safari 27.0 also fixed routes that were not matched in that same no-handler case (InstallEvent: addRoutes() method, developer.mozilla.org; Safari 27 Release Notes, developer.apple.com).

The two registration fixes concern failure states of a deployed worker. Apple lists a registration whose main script is missing, or whose stored imported scripts cannot be retrieved, as one that is unregistered (Safari 27 Release Notes, developer.apple.com).

On layout, Apple says the two displays share an aspect ratio and that Safari can run in two windows in Split View (Apple unveils iPhone Duo, apple.com). Browser-compat-data records no Safari on iOS support for viewport.segments or for the two segment media features, so a fold layout written against them has no recorded Safari support (BCD api/Viewport.json, github.com; BCD css/at-rules/media.json, github.com).

For teams that also ship through the App Store, the April 2027 screenshot rule applies to “any apps or games submitted”, in Apple’s words (Prepare and submit your apps for iPhone Duo, developer.apple.com).

  • An iPhone Duo device test has not been run. How Safari and Home Screen web apps lay out on the inner and outer displays, and across a fold or unfold while a page is open, is not confirmed.
  • Whether a Home Screen web app can take part in Split View on iPhone Duo is not confirmed.
  • The viewport widths a page receives in each Split View arrangement are not confirmed.
  • Whether WebKit in iOS 27.1 differs from WebKit in iOS 27.0 is not confirmed.
  • Whether Safari will ship the Viewport Segments API, and in which release, is not confirmed.
  • What the final Safari 27.2 release contains is not confirmed; when read on 2026-10-20, the notes Apple had published for it were beta release notes.
  • Whether the April 2027 screenshot rule changes before it takes effect is not confirmed.