- From: Ben Francis <notifications@github.com>
- Date: Sat, 17 Oct 2026 05:11:18 -0700
- To: w3c/manifest <manifest@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/manifest/issues/1168/6233725262@github.com>
benfrancis left a comment (w3c/manifest#1168)
@dmurph wrote:
> I believe, but I could be wrong, that if there isn't a manifest and no manifest url, the manifest processing algorithm does currently return a manifest with document url as start url, document_url without the filename or query as the scope, and document_url without fragments as the id.
OK, let's walk that through. For an implementation of the [processing the manifest](https://w3c.github.io/manifest/#processing) algorithm:
```typescript
function processManifest(
documentURL: URL,
manifestURL: URL
bodyBytes: Uint8Array,
client: EnvironmentSettingsObject | null
): ProcessedManifest {
// Processing the manifest algorithm
}
```
If you tried to "install" the web page https://example.com/foo/bar.html without a manifest or manifest URL:
```typescript
const processedManifest: ProcessedManifest = processManifest(
`https://example.com/foo/bar.html#baz',
undefined,
undefined,
null
);
```
I would assume that any sensible implementation in a type safe language would immediately throw an exception because manifestURL and bodyBytes are not of the correct type. But let's say the implementation allows this and doesn't assume a manifest URL and body have been fetched from a `<link rel=manifest>` as defined in the HTML specification.
As far as I can tell `processedManifest` would look something like this:
```json
{
"dir": "auto",
"start_url": "https://example.com/foo/bar.html#baz",
"id": "https://example.com/foo/bar.html",
"scope": "https://example.com/foo/" // Technically the algorithm itself leaves the filename in place, but this is the effective scope
"display": "browser",
"icons": [],
"shortcuts": []
}
```
So with a bit of hand waving about the inputs the algorithm assumes I think you're right, you do end up with a default manifest. But that manifest has no name, no icon and the default browser display mode. So you would essentially have a bookmark with no title or icon that just navigates to that page in the browser.
I doubt that's what the TAG mean when they say "installing websites must be easy", and isn't how existing browsers implement "add to home/add to dock/create shortcut" for a website.
If user agents want to implement a feature which creates an app from a website then that's fine, that's just not something the Web App Manifest specification currently standardises as "installable web apps", or was [originally intended](https://w3c-webmob.github.io/installable-webapps/#requirements) to specify. It's a different use case, and a different set of requirements which require different sources of metadata.
If that is a new requirement for this specification then it could potentially be satisfied by defining fallbacks for key manifest members taken from HTML metadata (`<meta name="application-name">`, `<title>`, `<link rel="icon">`, `<meta name="theme-color">`, `<html lang>`, `<html dir`> etc.) and potentially heuristics (or manual user override) to upgrade the display mode from browser. Alternatively it could be a separate specification that defines how to create an app from a website which isn't an installable web app.
In the meantime I maintain that the phrase "any website is an installable web application" is demonstrably untrue.
--
Reply to this email directly or view it on GitHub:
https://github.com/w3c/manifest/issues/1168#issuecomment-6233725262
You are receiving this because you are subscribed to this thread.
Message ID: <w3c/manifest/issues/1168/6233725262@github.com>
Received on Saturday, 17 October 2026 12:11:22 UTC