Every Smart Component is one of three types: UI, Logic, or Query. The type is set when the component is created and cannot be changed afterward. All three types appear in the Component Library section of the component tray. Each is configured through the same settings panel, but behaves differently on the canvas.
Each placement on the canvas is a block: a reference to the component's definition in the Smart Component Library, not the definition itself. The block is what the rest of the module can see, target, and configure. The components inside the block are not directly visible to the module.
The Build Agent names Smart Components with a type prefix. Components beginning with UI- are UI Smart Components. Components beginning with LB- (Logic Builder) are Logic Smart Components. The prefix is visible in the component name on the canvas and in the Smart Component Library.
UI
A UI Smart Component renders a visual interface directly on the module canvas. It receives input values from the module, processes them, and displays output.
On the canvas: Renders inline, like a standard Unqork component. Creators can see the component's output in UI View.
In the settings panel: fields map to the component's declared interface. Set each input as a static value or wire it as a reference to another component's value on the module.
Common uses: Custom display elements, interactive widgets, or data visualizations.
Targeted from other components: The block has visual presence on the canvas, so other components can show or hide it. Other components can also write values that the block reads from submission data.
Logic
A Logic Smart Component has no visual presence on the canvas. It runs in sequence with other components, processes input data, and returns output data through triggers.
On the canvas: Not visible in UI View. Displays in Config View as a logic entry, alongside standard logic components like the Initializer component and Decisions component.
In the settings panel: Input fields map to the component's declared interface. Wire output triggers to pass results to other components on the module.
Common uses: Data transformations, calculations, or conditional logic.
Targeted from other components: The block has no visual presence, so show and hide do not apply. Other components trigger the block to run.
Query
A Query Smart Component reads data from a data source. It is configured like a Plug-In component: inputs are mapped, the query runs when triggered, and results are returned through the post-trigger.
On the canvas: Not visible in UI View. Displays in Config View as a logic entry alongside Logic Smart Components.
In the settings panel: Configure the Target, Post Trigger, and Error Trigger. A read-only Query Pipeline section displays the query's generated definition for reference. The query never runs automatically. It runs only when triggered.
Common uses: Reading submission data, fetching records, filtering data sets, or populating drop-down options from a data source. Query Smart Components are the recommended approach for submission data reads in Unqork modules.
Targeted from other components: The block has no visual presence, so show and hide do not apply. Other components trigger the block to run.
Comparison
| UI | Logic | Query | |
|---|---|---|---|
| Visible on canvas | Yes | No | No |
| Visible in UI View | Yes | No | No |
| Has output triggers | No | Yes | Yes (post-trigger) |
| Runs automatically | Yes (renders on load) | When triggered | Never (trigger required) |
| Reads external data | No | No | Yes |
| Can be shown/hidden | Yes | No | No |
| Triggered by other components | No | Yes | Yes |
Changelog
| Date | Change |
|---|---|
| 2026-07-29 | Added Build Agent naming prefix note; added block concept to intro; added targeting notes per type; expanded comparison table (EN-7975). |
| 2026-07-28 | Initial draft (EN-7975). |