Versioned package
app.json selects the active version and lists every stored version.
Open project format · Version 2.0
The portable structure behind .appmostapp projects. Version 2 stores
explicit project versions and describes native interfaces through stable,
semantic row types.
documentVersion: 2
app.json
versions/
└── 1/
├── version.json
├── localizations.json
└── pages/
└── home.json
resources/
Each numbered directory is a complete stored app version. Shared media stays at the package root.
Contract
app.json selects the active version and lists every stored version.
Each row declares a canonical type such as "type": "singleLabel".
Format validity and renderer support are separate. Unsupported required content must fail clearly.
Row anatomy
Rows share fields for layout, styling, actions, and nested children. Content arrays
such as labelModels, imageViewModels, and
buttonModels fill the slots described by the row type.
The published renderer targets are iOS with SwiftUI and Android with Compose. The diagrams are explanatory, not pixel-level requirements.
{
"id": "weekend-title",
"type": "singleLabel",
"labelModels": [
{ "text": "Weekend plan" }
],
"contentPadding": {
"top": 12, "right": 16,
"bottom": 12, "left": 16
}
}
Native rendering
Each row type maps to its own SwiftUI template on iOS and Compose template on Android. The examples below are rendered by the Android app from the published test project.
Open the Compose test project on GitHub
Canonical registry
Search every row name published for document version 2. Use Preview to compare the isolated SwiftUI and Compose output in light or dark appearance.
| Row | Category | iOS · SwiftUI | Android · Compose |
|---|
The row registry could not be loaded. Reload the page to try again.
No row types match these filters.