Hey everyone,
I've built a marketplace app for surfboards and gear using FlutterFlow and Firebase. The app is similar to Facebook Marketplace, but a key differentiator is advanced filtering, allowing users to sort and filter listings based on various surfing-related attributes.
The app has been well received, and our database has grown quickly to over 7,000 live listings. Currently, the home page queries Firebase’s listings collection and retrieves all live listings. However, due to Firebase’s limitations on query operators (i.e., only allowing <, <=, >, >=, !=, and not-in
on a single field per query), I've had to handle filtering on the front end with a custom function. The listings are displayed in a GridView widget, so they don’t all render on page load, which helps performance, however...
My concern is:
Every user still loads the full dataset, and as the platform scales, this approach may not be sustainable.
From my understanding, FlutterFlow’s "dynamic children" feature inherently requires a finite parent query, which means true infinite scroll won’t work unless filtering happens at the backend.
What I’d Like to Achieve
Either, offload filtering to the backend to avoid fetching all listings upfront.
Or, Implement pagination so users don’t load the entire dataset at once.
And, stay with Firebase for authentication, cloud functions, etc.
Ideally avoid a full migration to Supabase, as that feels like a huge lift.
Question
Does anyone have suggestions for handling pagination and/or backend filtering in FlutterFlow while still using Firebase? Are there workarounds or best practices to avoid loading the entire listings collection for every user?
Thanks so much!