Render iOS app screens from JSON returned by an LLM or backend
Push UI changes without an App Store release by swapping DSL files
Prototype iOS layouts in JSON and validate them with the debug instance
Build a server driven UI layer for an existing native app
Requires iOS 18, Swift 6.1, Xcode 16, and must be built against the iOS Simulator because swift build on macOS cannot find UIKit.
App8Engine is an iOS library that draws native screens at runtime from a JSON description. The idea is that an iPhone app does not have to ship its user interface as fixed Swift code anymore. Instead, the host app provides JSON in a format the project calls the App8 DSL, and App8Engine turns that JSON into real UIKit view controllers and views. The README points to use cases like AI-generated user interfaces, where the screens come from a model or a server rather than being written by hand. The engine is built only on Apple frameworks, namely UIKit, Foundation, Combine, and MapKit, with no third-party dependencies. It produces native views rather than wrapping a web view. Screens support reactive variables, expressions written inside double curly braces, component state, and navigation between screens described in the DSL itself. Requirements are iOS 18 or newer with Swift 6.1 and Xcode 16. Installation is through Swift Package Manager, pointing at the project URL with version 0.1.0 or higher. The README warns that the project is in the 0.x range and the public API can change between minor versions. The engine itself never fetches content. Instead, the developer implements a protocol called App8DataSource that returns JSON for the app manifest, screens, components, styles, and assets. The data can come from the bundle, the network, or anywhere else. To render, you create an App8.Instance with your data source, call startApp, and present the returned root view controller. A separate debugInstance method lets you render a single screen on its own or validate DSL without going through the full app flow. A minimal screen example in the README shows a counter that has a label bound to a count variable and a button with a tap action that increments it. The DSL covers components such as label, button, image, collection, and stackView, plus styles, layout, variables, actions, navigation, collections, and animations, with full reference in the docs/dsl directory. Tests run against the iOS Simulator. The license is Apache 2.0.
Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.