Repeats a piece of markup for every item in a list: give it a list field (or comma-separated text) and the content is rendered once per item. Handy for tags, badges or properties that belong to a record as a list. The technical name is Each.
Use Each whenever a record has a repeatable field — tags, features, team members, steps in a process — and you want to render one piece of markup per item without hard-coding each one separately. Content and layout stay separate: editors update the list, the layout stays untouched.
A common example is a pricing card that lists included features as checkmarked bullets, or a product page that shows a badge for every tag in a comma-separated field. Combine it with an Icon block inside the callback to add a checkmark or bullet per item.
Typical uses across different sites
On a webshop, Each is a natural fit for rendering size or colour swatches from a comma-separated field on a product record, or for listing included accessories as a bulleted feature list. On a portfolio site it commonly renders the tools or skills used on a project as a row of tags underneath the case study title. On a professional services site it can turn a list of certifications, service areas or industries served into a scannable row of badges instead of a wall of text. In each case the underlying data is a single field on the record — the layout only needs to be designed once.
A common mistake is reaching for Each on data that isn't actually a list, such as a single free-text description — there's nothing to repeat, so a plain paragraph is simpler and clearer. Another is forgetting that the callback needs one clear element wrapping each item's content; mixing plain text and multiple sibling elements inside the callback without a wrapper can break the intended layout. For larger structured datasets with many fields per item — more than a short label per entry — a dedicated Records block set up against a data type is usually a better fit than stretching Each beyond a simple list.
Each pairs naturally with an Icon inside the callback — a checkmark before each included feature, or a small tag icon before each keyword — turning a bare list into something more scannable. It also composes with layout components like HStack or Wrap around it to control whether items wrap onto multiple lines or stay in a single row.
Because the repetition happens once, server-side, when the page is rendered, there's no client-side loop or extra JavaScript cost regardless of how many items the list contains — a ten-item list and a two-item list render with the same performance profile.
Example
The prompt for this example
Show the words Fast, Flexible and Headless as purple badges next to each other.