Milano SDK Specifications
Milano is a client-only, design-system-agnostic Document-Driven UI (DDUI) framework for SwiftUI and Compose. Milano targets UI toolkits, not operating systems: it is usable wherever SwiftUI runs (iPhone, iPad, macOS, watchOS) and wherever Compose runs (Android, desktop). The first sample apps target iOS and Android.
Milano consumes UI documents and defines the mechanics of document-driven UI: the document model, its expression language, its state and action models, and the runtimes that materialize documents into native UI (SwiftUI, Compose). The consumer defines everything else: the component vocabulary and its visual rendering.
Milano is not server-driven UI (it never talks to a server), not a SaaS (there is nothing hosted, nothing to sign up for), and not a design system (it draws nothing).
Version 0.1 targets two capabilities: banners and interstitials, and simple document-defined forms.
Try the contract in the browser: the Milano Playground validates vocabularies and documents against these schemas and the reference checker, live.
Specifications
| # | Spec | Status |
|---|---|---|
| 00 | Foundations | Beta |
| 01 | Document model | Beta |
| 02 | Vocabulary schema | Beta |
| 03 | Expression language | Beta |
| 04 | State & actions | Beta |
| 05 | Conformance suite | Beta |
| 06 | Runtime API | Beta |
Worked examples for both v0.1 capabilities, with their conformance vectors: Examples.
Spec process
Every spec moves through three statuses:
- Beta: the content is being shaped. Anything may change, without trace.
- Review: the content is complete and precise. Changes require recording what changed and why in the spec’s history.
- Stable: the spec is normative. Runtimes and conformance vectors may rely on it; changes happen only through an amendment that bumps the contract version.