Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
19684d7
add spec
vkrot-cell Jun 18, 2026
c672d8d
make list number be always 1
vkrot-cell Jul 6, 2026
b9300b1
formalize for each iterations
vkrot-cell Jul 7, 2026
88513c7
async step for permission prompt
vkrot-cell Jul 7, 2026
3be7540
formalize subapps in window creation
vkrot-cell Jul 7, 2026
7065a11
Remove link defaults
vkrot-cell Jul 7, 2026
ba45b82
formalize prefix
vkrot-cell Jul 7, 2026
b3c3ca2
correctly link appmanifest
vkrot-cell Jul 7, 2026
523faab
relative path fix
vkrot-cell Jul 7, 2026
73bc859
Formalize mapping
vkrot-cell Jul 7, 2026
6d791d5
specify how we fetch manifest
vkrot-cell Jul 7, 2026
0631a58
fix overlap of scopes in readme.
vkrot-cell Jul 7, 2026
a95e57a
formalize sub app, parent app, installed app.
vkrot-cell Jul 7, 2026
e61b247
Fix permission policy default value
vkrot-cell Jul 14, 2026
12881c7
specify about id-member
vkrot-cell Jul 14, 2026
e965dc8
Update index.bs
vkrot-cell Jul 14, 2026
c2cafb8
Update index.bs
vkrot-cell Jul 14, 2026
7f94618
Correctly reference dict members
vkrot-cell Jul 14, 2026
38669cb
Merge branch 'spec' of https://github.com/WICG/sub-apps into spec
vkrot-cell Jul 14, 2026
840d74a
clarify how we check existance of sub apps
vkrot-cell Jul 14, 2026
581d7ca
make fetch and process manifest to be todos
vkrot-cell Jul 14, 2026
1916a18
extract document and this into variables
vkrot-cell Jul 14, 2026
fc7cafd
Fix associated document link
vkrot-cell Jul 14, 2026
e0cff05
parent app non null
vkrot-cell Jul 15, 2026
ec7e917
specify parsing better
vkrot-cell Jul 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ dictionary SubAppsListResult {
- **Returned Object**: `SubAppsAddResponse` contains records mapping each input `InstallPath` provided to the call to either its success or failure state. Developers must use the `InstallPath` key to identify which call failed and which succeeded:
- `installedApps`: A record mapping the `InstallPath` to the successfully installed sub-app's `ManifestId`. `ManifestId` is a stable identified of a sub app, it is later used in `subApps.remove` and `subApps.list` calls. For what is `ManifestId` exactly, please, consult [Sub App identity](#sub-app-identity) section.
- `failedApps`: A record mapping the `InstallPath` to a `DOMException` explaining why that individual sub-app failed to install. Possible exceptions include:
- `ConstraintError`: Provided sub app scope web manifest property overlaps with scopes of other sub apps or the parent app or the provided install url pointed to the app web manifest (itself).
- `ConstraintError`: Provided sub app scope is a prefix of another sub app's scope (or vice versa), or the parent app's scope is a prefix of the sub app's scope, or the provided install url pointed to the parent app's web manifest (itself).
- `DataError`: The referenced web manifest was invalid or could not be parsed.
- `InvalidStateError`: The sub-app is already installed.
- `OperationError`: A generic system or database failure occurred during the installation of this specific sub-app.
Expand Down Expand Up @@ -314,14 +314,14 @@ Two distinct options were considered for the return types of the `add()` and `re

### Sub App Identity

Sub apps rely on standard web manifest identity fields, but enforce specific isolation and overlap rules to guarantee they do not conflict with each other or the parent application.
Sub apps rely on standard web manifest identity fields, but enforce specific isolation and scope validation rules to guarantee they do not conflict with each other or the parent application.

| Identifier | Relationship to Parent / Generation Rule |
| :--- | :--- |
| **Origin** | Identical to the parent IWA. |
| **SignedWebBundleId** | Identical to the parent IWA. |
| **Start URL** | Must be defined in the web manifest. Must be unique between sub-apps and the parent app. |
| **Scope** | Might be defined in the web manifest. Scopes must not overlap between sub-apps. The scope of a sub-app must not overlap with or cover the parent app's scope. Otherwise, the installation/update fails. |
| **Scope** | Might be defined in the web manifest. Scopes of sub apps must not be a prefix of one another, and scope of the parent app must not be prefix of sub app scope. Otherwise, the installation/update fails. |
| **URL** | Parent IWA origin + `/` + `sub_app_start_url`. *Example:* `isolated-app://pl2ctdpnkf7ltse22mpjdb376etd3ydo7s72lgspuopgzcwl5tkqaaic/sub/calculator.html` |
| **AppId** | It is unique between all apps of a particular user (regardless if it is a sub app or usual app). It is derived from ManifestId. |
| **ManifestId** | Unique for each sub app. Defined in the web manifest, if it is empty, it falls back to the `start_url` without the reference/hash fragment. *Example:* `/sub/calculator.html` |
Expand Down
Loading
Loading