Hey again,
I’m now 99% sure the user JWT token is not being forwarded when fetching data via the Supabase Pro Kit Mobile plugin. Here is how I tested it (I am logged in throughout, with the Auth element on the page, and I confirmed it by displaying Current User's email on screen — it shows the correct email).
Setup: brand new test table with only a uuid and a text column.
Baseline — no RLS: fetches the data successfully 
Test 1 — to authenticated policy:
create policy "test_1_role_check"
on public.rls_diagnostic
for select
to authenticated
using (true);
→ Status message says “Initial data loaded successfully” but 0 objects returned. Means the request isn’t being seen as coming from the authenticated role.
Test 2 — auth.uid() is not null policy:
create policy "test_2_uid_check"
on public.rls_diagnostic
for select
using (auth.uid() is not null);
→ Also 0 objects returned. Confirms auth.uid() resolves to null on the DB side.
Test 3 — direct proof via RPC:
To remove any ambiguity, I created a security invoker function that returns exactly what Supabase sees from the caller:
create or replace function public.whoami()
returns table (uid uuid, role text, jwt_email text)
language sql
security invoker
stable
as $
select auth.uid(), auth.role(), (auth.jwt() ->> 'email')::text;
$;
grant execute on function public.whoami() to anon, authenticated;
Called from the mobile plugin with the logged-in user: → (0 objects returned) uid: null, role: anon, jwt_email: null
Called from the web Pro Kit plugin, same user, same moment, same database: → uid: <correct UUID>, role: authenticated, jwt_email: <correct email>
So the database itself confirms it: the mobile plugin is not forwarding the user’s JWT in the Authorization header. The request lands on Supabase as a pure anon resuest, which is why every RLS policy relying on auth.uid() or the authenticated role returns 0 rows.
Can you confirm this is a plugin bug and provide an ETA on the fix? Happy to share more screenshots or jump on a calll if needed.
Best regards, Guilhem