> For the complete documentation index, see [llms.txt](https://docs.buzzy.buzz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.buzzy.buzz/troubleshooting/in-app-debugging.md).

# In-App Debugging

Use this page when a Buzzy app screen, form, view, filter, action, field binding, row context, display formula, or runtime state does not behave as expected.

The Buzzy **Debug** tab and debug agent show what the editor and runtime understand about the selected screen or node. Use them to interpret semantic issue patterns, inspect data binding, and choose the right fix.

## Debug tab sections

The Debug tab is contextual, so not every section appears for every selection. Common sections include:

| Section                    | What it tells you                                                                                      |
| -------------------------- | ------------------------------------------------------------------------------------------------------ |
| **Selection**              | What Buzzy thinks you have selected and the scope being inspected                                      |
| **Data binding**           | Which table, field, sub-table, or row context the selected node uses                                   |
| **Issues**                 | Problems found on the current selection, plus issues found in descendants when you are at screen scope |
| **Visibility and display** | Conditions that control whether the item appears                                                       |
| **Runtime context**        | The surrounding route, row, or view context Buzzy can infer                                            |
| **Row data**               | Record-level context when the selection belongs to repeated content or a record-driven screen          |
| **Table fields**           | Available fields for the active table or view context                                                  |

## Severity levels

Issue severity is grouped into three levels:

| Level       | Meaning                                                      |
| ----------- | ------------------------------------------------------------ |
| **Info**    | Useful context or a condition that may explain behaviour     |
| **Warning** | Something looks suspicious and may cause a bug               |
| **Error**   | Buzzy found a concrete misconfiguration or broken dependency |

In general, fix **Errors** first, then review **Warnings**, then use **Info** items as context when you need to understand why something is behaving a certain way.

## Runtime context

Runtime context helps explain why a component may behave differently depending on where it is used. This can include:

* whether the node expects a parent row context
* which table or sub-table is active
* whether the node sits inside a repeated view
* whether display rules, visibility rules, or actions depend on route or record state

When an issue mentions missing context, it usually means the selected node expects a parent view, row, or binding that is not available in its current position.

## All semantic issue types and fix options

This table lists the semantic issue types currently defined in the screen analyzer, together with the fix options attached to each issue guide.

<table><thead><tr><th valign="top">Issue type</th><th valign="top">What it means</th><th valign="top">Fix options</th></tr></thead><tbody><tr><td valign="top"><strong>Missing view table setting</strong></td><td valign="top">A view component has no selected datatable, so it cannot load rows.</td><td valign="top">Bind the view to the correct table.</td></tr><tr><td valign="top"><strong>Missing form table setting</strong></td><td valign="top">A form component has no selected datatable, so its fields have no form data source.</td><td valign="top">Bind the form to the correct table.</td></tr><tr><td valign="top"><strong>Missing filter table setting</strong></td><td valign="top">A filter component has no selected datatable, so its filter fields have no source table.</td><td valign="top">Bind the filter to the correct table.</td></tr><tr><td valign="top"><strong>Missing filter context setting</strong></td><td valign="top">A filter component has no filter-context name, so views cannot reference its output.</td><td valign="top">Set the filter context name.</td></tr><tr><td valign="top"><strong>Missing field selection</strong></td><td valign="top">A field node has no selected field binding.</td><td valign="top">Bind the node to the correct field.</td></tr><tr><td valign="top"><strong>Invalid table reference</strong></td><td valign="top">The configured datatable reference does not exist in the current app data model.</td><td valign="top">Rebind the component to the correct table.</td></tr><tr><td valign="top"><strong>Invalid field reference</strong></td><td valign="top">The configured field reference does not exist in the current data model.</td><td valign="top">Rebind the node to the correct field.</td></tr><tr><td valign="top"><strong>Sub-table field bound to non-sub-table field</strong></td><td valign="top">A sub-table field node is bound to a field that is not actually a sub-table field in the data model.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Bind the sub-table node to the correct sub-table field.</p><p>2. Replace this sub-table node with the correct node type for the selected field.</p><p>3. Remove this sub-table node if it is not needed.</p></td></tr><tr><td valign="top"><strong>Field requires screen row context</strong></td><td valign="top">This read/summary/edit/value field has no local row context and would rely on a row being passed into the screen at runtime.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Fix the action that opens this screen so it passes the current row. Best when the screen is meant to open as a detail screen for a selected row.</p><p>2. Put this content inside a local view, form, or sub-table that provides row context. Best when this node should get its row from nearby screen structure instead of navigation.</p></td></tr><tr><td valign="top"><strong>Field immediate context mismatch</strong></td><td valign="top">The field belongs to a different datatable than the node’s immediate semantic context.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Rebind the node to the correct field. Best when the node is simply pointing at the wrong table field.</p><p>2. Put this content inside the correct local view, form, or sub-table context. Best when the field is structurally outside the wrapper that should provide its row context.</p></td></tr><tr><td valign="top"><strong>Subtable requires parent row context</strong></td><td valign="top">This subtable needs a parent row context and would rely on a screen row being passed at runtime if no local row context exists.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Fix the action that opens this screen so it passes the parent row. Best when the screen is meant to open in the context of a selected parent record.</p><p>2. Put the sub-table inside the correct local parent-row context. Best when the sub-table should inherit parent context from nearby screen structure instead of navigation.</p></td></tr><tr><td valign="top"><strong>Insert field outside capture form</strong></td><td valign="top">An insert-mode field is outside a capture-form layout, so it cannot behave as a valid insert field.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Change the field to a non-insert mode. Best when this is an isolated field on a display-oriented screen.</p><p>2. Wrap this branch in a capture form. Best when several insert fields or submit actions in the same branch suggest missing form structure.</p></td></tr><tr><td valign="top"><strong>Form initial mode layout missing</strong></td><td valign="top">The form starts in a mode whose layout is missing.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Add the missing form layout.</p><p>2. Change the form initial mode to one that already has a layout. Best when the existing layouts are correct and the start mode is the wrong part.</p></td></tr><tr><td valign="top"><strong>Submit action outside capture form</strong></td><td valign="top">A submit action is outside a capture-form layout.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Move the submit action into the capture form. Best when the form structure already exists and only the action placement is wrong.</p><p>2. Wrap this branch in a capture form. Best when nearby fields and actions show the whole branch is missing form structure.</p></td></tr><tr><td valign="top"><strong>Form mode action outside form</strong></td><td valign="top">A form mode action is outside a form component.</td><td valign="top">Wrap this branch in a form.</td></tr><tr><td valign="top"><strong>Form mode target layout missing</strong></td><td valign="top">A form mode action points to a form mode whose layout does not exist.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Add the missing target layout.</p><p>2. Change the action to a mode that already exists. Best when the intended destination mode was configured incorrectly.</p></td></tr><tr><td valign="top"><strong>View results missing repeat</strong></td><td valign="top">The view results layout has no repeated row node.</td><td valign="top">Add the repeated row inside the view results.</td></tr><tr><td valign="top"><strong>View results has multiple repeats</strong></td><td valign="top">The view results layout has more than one repeated row node.</td><td valign="top">Remove the extra repeated row structure.</td></tr><tr><td valign="top"><strong>View results layout missing</strong></td><td valign="top">The view has no results layout.</td><td valign="top">Add or restore the view's results layout.</td></tr><tr><td valign="top"><strong>View no-results layout missing</strong></td><td valign="top">The view has no no-results layout.</td><td valign="top">Add or restore the view's empty-state layout.</td></tr><tr><td valign="top"><strong>View has no renderable layout</strong></td><td valign="top">The view has neither a results layout nor a no-results layout, so it cannot render meaningful view output.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Add or restore the view's results layout.</p><p>2. Add or restore the view's empty-state layout.</p></td></tr><tr><td valign="top"><strong>View paging action outside view</strong></td><td valign="top">A paging action sits outside a view results layout.</td><td valign="top">Move the paging control into the view controls area and outside the repeated row.</td></tr><tr><td valign="top"><strong>View paging action inside repeat</strong></td><td valign="top">A paging action is inside the repeated row node, where it should not be.</td><td valign="top">Move the paging control into the view controls area and outside the repeated row.</td></tr><tr><td valign="top"><strong>View may need sub-table field</strong></td><td valign="top">A generic view is querying a child table inside a parent row context where a declared sub-table relationship already exists.</td><td valign="top">Replace the generic view with the matching sub-table field.</td></tr><tr><td valign="top"><strong>Filter action outside filter component</strong></td><td valign="top">A filter action is outside a filter component.</td><td valign="top">Wrap this branch in a filter component.</td></tr><tr><td valign="top"><strong>Filter field outside filter component</strong></td><td valign="top">A filter-mode field is outside a filter component.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Wrap this branch in a filter component. Best when the field and nearby filter behavior belong inside a filter wrapper.</p><p>2. Change the field to filter mode after moving it into the correct filter context. Best when the field is meant to stay as part of a filter UI.</p></td></tr><tr><td valign="top"><strong>Filter field mode mismatch</strong></td><td valign="top">A field inside a filter component is not using filter mode.</td><td valign="top">Change the field to filter mode.</td></tr><tr><td valign="top"><strong>Filter context not consumed on this screen</strong></td><td valign="top">The filter context name is not currently referenced by any known consumer in static analysis.</td><td valign="top">Align the filter context name with the intended consumer.</td></tr><tr><td valign="top"><strong>Filter context has no same-screen consumer</strong></td><td valign="top">The filter context is not consumed by any same-screen view.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Align the filter context name with the intended consumer.</p><p>2. Add the missing same-screen consumer for this filter context.</p></td></tr><tr><td valign="top"><strong>View filter context missing provider</strong></td><td valign="top">A view references a filter context that has no same-screen provider.</td><td valign="top"><p><strong>Possible solutions:</strong></p><p>1. Align the filter context name with the intended provider.</p><p>2. Add the missing same-screen filter provider.</p></td></tr><tr><td valign="top"><strong>Unknown action target</strong></td><td valign="top">An action targets a screen that does not exist.</td><td valign="top">Rebind the action to a valid screen.</td></tr></tbody></table>

For the task-oriented walkthrough, see [Debugging with the Debug Tab and Debug Agent](/getting-started-with-buzzy/new-buzzy-ai-v3/6.-debugging-with-the-debug-tab-and-agent.md).
