Liquid Variables
On this page
StoreConnect Liquid provides two collection variable types for working with sets of records. Both are iterable with a {% for %} loop and share a common set of attributes (first, last, size, any?), but they differ in how and when records are loaded.
List
A List loads all matching records into memory at once. It supports both integer index access (list[0]) and key lookup (list["slug"]), making it straightforward to work with when the full result set is small or already scoped by the page context.
Use a List when: - The collection is already bounded (e.g. a product’s variants, a cart’s items) - You need random access by index or key - The total record count is manageable in memory
PaginatedList
A PaginatedList fetches records server-side, one page at a time. Integer index access is not supported — only key lookup and iteration over the current page. Use it with the {% paginate %} tag to control page size and render navigation controls.
Use a PaginatedList when: - The collection can grow large (e.g. a full product catalogue, order history) - You need pagination controls in the template - Loading all records at once would hurt performance
:::tip
Most built-in collections exposed by Liquid objects (such as collection.products) are PaginatedLists. Wrap them in a {% paginate %} block to control how many records load per page.
:::
Was this article helpful?
Thanks for your feedback! It helps us improve our docs.