v150 · sub apps

Capability & context gate

The Sub Apps API binds to window only inside a secure Isolated Web App that has been granted the sub-apps permission policy, with the SubApps flag enabled. This probe checks each prerequisite live and tells you exactly which one is stopping the API here — instead of blaming your browser version.

To actually run Sub apps: on a ChromeOS device (other desktops work unofficially), enable #enable-isolated-web-apps, #enable-isolated-web-app-dev-mode and #enable-sub-apps in chrome://flags, then install a signed Isolated Web App via chrome://web-app-internals and grant it the sub-apps permission policy. ChromeStatus (API, updated 2026-07-24) targets default-on at Chrome 152 (status text “Proposed”). Implementation/debug note: --enable-blink-features=SubApps also gates the runtime feature. On this ordinary https:// origin window.subApps is undefined by design.

Run the prerequisite probe

Prerequisites for window.subApps
PrerequisiteStatusWhat was measured
Press “Probe this context” to measure each prerequisite.

No probe run yet.

what each gate measures

code path

const secure = window.isSecureContext;                       // secure context?
const bound  = 'subApps' in window;                          // IWA + SubApps flag?
const policy = document.featurePolicy?.allowsFeature?.('sub-apps');

if (bound && typeof window.subApps.list === 'function') {
  try {
    const installed = await window.subApps.list();           // the real call
    // record<ManifestId, { appName }>
  } catch (err) {
    // SecurityError, NotSupportedError, OperationError, ...
  }
}

see also

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗