)]}'
{"id": 6260680824061952, "name": "Sub apps for IWAs", "summary": "Sub apps allow developers to create multiple apps under a single Isolated Web App ([IWA](https://chromeos.dev/en/web/isolated-web-apps)) installation. Each Sub app has its own distinct name, icons and OS integrations. \n\nSub apps appear on the desktop shelf with a distinct identity from the parent IWA, offering separate OS capabilities, such as file type association. This allows a single software package to present different, isolated functionalities to the user while maintaining a single, unified IWA install and update process. \n\nThere are three new enterprise policies available to control the Sub apps API:\n\n- [DefaultSubAppsWithoutPromptsSetting](https://chromeenterprise.google/policies/#DefaultSubAppsWithoutPromptsSetting) specifies globally (for all IWAs) if user permission prompts are required to install Sub apps. The policies below can override this default.\n\n- [SubAppsWithoutPromptsAllowedForOrigins](https://chromeenterprise.google/policies/#SubAppsWithoutPromptsAllowedForOrigins) specifies a list of IWA URLs that can add or update Sub apps without user permission prompts. \n\n- [SubAppsWithoutPromptsBlockedForOrigins](https://chromeenterprise.google/policies/#SubAppsWithoutPromptsBlockedForOrigins) specifies a list of IWA URLs that can add Sub apps with user permission prompts only. ", "markdown_fields": ["summary"], "blink_components": ["Content>WebApps"], "star_count": 50, "search_tags": [], "created": {"by": "vkrot@google.com", "when": "2026-05-04 12:23:12.458956"}, "updated": {"by": "siobhankeating@google.com", "when": "2026-08-12 12:59:19.814348"}, "category": "Isolated Web Apps-specific API", "category_int": 22, "feature_notes": null, "web_feature": "Missing feature", "is_official_web_feature": false, "webdx_usecounter_enum": null, "enterprise_feature_categories": ["2"], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": true, "is_releasenotes_publish_ready": true, "stages": [{"id": 6325596167733248, "created": "2026-05-04 12:23:13.467619", "feature_id": 6260680824061952, "stage_type": 110, "display_name": null, "intent_stage": 7, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5150339478192128, "created": "2026-05-04 12:23:13.556501", "feature_id": 6260680824061952, "stage_type": 120, "display_name": null, "intent_stage": 1, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a3408fc.3af95f39.17d45c.0404.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5155929847889920, "created": "2026-05-04 12:23:13.762927", "feature_id": 6260680824061952, "stage_type": 130, "display_name": null, "intent_stage": 2, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 150, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 6232698172604416, "created": "2026-05-04 12:23:13.856690", "feature_id": 6260680824061952, "stage_type": 140, "display_name": null, "intent_stage": 4, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5135512940707840, "created": "2026-05-04 12:23:13.956282", "feature_id": 6260680824061952, "stage_type": 150, "display_name": null, "intent_stage": 3, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5128682306928640, "created": "2026-05-04 12:23:14.166521", "feature_id": 6260680824061952, "stage_type": 160, "display_name": null, "intent_stage": 5, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a576d60.854c7482.198413.00e8.GAE%40google.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 152, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-07-24 10:15:37.695592", "creator_email": "vkrot@google.com", "updater_email": "siobhankeating@google.com", "owner_emails": ["vkrot@google.com"], "editor_emails": ["greengrape@google.com", "edmanp@google.com", "dom@chromium.org"], "cc_emails": ["korokhina@google.com"], "spec_mentor_emails": ["dom@chromium.org"], "unlisted": false, "deleted": false, "editors": ["greengrape@google.com", "edmanp@google.com", "dom@chromium.org"], "cc_recipients": ["korokhina@google.com"], "spec_mentors": ["dom@chromium.org"], "creator": "vkrot@google.com", "feature_type": "New or changed feature", "feature_type_int": 0, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 5128682306928640, "bug_url": "https://buganizer.corp.google.com/issues/414729785", "launch_bug_url": "https://launch.corp.google.com/launch/4466158", "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Content>WebApps&blocking=414729785&cc=vkrot@google.com", "screenshot_links": [], "first_enterprise_notification_milestone": 149, "enterprise_impact": 2, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": "#enable-sub-apps", "finch_name": "SubApps", "non_finch_justification": null, "ongoing_constraints": null, "rollout_plan": 0, "rollout_plan_displayname": "Will ship enabled for all users", "motivation": "Without this API developers are forced into splitting the application into separate ones which complicates distribution or bundle everything into a single huge application that can potentially confuse users.", "devtrial_instructions": "https://github.com/vkrot-cell/subapps-demo", "activation_risks": null, "measurement": "Separate programmatic counters for the .idl methods and attributes (via MeasureAs) are included to track the stats for API usage:\n\nSubAppsAdd\nSubAppsRemove\nSubAppsList", "availability_expectation": "Feature is available only in Isolated Web Apps on desktop platforms.\n\nhttps://chromestatus.com/feature/5146307550248960", "adoption_expectation": "Expected to be used initially by a small number of developers inside Isolated Web Apps.", "adoption_plan": "Working directly with developers that are planning to rely on the API.", "initial_public_proposal_url": "https://github.com/WICG/proposals/issues/282", "explainer_links": ["https://github.com/WICG/sub-apps"], "requires_embedder_support": true, "spec_link": "https://wicg.github.io/sub-apps", "api_spec": true, "automation_spec": false, "interop_compat_risks": "Other browsers may choose to implement this API.", "all_platforms": null, "all_platforms_descr": "This feature is implemented on desktop platforms, although it will only be available to the end users on platforms that support Isolated Web Apps, which is currently only ChromeOS.\n\nAndroid is excluded because installing arbitrary apps is complicated there and needs additional work.", "non_oss_deps": null, "anticipated_spec_changes": null, "security_risks": "Sub-apps share origin identity and all local data stores with their parent app, exposing them to standard same-origin security boundaries.\nPermission grants are shared bidirectionally; granting a permission to a sub-app automatically extends that permission to the parent app.\nThere is a risk of identity spoofing and launcher hijacking, which is mitigated by restricting the API to isolated contexts.\nRegistering custom OS integrations requires explicit user approval to prevent unauthorized protocol handling or file type hijacking.", "ergonomics_risks": null, "wpt": false, "wpt_descr": "JS API interface tests are in third_party/blink/web_tests/external/wpt/subapps.\n\nhttps://wpt.fyi/results/subapps?label=master&label=experimental&aligned&q=subapps\n\nMore complete tests that cover all cases are in chrome/browser/web_applications/sub_apps/sub_apps_service_impl_browsertest.cc", "webview_risks": null, "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": "There's no special devTools support for this feature.\nIt is possible to add sub apps, remove and list them via devTools console raw javascript execution. ", "doc_links": ["https://github.com/WICG/sub-apps"], "sample_links": ["https://github.com/vkrot-cell/subapps-demo"], "prefixed": null, "tags": [], "tag_review": "Tag does not review Isolated Web Apps.\nIt was stated publicly here\nhttps://github.com/w3ctag/design-reviews/issues/842#issuecomment-2917031448", "tag_review_status": "Pending", "tag_review_status_int": 1, "security_review_status": "Issues addressed", "security_review_status_int": 3, "privacy_review_status": "Issues addressed", "privacy_review_status_int": 3, "security_continuity_id": null, "security_launch_issue_id": null, "updated_display": null, "resources": {"samples": ["https://github.com/vkrot-cell/subapps-demo"], "docs": ["https://github.com/WICG/sub-apps"]}, "comments": null, "ff_views": 5, "safari_views": 5, "web_dev_views": 4, "browsers": {"chrome": {"bug": "https://buganizer.corp.google.com/issues/414729785", "blink_components": ["Content>WebApps"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["vkrot@google.com"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": true, "desktop": 152, "android": null, "webview": null, "ios": null}, "ff": {"view": {"url": null, "notes": null, "text": "No signal", "val": 5}}, "safari": {"view": {"url": null, "notes": null, "text": "No signal", "val": 5}}, "webdev": {"view": {"text": "No signals", "val": 4, "url": null, "notes": null}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": null}}}, "standards": {"spec": "https://wicg.github.io/sub-apps", "maturity": {"text": "Specification currently under development in a Working Group", "short_text": "Working draft", "val": 4}}, "is_released": false, "is_enterprise_feature": false, "experiment_timeline": null, "ai_test_eval_report": null, "ai_test_eval_run_status": null, "ai_test_eval_status_timestamp": null}