Manifest [os.version] Section
The [os.version] section declares the range of device OS versions your app supports. Vega validates this section at build time, and the Vega Packaging Tool (VPT) validates it again for packaged apps.
Starting with Vega SDK 0.24, the [os.version] section is required. Your build fails if the section is missing.
[os.version]
target = "1.2"
min = "1.2"
As of Vega SDK 0.24, OS 1.2 is the only minted OS version, so set both min and target to 1.2. When a later OS version is minted, set target to the newest version you build against and keep min at the oldest version you support.
Fields
The following table describes the fields in the [os.version] section.
| Field | Required | Description |
|---|---|---|
min |
Yes | The oldest OS version your app supports. Must be a valid OS version. |
target |
Yes | The newest OS version your app is built against. Must be a valid OS version and greater than or equal to min. |
Both values must be quoted "M.n" strings that name officially minted OS versions. Vega rejects a value that isn't minted, even when the value is numerically well-formed.
Validation rules
Vega applies the following rules to the [os.version] section:
-
Both
minandtargetmust be OS versions known to the SDK compatibility manifest. -
minmust be less than or equal totarget. -
Every
[[needs.module]]entry must be available atmin. -
Your code must guard APIs added after
min, which the tooling records as[[wants.module]]entries. For details, see Guard newer APIs with isPresentOnOS.
Example manifest
The [os.version] section sits alongside your other manifest sections, and the tooling generates the matching OS version module entries. A complete manifest that targets OS 1.2 looks like the following example.
schema-version = 1
[package]
id = "com.example.myapp"
title = "My App"
version = "1.0.0"
[os.version]
target = "1.2"
min = "1.2"
# Generated by the tooling. Don't edit by hand.
[[needs.module]]
id = "/com.amazon.vega.os@IVega_1_2"
The [os.version] section is yours to set, and the tooling generates the module entries. Each OS version module id is the OS version with its dot replaced by an underscore, so 1.2 becomes /com.amazon.vega.os@IVega_1_2.
Because min and target are both 1.2 in this example, the manifest has a single [[needs.module]] entry and no [[wants.module]] entry. The tooling emits a need for min, and it emits a want only for a version above min.
Add the [os.version] section
You can add the section in three ways.
| Method | Command |
|---|---|
| By hand | Edit manifest.toml directly |
| With the manifest generator | vega project update-manifest --os-min 1.2 --os-version 1.2 |
| While re-aligning packages | vega project install --fix --os-min 1.2 --os-version 1.2 |
For a project that has no [os.version] section yet, use one of the first two methods. Both are built for authoring the section.
The third method is a convenience during migration, and it's narrower than it looks. Pass both --os-min and --os-version. install resolves your OS target before it writes anything. On a project that has no [os.version] section and no --os-version value, it fails with Missing OS Version and writes nothing. With both flags, it creates the section, sets min, seeds target, and confirms with 📝 Set [os.version] min = "<v>" in manifest.toml.
Three more limits apply to the third method:
-
--os-mintakes effect only together with--fix. Neither a barevega project install --fixnor aninstall <package>run adds the section. -
--dry-runpreviews the change without writing it. -
When
[os.version]already exists, this form writesminonly and leaves yourtargetunchanged. A legacy[os]section counts as an existing section for this purpose. To changetarget, usevega project update-manifest.
To validate your manifest's OS version configuration from the command line, run vega project doctor. To generate the [[needs.module]] and [[wants.module]] entries, run vega project update-manifest.
[os.version] by hand, regenerate your module entries. The [[needs.module]] and [[wants.module]] entries are derived from [os.version], so they can fall out of sync when you change min or target outside the tooling. Re-run vega project update-manifest after any hand-edit. Don't write the OS version module IDs yourself, because update-manifest resolves the correct, validated IDs from the SDK compatibility manifest. A hand-typed ID that doesn't match the expected format fails vega project doctor validation.Related topics
- Target OS Versions
- Manifest [needs] Section
- Manifest [wants] Section
- Vega SDK CLI Reference
- Validate App Manifest in Vega Studio
Last updated: Aug 10, 2026

