Skip to content
Back to guides

Lists in Adalo, from data to layout

Connect an Adalo list to the right collection, prove its records, add filters safely, debug empty results, and choose a native or custom list deliberately.

Sources checkedBeginnerReviewed Watch time 26:20Lists, Filters, and Search
Follow the steps
Lists in Adalo, from data to layout guide cover

Short answer

Choose the collection under “What is this a list of?”, prove the unfiltered records, bind each field to Current [record], and only then add one filter at a time. Use a native list unless the layout truly requires a custom one.

Check your result

Original walkthrough

Jul 3, 2021

The intended outcome

A list that shows the intended collection, presents useful fields, opens the right detail record, and handles an empty result.

Requirements

  • A collection with sample records
  • A screen that can access the data
  • Understanding of Magic Text

Step by step

  1. Step 1: Add the lightest suitable list

    Start with a native list that can express the row. Adalo’s current performance guidance reserves custom lists for layouts the native choices cannot support.

  2. Step 2: Choose its collection

    Set “What is this a list of?” to the collection whose records should repeat.

  3. Step 3: Bind the visible fields

    Select each text or image inside the list and use Current [record] Magic Text to display the correct property.

  4. Step 4: Add one filter at a time

    Prove each custom filter alone, then combine them deliberately: AND requires every rule, while OR allows any rule to qualify.

  5. Step 5: Sort and link

    Choose a stable sort, then link the repeated item or button to a detail screen while passing Current [record].

  6. Step 6: Design the empty state

    Explain why no records are visible and provide the most useful next action.

The underlying logic

A list repeats one design for every record returned by its query.

Filters decide which records enter the list; visibility decides whether one component appears.

Collection permissions decide whether the data may be returned at all; a visual filter is not an authorization boundary.

Custom and nested lists increase layout freedom but add query and rendering work.

Data model

Collections, important properties and relationships
CollectionImportant propertiesRelationships
ItemsName, Description, Status, Created DateBelongs to one owner and optionally one category
CategoriesName, Sort OrderHas many items

What changed?

  • Current documentation supports multiple list filters with explicit AND or OR behavior.
  • The refreshed guide now distinguishes empty data, empty filtered results, and empty relationships, with a repeatable query-debugging ladder.

Start with the query

Treat the list as a query before treating it as a visual component. Prove the right records are returned, then style the repeated row.

Use a fixed diagnostic ladder when a list is wrong: confirm sample records exist, remove every filter, verify the collection, bind one plain-text property from the current record, restore one filter at a time, and only then restore the final row design. Each step changes one variable, so the first failure identifies the layer to investigate.

Filters, conditions, and permissions

Filters refine groups of records. Conditions control whether an action runs or a component appears. Collection Permissions control who can read or change the underlying records. Mixing those responsibilities makes debugging unnecessarily hard—and relying on a visual filter for privacy leaves the data rule in the wrong layer.

Relationship filters require both sides of the comparison to contain the expected records. Current Adalo documentation says logical relationship comparisons are limited to one-to-many shapes; many-to-many needs a different query shape or a join collection. When a relationship may be empty, test that state explicitly rather than assuming it behaves like text or false.

A useful empty state

An empty list is not always an error. Distinguish no data yet, no match for the current filters, and data the current user is not allowed to see. Give each state one accurate explanation and a recovery action such as clearing filters, creating the first record, or returning to a broader view.

Performance discipline

Adalo’s current performance guidance recommends native lists over custom lists when practical and warns that lists inside lists can become expensive. Each extra filter, nested relationship, and repeated component adds work, so keep rows lean and move secondary information to a detail screen.

Use a stable sort property so records do not jump unexpectedly between visits. Test long names, missing images, a realistic larger dataset, and an intentionally empty collection; those cases expose layout, query, and accessibility failures that ideal sample data hides.

What we reproduced in Classic Preview

On October 29, 2026, we tested a native Simple List in a disposable Classic responsive app with three synthetic Items: Alpha (Active, User A), Beta (Draft, User A), and Gamma (Active, User B). The unfiltered list showed all three; each row passed Current Item to its matching detail screen. Active alone returned Alpha/Gamma, the owner Email filter alone returned Alpha/Beta, AND returned Alpha, and OR returned all three.

In this Classic editor, the AND button inside an existing filter group joined its predicates. Add custom filter created a separate OR group. An unmatched Status showed the native empty message; removing that predicate in the builder restored the rows. Category → Name equal to Empty matched Beta/Gamma, whose Category relationships were missing. This comparison does not distinguish a missing relationship from an existing Category with a blank Name.

These are authenticated staging Preview observations, not Ada, native-build, published-app or private-access results. The exact Classic release number was not displayed. The owner Email comparison was a literal query against synthetic data; separate app-user access denial was not tested.

A small fixture you can check

Create two test users, Alex and Sam, and three Items: A owned by Alex, B owned by Sam, and C with no owner. Start with a plain Name field and no visual filters. Then apply the intended owner filter and configure Collection Permissions separately.

For an owner-only policy, the expected result is A for Alex, B for Sam, and neither private record for a signed-out visitor. Decide deliberately who can read the ownerless record. Try opening the other user's detail record directly. This is a proposed verification fixture, not a result reproduced by Adalocado in the current builder.

Common failure modes

Choose the next debugging step

If the correct records appear but a component stays hidden, test its conditional visibility.

For results that should belong to one user, check user and relationship filters, then verify Collection Permissions separately.

Still stuck after these checks?

Describe the last test that passed, the first one that failed, and whether it happened in Preview or a published app. Use synthetic data and leave out passwords and private records.

Ask about this problem

Testing checklist

0 of 9 checked on this device

Current limitations

  • Deep relationship filters, custom rows, and nested lists can create performance costs.
  • Component filters shape the visible result; they do not replace Collection Permissions.

Screenshot evidence

These captures document what Adalo currently publishes and what builders are reporting. They support the written guidance, but they are not a substitute for an end-to-end test in your own app.

What the Adalo community is reporting

These are concise editorial summaries of public forum posts, not endorsements or independently reproduced results.

Improved Filtering Logic

The changelog says list, count, and dropdown filters were made more consistent and added checks for empty relationships, files, images, and locations.

Boundary: The post says affected apps require a rebuild; existing published builds may not inherit the behavior automatically.

Adalo system · March 2024

Sources and status

This page was last reviewed on Oct 29, 2026. Its current status is Verified from current public evidence.

Verification owner: Adalocado editorial. Next review: Nov 12, 2026.

Changelog

  1. Added dated synthetic Classic staging Preview results and explicit limits. Retained public-source screenshot provenance and verification classification; no Ada, published-target or private-access verification claimed.

  2. Checked the official list and Collection Permissions guidance; added a proposed owner-access test fixture and links to visibility, user filters and search. Current-builder reproduction remains pending.

  3. Added native-list performance guidance, explicit AND and OR behavior, and the Collection Permissions security boundary.

  4. Added a six-stage query debugging ladder, empty-state taxonomy, relationship-filter boundary, and resilient row testing guidance.

  5. Added current official screenshots and Adalo’s filtering changelog as public evidence.

Written and maintained by the Adalocado editorial team under the editorial and verification policy.

Did this solve your problem?

One-click check

Bugs fixed. Updates shipped. Publishing handled.

$97/mo for your first 3 months.

Cancel anytime. That’s about 90% off the usual cost. 🤯

Let Rehost handle it
  • Bug fixes and troubleshooting
  • App updates and integrations
  • Publishing and store releases

Bring us the messy version.

Describe what you expected, what happened instead, and what you already tried.

Ask Adalocado

Related answers

Browse all