Isolated Web Apps (IWAs) offer a high-trust, secure, and version-discrete runtime environment on top of the web platform. In production environments—particularly within managed enterprises—administrators and developers need fine-grained control over software deployments.
To meet these requirements, Chrome provides comprehensive version management capabilities for IWAs, including Update Channels, Version Pinning, and Version Downgrading. These features enable deployment predictability, and rapid recovery controls across your user base.
Availability
Version management behavior depends on whether the IWA is managed by an administrator or installed directly by a user:
- Managed IWAs: Administrative features (including policy-driven pinning and downgrades) are available from Chrome 133.
- Unmanaged (User-Installed) IWAs: User-facing features (such as manual channel selection) are available from Chrome 150.
Session type compatibility
All version management functionalities—including update channels and version pinning—are fully compatible across all ChromeOS session types. This includes:
- Standard managed User Sessions
- Managed Guest Sessions (MGS)
- Dedicated Kiosk mode environments
Update channels
By using update channels, developers can segment specific application builds for
distinct deployment and testing audiences. To configure channels, add an
optional channels array field to each version entry within the application
update manifest. These channel names are not constrained to fixed platform
keywords (like canary or stable) but are instead arbitrary,
developer-defined identifiers that must be formatted as lowercase ASCII
alphanumeric strings (which can include hyphens or underscores but no spaces).
If a version entry omits the channels field entirely, Chrome implicitly defaults
its availability to the "default" channel. Ultimately, the channel name
designated in the administrative policy must exactly match the string defined in
the manifest; any typographical errors or mismatched configurations will result
in no eligible version being identified, effectively halting updates for those
clients.
Manifest configuration
To configure channels, add an optional channels array to each version entry in
your
Web App Manifest.
Here are some considerations to take into account:
- Channel mapping: If a version entry defines a
channelsarray, that version is only eligible for installation on the specified channels. - The default fallback: If a version entry omits the
channelsfield entirely, Chrome assumes the version belongs exclusively to thedefaultchannel. - Exact string matching: Channel names specified in client-side policy configurations must exactly match the strings defined in the update manifest (case-sensitive). If no version matches the targeted channel name, the app will fail to find eligible updates.
Update manifest example
The following example shows an update manifest supporting multiple release channels:
{
"versions": [
{
"version": "0.1.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.1.0/iwa-sink.swbn",
"channels": ["delta"]
},
{
"version": "0.2.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.2.0/iwa-sink.swbn",
"channels": ["delta", "default"]
},
{
"version": "0.3.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.3.0/iwa-sink.swbn",
"channels": ["beta", "delta"]
},
{
"version": "0.4.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.4.0/iwa-sink.swbn"
}
]
}
Based on this manifest, the following versions are available per targeted channel:
- default:
0.2.0,0.4.0(which lacks an explicit channel and defaults to default) - delta:
0.1.0,0.2.0,0.3.0 - beta:
0.3.0
The IWA update engine supports targeting specific release channels by looking for a channels field inside the app's Update Manifest.
Version pinning
In high-compliance or highly stable enterprise environments, administrators must ensure devices run exact versions of business-critical software. Version pinning allows administrators to lock an IWA to a specific version, halting all subsequent background updates. This provides enterprises with a highly reliable way to maintain stable configurations and comply with strict internal or industry regulations.
To freeze an Isolated Web App (IWA) at a specific release build, enterprise
administrators can configure the pinned_version property within the
IsolatedWebAppInstallForceList
policy. This capability is primarily managed through the interactive UI controls
in the Google Admin
Console under the
application's details panel following the standard IWA installation
workflow, though
administrators also retain the flexibility to deploy these policy values
directly using raw JSON configurations. Once a valid version string is
successfully targeted by the administrator, Chrome pulls that explicit package
and blocks all subsequent automatic forward updates.
Special behaviors and constraints
- Resuming updates (Unpinning): To restore automatic updates, remove the
pinned_versionproperty or change its value to a newer target version. - No downgrade by default: Setting
pinned_versionto a version lower than the currently installed version will not trigger a rollback unlessallow_downgradesis explicitly enabled. - Unavailable pin targets: If the configured
pinned_versionis missing from the designated update channel, or is older than the installed version (with downgrades disabled), Chrome will retain the currently installed version and block any further updates. - Fresh deployments: If an IWA is not yet installed on a managed device, and the specified pinned_version cannot be retrieved or is missing from the update manifest, the IWA will fail to install.
Version downgrading
If a newly deployed update introduces a critical bug or vulnerability, administrators may need to roll back devices to a previous stable state. Chrome supports downgrading already installed managed IWAs to a lower version—a capability that was previously unavailable on the platform when only forward updates were allowed.
Downgrading is possible only if both of the following policy conditions are met:
pinned_versionis set to a valid, older version.allow_downgradesis explicitly set to true.
How downgrades work
- Trigger mechanism: Rollbacks are processed during the regular update check cycle (which runs every 4–6 hours).
- Under the hood: Chrome performs a full reinstallation of the IWA using the older web bundle (.swbn) specified in the update manifest.
Channel transition logic
When switching an app's targeted channel with a policy, the update engine adheres to specific behaviors:
Scenario A: Switching to a channel with earlier versions
- If downgrading is allowed: If pinned_version matches an older version on
the target channel and
allow_downgradesis true, a rollback occurs (and local user data is wiped). - If downgrading is disallowed: No downgrade will occur. The device will remain on its currently installed higher version and will only update when a newer version becomes available on the newly selected channel.
Scenario B: Switching to a channel with an identical version
- No changes: If the newly selected channel points to a version number equal to the currently installed one, Chrome will make no modification to the installed bundle.
- Byte-by-Byte identity principle: Developers must guarantee that identical version numbers across different channels contain identical, byte-matching code signatures. Deploying different codebases under the same version string across channels can result in unexpected, erratic application states.
Administrative policy configuration
Enterprise version controls are enforced with the centralized Google Admin
Console platform using the
IsolatedWebAppInstallForceList
policy schema. These settings can be managed directly through UI controls in the
Admin Console, or deployed using raw JSON policy configurations.
The following administrative policy configuration example demonstrates update
channels, version pinning, and downgrades:
Policy value representation
[
{
"update_manifest_url": "https://awesome-kitchen-sink.glitch.me/update.json",
"web_bundle_id": "aiv4bxauvcu3zvbu6r5yynoh4atkzqqaoeof5mwz54b4zfywcrjuoaacai",
"channel": "beta",
"pinned_version": "0.7.0",
"allow_downgrades": true
}
]
Schema parameter explanations
channel(string, optional): Instructs Chrome to only evaluate versions assigned to this channel in the update manifest. If omitted, Chrome evaluates the "default" channel.pinned_version(string, optional): Explicitly locks the device to the specified version string. Subsequent automatic background updates are blocked.allow_downgrades(boolean, optional): Enables rollback capability. If true and paired with a valid, olderpinned_version, Chrome will trigger a downgrade reinstallation. Warning: Setting this parameter to true will block all standard forward updates even if thepinned_versionfield is omitted.
Unmanaged (user-installed) IWAs (from 150)
For unmanaged, user-installed Isolated Web Apps, versioning operates with manual user interactions:
Installation Bundle ──► User Selects Channel ──► Automatic Checks on Selected Channel
Manifest prerequisite for automatic updates
For user-installed IWAs to check for and receive automatic periodic updates in
the background, the app's local Web App Manifest (the metadata packaged inside
the bundle at /.well-known/manifest.webmanifest) must contain a valid
update_manifest_url field.
If this URL is omitted from the application's local manifest file, the unmanaged update engine will never perform background checks, and the application will remain permanently frozen on its initial installation version.
Manual channel selection
During the initial installation of an unmanaged IWA, the browser checks the update manifest and displays available channel options (for example, "Stable", "Beta") directly to the user if the developer has configured multiple channels.
Key lifecycle rules
- First install origin: Regardless of the channel selected by the user at installation, the initial installation always deploys the files packaged inside the provided installation bundle.
- Subsequent updates: Once installed, future updates are queried exclusively from the chosen channel. The app will update only when a version higher than the installed one is published to that targeted channel.
- Switching channels: To switch to a different update channel after installation, the user must uninstall the IWA and reinstall it, choosing the selected channel during the installation flow.
How to test managed deployments
For administrators managing devices through the Chrome Enterprise Admin Console or configuring policies directly:
- Navigate to the App Details panel under the organizational settings.
- Apply configuration properties to test pinning and channel targets. Because these controls are fully compatible with standard User Sessions, Managed Guest Sessions (MGS), and Kiosks, you can verify behaviors across all target deployment environments.
- To inspect update checks locally, navigate to
chrome://web-app-internalson a test client to manually force update checks and analyze incoming manifest packets.
Conclusion
The security architecture of Isolated Web Apps is designed to empower developers while maintaining strict predictability and control over application lifecycle behaviors. By taking advantage of Chrome's version management features, both developers and IT administrators can build robust deployment pipelines that align with strict compliance standards and operational goals.
As you design and manage your application's update strategy, keep these core principles in mind:
- Use progressive channels: Update channels (like
beta,dev, or custom rings) let you progressively gather telemetry and feedback. This ensures major updates undergo rigorous verification before hitting the general population on the default channel. - Pin for stability: In highly structured or compliance-driven enterprise environments, lock critical endpoints to a verified, exact pinned_version to protect operations from unexpected breakages or workflow disruptions.
- Reserve downgrades for emergencies: Recognize that version downgrading is a powerful, corrective safety valve that was previously impossible. However, because a rollback triggers a complete reinstallation and purges all local client storage (IndexedDB, LocalStorage, cookies), it should be strictly reserved for critical security remediation. For ordinary patches, deploying a minor forward-looking update is always the ideal strategy.
- Understand policy flags: Be mindful of administrative switches; turning
on
allow_downgradeswill halt all forward updates even if a pin is not actively defined. - Establish Byte-by-Byte Integrity: Ensure that identical version numbers deployed across different channels map to identical, byte-matching bundles to avoid erratic application states when clients transition between channels.
By integrating these features directly into your Update Manifest and enterprise policy schema, you can ensure a reliable, auditable, and secure update flow that preserves the high-trust guarantees of the Isolated Web App ecosystem.