Unable to populate FF from Supabase backend query?

Database & APIs

Hey guys. I'm new to Flutterflow, and am currently trying to integrate a fairly simple Supabase backend to FF without much luck.

I've troubleshooted for many consecutive evenings and I am still struggling. I've confirmed it is seeing my databases as they are showing in "Backend Query" in the right properties tab when I click on the Column.

Any assistance would be greatly appreciated. Thanks in advance!

What have you tried so far?

So far I've:

- confirmed no RLS policies on my Supabase tables and data

- confirmed images/audio URLS are public and correct on Supabase

- deleted and re-made pages, Columns, List view and the Backend query

- confirmed Supabase integration and re-"get Schema". 

And I've also completed all of the following suggestions direct from the FF support documentation on this topic. (pasted below)

FF Documentation:

Supabase data not appearing in a Backend Query: targeted checks

  • Confirm your Supabase credentials in FlutterFlow

  • In FlutterFlow, go to Settings > Integrations > Supabase. Verify the Project URL and the public anon key are correct. Do not use the service key.

  • Click Get Schema and wait for it to complete without errors.

  • Check Row Level Security behavior

  • If RLS is enabled on a table but there are no select policies for the anon or authenticated role, queries will return empty results. Either temporarily disable RLS on that table or add an explicit select policy that allows reads for the appropriate role.

  • If your page requires a logged-in user, ensure you are authenticated in Run/Test Mode and that your policies grant select to the authenticated role.

  • Verify table shape and schema

  • Ensure the table lives in the public schema, or that you selected the correct schema in FlutterFlow when fetching.

  • Check that each table has a clear primary key (for example,

id
  • as bigint/uuid). Sorting, pagination, and some bindings work best with a primary key.

  • Bind the Backend Query correctly to your widgets

  • Select your list widget (e.g., ListView/GridView), open the Backend Query on the right panel, set Query Type to your Supabase table, remove filters for the initial test, and set a small limit (e.g., 25).

  • Inside the list item, for each Text/Image widget, click the property, choose Set from Variable > Backend Query > pick the field.

  • Run the page. If it still shows nothing, try binding a simple Text widget to a known text column to rule out image/audio rendering issues.

  • Test with a minimal, public dataset

  • Create a brand-new test table with 2 to 3 rows of plain text in Supabase.

  • Disable RLS on that table (or add a permissive read policy for anon) and refresh Get Schema in FlutterFlow.

  • On a new page, add a ListView and bind it to this table. If this works, the issue is likely related to policies, filters, or field types in your original table.

  • Validate filters and sorts

  • Temporarily remove all where conditions and order by to ensure they are not excluding results.

  • If you add filters later, confirm the comparison values are not null and match the column data types.

  • Check field types for media URLs

  • Store image/audio URLs in text columns. In FlutterFlow, use Network Image or the relevant audio widget and bind the URL field directly.

  • If using Supabase Storage, confirm the files are publicly accessible or that your policies allow access for the current role.

  • Refresh schema and clear app cache

  • After making database changes, click Get Schema again in FlutterFlow to pull the latest columns.

  • Use Run > Stop, then Run again to clear any stale state. If using a deployed preview, redeploy the preview.

  • Confirm there’s no plan-based block

  • There is no Free plan limitation that prevents using Supabase as a data source or running Backend Queries in the builder and run/test. The main differences on paid plans are features like priority support and certain advanced capabilities, not basic database reads.

  • If results are still empty

  • Run a simple

select *
  • in the Supabase SQL editor to confirm rows exist.

  • Double-check that your FlutterFlow project is using the same Supabase project credentials you just tested.

  • Recreate one list from scratch on a new page with no conditional visibility, no auth gating, and no filters.

Did you check FlutterFlow's Documentation for this topic?
Yes
1
1 reply