Package & Distribution
| Format | Contents | When to use |
|---|---|---|
| Single JSON file | One root module JSON file. | Simple screens, backend-generated payloads, API-delivered updates. |
| Zip package | JSON file(s) + localization/*.strings + assets/ folder + optional sub-module *.json files. | Feature packages with custom localization, bundled images, or multi-screen units. |
14.1 Zip Package Structure
Section titled “14.1 Zip Package Structure”my_feature.zip├── main.json ← root module├── login.json ← sub-module loaded via file://login.json├── bubble.json ← component loaded via file://bubble.json├── localization/│ └── en.strings ← "key" = "value"; format└── assets/└── logo.png ← loaded via file://assets/logo.pngℹ Note: Source string resolution order inside a package: package resources first, then host app resources. This lets a package override app-level assets and localization strings.
14.2 Localization File Format
Section titled “14.2 Localization File Format”"welcome_title" = "Welcome Back";"close_button" = "Close";
// In StemJSON - direct in _text:"_text": "l10n://welcome_title"
// In an expression:"_text": "{{ localize('welcome_title', 'Welcome Back') }}"