Troubleshoot app building
Resolve invalid definitions, empty previews, action failures, and layout problems.
The builder reports problems by definition location. Start with the named component, source, property, event, or layout relationship instead of changing unrelated fields until Save becomes available.
| Problem | What to inspect |
|---|---|
| Save disabled | No unsaved changes, a reported definition problem, invalid pending Code text, or a save already running. |
| Code will not switch to Canvas | Correct JSON/schema errors; the builder is preserving rejected text rather than discarding it. |
| Empty Preview | Confirm the source target and scope, then check the binding path and component's expected value type. |
| Button cannot run in Preview | Preview does not execute backend workflow triggers. Save and test in the app. |
| Run action invalid | Select a workflow-record source, enable Allow run trigger, and remove any fixed run pin. |
| Watch action invalid | Supply a non-empty upload ingestId binding; remove ingestId when using fetch or run. |
| Action chain stops | Inspect the first error. Later actions do not run after an executor or binding failure. |
| Output source says Unknown | Retry the directory read; incomplete evidence does not prove withdrawal. |
| Output source has no matching types | Remove or correct narrowing within the producer's published record types. |
| Nesting refused | Check parent type, slot name, cycles, and the four-level cap. |
| Region cannot be changed | The component inherits its root container's region; move it to top level first. |
| Span has no effect | Span applies to the main grid, not every sidebar or detail arrangement. |
| Hidden component loses local state | Check whether that type supports literal Preserve state while hidden. |
| Copied control changes original target | Duplicate copies action references; update targets intentionally. |
| Binding broke after rename | Review expression text for the old id even if explicit action references were retargeted. |
| Feature unsupported by engine | Upgrade the app's engine or use a supported configuration; redeploying does not change its pin. |
Separate draft and runtime evidence
Preview reads a bounded sample and resets transient state when definition edits remount it. Use a saved running app to verify execution, durable table/document changes, review authority, and sharing. Use the workflow's run details to confirm a polling deadline did not merely stop observation of still-running work.
Before discarding a conflict or local draft, preserve any changes you still need. See Saving and conflicts and App troubleshooting.