Just Published

Our three most recent articles. No curve, no algorithm — just dates.

FirebaseError: Expected first argument to collection() — Fix
Next.js
7 min read·2026-08-30

FirebaseError: Expected first argument to collection() — Fix

When Firestore throws 'Expected first argument to collection()', it's almost always a missing Firestore instance. Learn the exact fix for Next.js and v9 modular SDK.

Read more
Next.js 16 /_not-found Prerender Build Error: The Real Fix
Next.js
9 min read·2026-08-29

Next.js 16 /_not-found Prerender Build Error: The Real Fix

Next.js 16 build crashes prerendering the internal /_not-found route. Here are the three actual causes behind it, how to tell which one is yours, and the fix for each.

Read more
Next.js 16 "use cache" Errors: Why Cache Components Break
Next.js
10 min read·2026-08-29

Next.js 16 "use cache" Errors: Why Cache Components Break

Next.js 16 replaced implicit caching with the explicit "use cache" directive. Here is what actually breaks when you flip cacheComponents on, and how to fix it without reverting.

Read more

Latest Stories

TypeScript 6.0 Migration: What Actually Breaks in Next.js/Supabase
TypeScript
11 min read·2026-08-29

TypeScript 6.0 Migration: What Actually Breaks in Next.js/Supabase

TypeScript 6.0 shipped in March 2026 with strict mode on by default and several legacy options removed. Here is what actually breaks migrating a real Next.js + Supabase codebase, in the order to fix it.

Read more
Better Auth vs Supabase Auth 2026: Honest Verdict
Supabase
10 min read·2026-08-23

Better Auth vs Supabase Auth 2026: Honest Verdict

Both of these will authenticate a user perfectly well, so comparing sign-in methods is a waste of your afternoon. The decision that actually costs you later is where authorisation is enforced. Supabase Auth puts a user id inside the database so policies can use it; Better Auth puts sessions in a table you own and leaves enforcement to your application. Pick the wrong one and you are rewriting your security model, not swapping a library.

Read more
Fix AuthSessionMissingError: Auth session missing!
Supabase
8 min read·2026-08-23

Fix AuthSessionMissingError: Auth session missing!

`AuthSessionMissingError: Auth session missing!` is not a bug report — it is Supabase telling you, accurately, that the client you called had no session to work with. The hard part is that the same message covers a signed-out user, a server client that never received your cookies, a middleware that forgot to forward them, and a `getUser()` call that fired before the session was restored. Each has a different fix.

Read more
Supabase Hangs After onAuthStateChange: The Deadlock
Supabase
8 min read·2026-08-23

Supabase Hangs After onAuthStateChange: The Deadlock

Your app loads, the session arrives, and then every Supabase call after it hangs forever. No error, no rejected promise, no network request — the query simply never returns and the loading spinner stays up until someone reloads the page. If you fetch a profile inside your `onAuthStateChange` callback, this is a documented deadlock in supabase-js, and the fix is one line.

Read more
Supabase 42501: permission denied for schema auth
Supabase
8 min read·2026-08-23

Supabase 42501: permission denied for schema auth

A view over `auth.users`, a policy that joins it, or a client query against it all fail the same way: `ERROR: 42501: permission denied for schema auth`. It is not a missing GRANT you forgot — Supabase keeps the `auth` schema out of reach of the API roles deliberately, and granting your way in is the one fix you should not apply. The supported route is a security definer function.

Read more
Test Supabase RLS Policies Before You Ship
Supabase
9 min read·2026-08-23

Test Supabase RLS Policies Before You Ship

Every RLS leak I have seen shipped the same way: the policy was tested in a context that does not enforce it. The Supabase SQL editor runs as a privileged role, the service key carries `BYPASSRLS`, and the table owner is exempt from its own policies unless you say otherwise. Three green checks, zero enforcement. This is the procedure that actually tests a policy — plus the two Postgres flags that decide whether your test means anything.

Read more
Firestore PERMISSION_DENIED: Every Real Cause and Fix
Supabase
7 min read·2026-08-14

Firestore PERMISSION_DENIED: Every Real Cause and Fix

The Firestore error "PERMISSION_DENIED: Missing or insufficient permissions" never tells you which rule rejected you. Here is how to find out — and the seven causes that account for almost every occurrence.

Read more
Fix tsconfig Paths Not Working in Next.js
TypeScript
7 min read·2026-08-14

Fix tsconfig Paths Not Working in Next.js

The @/* alias fails in four different places for four different reasons. A 60-second checklist, then a fix per resolver: Next.js build, TS server, Jest and ESLint.

Read more
Fix: password authentication failed for user "postgres"
PostgreSQL
6 min·2026-08-03

Fix: password authentication failed for user "postgres"

The error fires when psql reaches the password prompt but the password PostgreSQL has on file does not match what you typed — common after switching auth methods, restoring from a dump, or using Docker with a baked-in password. Fix it by setting a password with ALTER USER inside psql, then verifying pg_hba.conf has scram-sha-256 (not md5 or trust) for the line matching your connection.

Read more
Newsletter

One email a month. No fluff.

Mostly RLS gotchas, Next.js cache debugging notes, and the one Supabase setting that bit me last month. Written like a friend would tell you, not like a marketing team.

  • Real production lessons, not tutorials
  • New post highlights with key takeaways
  • Unsubscribe in one click. No tracking.

Free forever. Your email stays with me.