Row level security compares auth.uid() with the row's owner. When the request carries no JWT, auth.uid() is null, every comparison is false, inserts fail with 42501 and selects come back empty with no error at all. The SQL editor hides it too: on its default role it runs as postgres, which row…
Most Supabase Edge Functions get tested exactly once: by deploying them and hitting them from the app. That works until a function sends a duplicate charge, emails the wrong user, or quietly returns 500 for anyone who isn't signed in. Edge Functions are where your app's most sensitive logic tends…
Most Claude Code setups for React Native stop at a CLAUDE.md file. That's the foundation: it tells the agent your conventions. But conventions alone don't stop the two failures I see most often in agent-built Expo features: The agent starts writing before it understands the codebase , and you get a…
A page title is a contract with a search result, and the contract is about length. Over roughly 60 characters it gets truncated; a description over about 160 goes the same way. TypeScript will happily let you write a 200 character description, your build will pass, your page will render, and you…
On September 25, UpGuard reported 16,326 Supabase databases with publicly readable tables . More than half showed signs of personal data. Some had passwords and tokens. No one broke in. The data was readable through the front door. What went wrong Supabase's anon key ships in your browser code by…
If you migrated to Next.js 15 recently, you probably ran into the subtle landmines scattered across server-side authentication. With React 19 server components, asynchronous request APIs ( await cookies() , await headers() ), and deprecation of legacy auth helpers ( @supabase/auth-helpers-nextjs )…
A vibe-coded app that works is not the finish line — it's the starting line. The week-one demo passing tells you almost nothing about what happens in month one, when platform changes, key hygiene and permissive defaults start collecting their dues. I audit these apps for a living; here are the five…
Keep a compact, queryable failure ledger in your own database and render customer-facing KPIs from pre-aggregated tables. That is the least complex way to show useful logistics checkout metrics without turning raw logs into an expensive analytics store. Use Metabase, Redash, Supabase Charts, or a…
Every database pricing page uses different units, so I priced the same six workloads on AWS (RDS and Aurora Serverless v2), Neon, PlanetScale and Supabase, with Convex on the side. Prices come from the official pricing pages on October 6, 2026 (AWS us-east-1). Sources are at the bottom. TL;DR…