Skip to content
Flow-UILive
Flow-UI · server driven UI for SwiftUI

Your backend
paints the screen.

Flow-UI turns JSON into native SwiftUI. Pages, widgets, actions and theming, all driven by your server. Open the docs, try the playground, and ship.

Launch week
Save on every accessory
Popular this week
AirPods Pro 2
Active noise cancellation
BESTSELLER
Watch Series 10
GPS, 46 mm
9:41

How the screen gets to the phone.

Flow-UI is a server driven UI framework for SwiftUI. Your backend sends JSON; the client renders native iOS screens. Teams also call this backend driven UI, API driven UI, or remote UI. Same split: the server describes the screen, SwiftUI paints it. No WebView, no HTML overlay, no App Store release to change a layout.

The contract is a page of sections of widgets. A component registry maps each type string to a SwiftUI view. Actions, sheets and mutations travel as data. The playground renders any payload you paste. Longer form lives on the blog: Server driven UI for SwiftUI.

Native where it counts.
Dynamic where it matters.

Open widget registry

One call registers a widget: the backend type string, its payload model, its SwiftUI view. No framework enums, no forks.

Pages that refuse to die

Unknown types and malformed payloads are contained with exact key path diagnostics. One bad widget never blanks a screen.

Actions as data

Taps carry declarative actions: toasts, sheets, API mutations, deeplinks. Handlers chain, so your router stays yours.

Backend controlled chrome

Margins, padding, corners, gradients, borders and widths all come from the response, applied in one fixed order.

Theming that plugs in

Hex colors with dark variants out of the box; design system tokens through one protocol. Light and dark for free.

Loading states built in

Shimmer, skeletons and gradients ship in the framework, per widget and per page, toggleable from the backend.

JSON in. Interface out.

The pipeline is deliberately small: decode through the registry, contain anything broken, render what remains. Every step is observable in the debug console.

Response

One JSON document describes the whole screen: sections, widgets, chrome and actions.

Registry

Each type string resolves to a registered widget. Your app extends the table in one line.

Native render

Real SwiftUI views with real gestures, scrolling and animation. No WebViews anywhere.

Unknown widget on the way? It drops to a labelled placeholder with its key path in diagnostics, and the rest of the page renders. Forward compatibility is the default.

Ship your next screen from the server.

One package, zero dependencies, iOS 17 and up. Free and open source under the MIT licence.