TweakLane lets the people using your app rearrange, restyle and rebuild its screens. A screen's layout is a JSON document. It is drawn only with components your app compiled in and registered. TweakLane never downloads or runs code.
How it works
- Register your components in a catalog: a stable id, a builder, a props schema, the alternatives it may be swapped for and a lock level.
- Provide a default document per screen. It is the screen as you ship it, and the fallback for every failure.
- Render screens through the engine. It reads the user's saved layout, validates it against your catalog and locks, and draws it. Anything that fails validation renders your default.
- Open edit mode wherever your app wants it. Users move, hide, resize, swap, restyle, add screens and change navigation; every edit is validated before it is applied.
- Connect the hosted backend (optional) to sync each user's designs across devices, add AI, and use kill switches and the dashboard.
Without the backend, layouts stay on the device and nothing leaves it.
Platforms
| Platform | Package | Guide |
|---|---|---|
| iOS (SwiftUI, iOS 17+) | Swift Package https://github.com/tweaklane/tweaklane-ios |
Quickstart: iOS |
| macOS (SwiftUI) | the same Swift package | Quickstart: macOS |
| Android (Kotlin, Compose, API 26+) | Git tag 1.0.0, source |
Quickstart: Android |
| Desktop (Compose Desktop on Windows, macOS, Linux) | Git tag 1.0.0, source |
Quickstart: Compose Desktop |
| Web (React 18.2+) | GitHub release 1.0.0, source |
Quickstart: Web |
| Flutter | Git tag 1.0.0, source |
Quickstart: Flutter |
Every SDK reads the same document format, passes the same shared validation fixtures and talks to the same API. The SDKs are open source under the MIT License; see Open source.
Keys
Every app in the dashboard gets two keys:
| Key | Prefix | Where it lives |
|---|---|---|
| Public SDK key | tl_pk_… |
In your app. Sent as the x-tweaklane-key header. Identifies the app. |
| Secret server key | tl_sk_… |
On your backend only. Signs user tokens and calls the server routes. Never put it in an app. |
The dashboard also shows your app's API base URL, written as {TWEAKLANE_URL} throughout these
docs.
What users can change
- Layout: move, hide, resize and swap parts; stacks, rows, grids, scrolling sections, lists, forms and pages.
- Themes: for the whole app or one screen, within your contrast rules.
- Per-part style: text size, emphasis, colour, background, corners, padding.
- Content options: the options you declare per part (counts, choices, subsets, toggles).
- User screens: new screens built from portable parts and generic pieces.
- Navigation: entry points, menus, shortcuts and the start screen.
- History: undo and redo, versions, named designs.
- AI: a sentence becomes a validated preview.
Next: Quickstart: iOS.