Skip to content

Editor tour

The Inertia editor is a macOS app. It hosts a live copy of your app — an iOS Simulator, an Android emulator, or a web page — shows you the Inertia-tagged view hierarchy the app reports, and records what you drag as keyframes on a timeline.

Layout

┌───────────────┬─────────────────────────────┬───────────────┐
│               │                             │               │
│   Hierarchy   │          Viewport           │  Animations   │
│               │      (your live app)        │  Properties   │
│               │                             │               │
├───────────────┴─────────────────────────────┴───────────────┤
│                          Timeline                            │
└──────────────────────────────────────────────────────────────┘

Hierarchy

The tree of every tagged view in your app, as reported by the running app. Selecting a node here selects it in the viewport; selecting in the viewport selects it here. Nodes only appear once the app has connected — an empty tree means no connection.

Viewport

Your app, live. You interact with it directly: taps and gestures go through to the app, so you can navigate to the screen you want to animate before you start recording. What is actually in the pane depends on the target:

Target Viewport Toolbar
iOS The simulator, streamed from its IOSurface Home, connection status, and the geometry of the current selection
Android The emulator, streamed as H.264 over adb Back, Home, Recents, and connection status
Web Your dev server, in a web view An address bar above the pane, defaulting to http://localhost:3000

The selection geometry readout — the position and size of the selected view, useful for working out what a normalized translate comes to in points — is reported by the SwiftUI and React runtimes. Compose does not send it, so it stays blank on the Android target.

While you drag a selected view, guides are drawn over the viewport: the container's center lines, plus dashed lines tracking the view's edges and center. They make it possible to line something up against the container rather than by eye. All three runtimes draw them.

Animations panel

The animations available in the project, and which of them are attached to the selected node. A view with no attached animation has nothing to record into; attaching one gives it a track on the timeline.

Timeline

The playhead, the transport controls, and one row of keypoints per animated view. This is where authoring happens — see Timeline and keyframes.

Framework picker

A segmented control above the animations panel chooses the target: Web, iOS or Android. Switching it swaps the viewport and points the editor at that runtime's listener — 8080, 8060 and 8070 respectively.

The three listeners run independently, so an app on each can be connected at once and switching the picker moves between them without anything reconnecting. What the picker does not do is convert a project: the animations are the same file either way, but you record them against whichever app is in the viewport.

See Choosing a runtime for what each target supports.

Autosave

The editor saves the open project every 10 seconds while you work, and on close. It will not overwrite a project with an empty animation store, so a connection that drops before the app reports anything cannot wipe work you already recorded.

You can still lose the last few seconds of edits to a crash. Nothing here replaces having the project directory under version control if the animations matter.

Getting your app in front of it

The editor can install and launch a build on the simulator for you, rather than round tripping through Xcode. Point it at a built .app bundle and it runs simctl install followed by a launch, reading the bundle identifier out of the bundle itself.

Builds you install this way still need the INERTIA_EDITOR flag compiled in — the editor cannot turn on editor mode in an app that was not built for it.

Start an emulator yourself — the editor attaches to a running one but never boots one — then install the app from Android Studio or with adb install -r.

Once a device appears, the editor opens the adb reverse tunnel and starts the screen stream on its own. Relaunching the app reconnects; you do not need to touch the editor.

Start your dev server and put its URL in the address bar above the viewport. The editor loads it in a web view. Reloading the page redials the editor.

See Editor mode for the connection details.