Masonry List

The Masonry List component renders a custom masonry layout. Masonry layout is a method of displaying data in a grid format that adjusts the layout so everything fits together, like bricks. You typically see it with images or cards of varying sizes. It works like a List.

Masonry List uses FlashList which is made by Shopify and is optimized for large data sets and slow connections to provide better rendering and performance as an alternative to the List component.

How to use

A Masonry List component receives an array of data that it will loop over to create an instance of the Masonry List's child components for each item in the array. This can be a simple array of strings, or even an array of complex objects.

The data you pass to a Masonry List component's Data prop can come from a Variable if, for example, you have a fixed array of values or one populated using an API Request Action. You can also pass data to a Masonry List from a Fetch component on your Screen.

For each item in the array that you pass to a Masonry List, the List will render an instance of all child components within the Masonry List component. For example, if you have a List component that contains a single nested Text component and you pass it an array which contains 20 items, the Masonry List will render 20 Text components - one for each item in the array passed to the Masonry List.

The data for each item in the array will be available to all child components within the Masonry List component. The item data will be available as Masonry List item in any variable dropdowns for props in the component's Data tab. Any keys for the item will also be listed if you didn't skip the Test step when saving your Endpoint.

That means that our Text component above will have access to the list item's data in their variable selection dropdowns in the Data panel. So, if your array contains objects with keys such as name and description, we could pass those values to our Text component inside the Masonry List and each one would display their own data.

Learn how to set and use the Fetch and List component in Fetching Data.

Style Properties

Style properties allow you to customize the look and feel of the component. Combinations of styles applied to components can be saved as Stylesheets to easily reuse styles throughout your app. Styles can also be set dynamically using Variables. To learn more about all the different styling properties and how they work, take a look at Intro to Styling.

Configuration Properties

Component Name To alter the name of the component. The name is reflected in the Components tree. Defaults to List.
Number of columnsDefine the number of columns the list should display. Accepts a number. By default, the value is set to 1.
Estimated Item Size A single numeric value that hints FlashList about the approximate size of the items before they're rendered. (read the docs)
By default, the value is set to 50.
Optimize Item Arrangement
Initial Number to RenderHow many items to render in the initial batch
End Reached Threshold

Data Properties


DataThe array of data to render in the list.

Type a value directly into the input or select a value from the dropdown
Unique Item KeyProvide a way to derive a unique key (e.g. an id or a name) for a given item in the list. Optional

Conditional Display

You can conditionally display a component based on a given condition. Learn more about conditionally displaying components in the Conditional Display doc.


On Refresh Starts the action when the element is refreshed
On End Reached Starts the action when the end threshold is reached


Learn how to set and use the Fetch and List component in Fetching Data.

Modifying the Number of Columns

You can modify the Number of Columns property on a List component to add more columns.

  • Select the Masonry List component in the Components tree.
  • Go to the Configs tab (second tab) in the Properties Panel.
  • Specify a value for the property Number of columns.