Skip to main content
Back to Blog
components builder slots flexibility

Pluggable Component Slots

Swifty Team Mar 3, 2026 3 min read

Most builders constrain what can go where. A sidebar layout accepts text widgets. A grid accepts card widgets. Move something to an unsupported position and the builder stops you. These constraints can simplify the tool, but they limit what you can build.

Pluggable slots take a different approach: any component can go in any slot. The layout provides structure; the components provide content.

Slots as Structural Positions

A page layout defines its structure using slots — named positions where content can be placed. A two-column layout has a left slot and a right slot. A detail panel has a header slot, a main content slot, and a sidebar slot. A dashboard row has as many slots as it has columns.

Slots don't have opinions about what goes in them. They have a size and a position. The content is whatever you place there.

Any Component, Any Slot

Drop a table component into the left column of a two-column layout. Drop a form into the right. Add a chart to the header slot. Place a metrics card above the table and a filter bar below the sidebar. The slot accepts whatever the builder offers.

This isn't unconstrained — layout slots have dimensions that components must fit within. But the type of component is never constrained. A slot that's 6 columns wide can hold a table, a chart, a form, a rich text block, or a custom embedded component. The slot's job is to provide space; the component's job is to fill it.

Composition Creates Variety

With interchangeable slots and an open component library, the number of distinct page layouts grows combinatorially. A dashboard with three rows and two columns per row has six slots. Each slot can hold any component. The possible arrangements of your available components into those slots number in the thousands.

In practice, most pages use a small number of common patterns — list with sidebar, metrics row above detail, tabs with different content per tab. But the range of what's achievable without custom code is genuinely broad.

Add Your Own Components

The slot system is open to extension. Custom components registered through the extension system are available in the builder's component picker alongside built-in components. They can be dropped into any slot just like native components.

This means an extension that adds a specialized visualization — a Gantt chart, a geographic map, a custom metric — makes that component available anywhere in the builder. No special slot type required; it's just another component.

Consistent Behavior

Components maintain their behavior regardless of which slot they're placed in. A table in the left column works exactly like a table on its own page. A form in a sidebar slot validates and saves exactly as it would as a standalone screen. The slot is purely structural; it doesn't change how the component works.

Related posts

Composed Data Sources

Chain and relate data sources for rich dashboards — compose complex data views from simpler sources without writing code.

Computed Expressions

Transform data with template expressions and built-in functions — format, combine, and derive values from your data without code.

Cross-Source Data Joins

Combine data from multiple sources in one view — join records from your database with data from external services using a shared key.