deadhead
meta/apple-mobile-web-app-capable

meta name="apple-mobile-web-app-capable"

Apple's pre-manifest switch for launching a Home Screen web app standalone; the manifest's display member replaces it.

  • Avoid
  • Unnecessary
Severity
UnnecessaryWorks, but is dead weight.
Basis
Vendor documentationOne vendor's documentation is the source.
Detectable
YesMatched exactly. Autofixable when the rule carries a fix.
Matches
meta[name="apple-mobile-web-app-capable" i]Element rule, inside <head>.
Fix
Removes the element
Impacts
Maintainability
Related
meta/mobile-web-app-capable, link/apple-touch-icon-precomposed

<meta name="apple-mobile-web-app-capable" content="yes"> told iOS that a page saved to the Home Screen should launch like an app, without Safari’s address bar and toolbar. Apple introduced it in the Safari Web Content Guide years before the web had a standard way to say the same thing, and it travels with a family of apple- tags for status-bar style, titles and startup images.

Why avoid

The standard way exists and WebKit leads with it. The Web Application Manifest’s display member declares how an installed app launches. WebKit’s own announcement of Home Screen web apps on iOS and iPadOS 16.4 says a site whose manifest sets display to standalone or fullscreen opens as a web app, and mentions the meta tag only in passing, as the other way to mark a site.

It isn’t Apple-only in practice either, which makes it worse rather than better. Chromium parses apple-mobile-web-app-capable into its page metadata too, and Chrome logs a console deprecation warning for it. A page carrying it gets a warning in the most-used engine for a setting its manifest should already hold. A page carrying both states its launch mode twice, in two formats, and only one of them is portable.

Removing it is not free on iOS, and that has to be said plainly. iOS still reads the tag:

  • Without a manifest that sets display to standalone or fullscreen, iOS 16.4 and later save the site as a Home Screen bookmark that opens in the default browser, rather than a standalone web app.
  • With a manifest, the launch is standalone, but apple-touch-startup-image splash screens stop appearing and the app opens on a black screen. Next.js hit this when it swapped the tag out in version 15, and closed the report as not planned.

Delete it anyway. Put the launch mode in the manifest first, and treat custom iOS splash images as the price of dropping a vendor switch.

Use instead

<link rel="manifest" href="/app.webmanifest">
{
  "name": "Example",
  "start_url": "/",
  "display": "standalone"
}

Don’t swap it for mobile-web-app-capable, which the Chrome console message suggests. That is the same idea without the prefix, and the manifest replaces both.

Detectability

Fully detectable. <meta name> holds a single value, so the selector uses = with the i flag.

The fix removes the element, and unlike most removals here it changes what iOS does, as described above. Add the manifest and its display member before applying it.

Resources

This page is generated from content/rules/meta/apple-mobile-web-app-capable.md, the same file the linter is built from. Think the rule is wrong, or that browsers moved on? Say so — that is the most useful issue you can file.