Data shows in the editor and the live site is empty

This is the single most dangerous pattern in AI-built apps, and it has two opposite failure modes: tables locked so hard the app sees nothing, or tables open so wide that anyone can read every row. Audits of these projects keep finding the second one. Check yours today.

What is actually happening

The editor talks to your database with a privileged key. The browser uses the public key, and the public key is only allowed to do what your access rules say. No rule means no rows — the query succeeds and returns an empty list.

How to checkOpen the table in the dashboard: the data is there. Then open the live site: empty. That gap is the whole diagnosis.
What to changeWrite the rules. Never fix it by turning security off, and never fix it by putting the privileged key in browser code.

An empty list is not an error, so nothing is logged and nothing turns red. That is why people lose days on this.

The dangerous version of the same bug

The usual quick fix found in forums is a rule that allows everything to everyone. Now the app works and every visitor can read, and sometimes write, every row in the table.

How to checkLook for a policy that applies to all operations for all roles with a condition that is always true.
What to changeReplace it with separate rules for reading and writing, and tie writes to the signed-in user's id. Public data can stay readable; user data must not be.

Ask yourself what a curious visitor could read with your public key and a browser console. If the answer includes other people's data, stop and fix it now.

Checking it honestly in one minute

Open your live site in a private window, signed out, and open the network tab. Look at what the data request returns.

How to checkEmpty with no error means the rules block you. Full data while signed out means the rules do not protect you.
What to changeYou want the first for private tables and the second only for tables that are genuinely public, like a menu or a price list.

Test as a second signed-in user too. Many apps leak between users while looking correct to their owner.

What a correct setup looks like

Security on for every table. Public tables readable by anyone. Private tables readable and writable only where the row's owner matches the signed-in user. Anything sensitive done in a server route with the privileged key, never in the browser.

How to checkGo table by table and write down who should read and who should write before you touch a policy.
What to changeIt is an hour of work for a small app, and it is the difference between a product and a liability.

New tables added later start unprotected again. Check after every change.

Not one of these five?

Send me the link and the exact error text. I will tell you what is broken and what it would take to fix, in writing, within 24 hours. That part is free, and you are not obliged to hire me afterwards.

If you do want it fixed: emergency rescue starts at $600, and I name one fixed number before I start.

Send me the link