Search documentation

Search docs pages by title or description

Join the waitlist
Browse documentation

Blocks overview

Every page in an Emberblocks app is a grid of blocks. A block is one self-contained unit — a table, a chart, a button row, a map — that you place, size, and configure on a 12-column canvas. This page covers what all blocks have in common; each block kind then has its own reference page.

Try it: Use the filter block: every other block on the page (the stat tiles, the chart, and the table) narrows to the same rows.
Orders
8
Count
Revenue
€10.4k
Sum · Amount
Satisfaction
4.3
Avg · Rating
Filters
Status
Customer
Created
Amount
Revenue by month
€0€2.5k€5.0k€7.5k€10.0kJanFebMar
Orders
8 rows
OrderCustomerStatusTotal
#1042Nordic Supply ABShipped€1,240.00
#1041Beck & SöhneProcessing€312.50
#1040Lumen StudioOn hold€868.00
#1039Harbor FoodsDelivered€2,088.00
#1038Vega ClinicDelivered€540.00
Showing 5 of 8
Example. One view built from six blocks on the 12-column grid: three stat tiles (4 columns each), a filter block (4 columns) beside a bar chart (8 columns), and a table (12 columns) below. All of them read the same Orders table with the page filter bound, so the filter narrows every one of them at once.

Adding and arranging blocks

In the builder, open a view and press Add block to open the block palette — a searchable tile grid of all 25 kinds. Click a tile to drop the block onto the canvas, then drag to move it and pull the corner handle to resize. The canvas is a 12-column grid with 80-pixel rows; a view holds up to 24 blocks.

Blocks are independent: each one carries its own source table and configuration. Two blocks on the same page can show two different tables, or the same table filtered two different ways.

Data blocks vs. content blocks

  • Data blocks— table, cards, compact list, timeline, kanban, calendar, map, record, stat, chart, filter, comments — bind to a table and read live rows through your app's permission rules.
  • Content blocks— text, image, video, file viewer, barcode, embed, accordion, alert, buttons, separator, spinner — issue no data requests at all. On record pages they can still pull in the current record's values with [Column] formulas (and, for the video, file viewer and barcode blocks, a formula).

Settings every block shares

SettingWhat it does
TitleAn optional heading above the block. New blocks start untitled — the page already names itself in the navigation — so add one when a page holds several blocks that need telling apart.
DescriptionAn optional caption rendered under the title.
Show headerWhether the published app renders the title bar. Card-framed blocks default on; minimal content blocks (text, image, separator…) default off. Either way, a block with no title and no description renders no header.
Auto heightWhen on, the block grows past its authored height to fit its content and pushes blocks below it down. When off, content scrolls inside the fixed cell.
Visible ifA boolean expression that must be true for the block to render — e.g. hide a block until RECORD[Status] = "Approved". See Expressions.
Visible to rolesRestrict the block to specific roles. Everyone sees it when the list is empty.

Extra settings on data blocks

SettingWhat it does
Source tableThe table the block reads. Every data block has exactly one primary source (maps and calendars can add extra sources).
Record filterOn record pages: a filter over the block's table that can reference the page's current record via RECORD[Field] and RECORDID() — the key to "show this customer's orders" layouts. Compiled server-side.
Page filterBinds the block to a filter block on the same page so viewer-chosen filters narrow its rows.

Blocks respect permissions everywhere

A block is a window onto your data, never a bypass. Row filters, role rules, and field-level permissions apply to every block in the builder preview, the published app, and public links alike. See Roles & permissions.

Minimum sizes and publishing

Some blocks need room to be usable: tables, cards, and charts require at least 3 grid rows of height. If a block is too small — or misconfigured, like a timeline without a date field — the publish check lists the exact problem and links you to it, and the app publishes only once the issue is fixed. See Publish & share.