Complete Article Collection

All Posts

Explore practical articles covering Next.js, Supabase, SaaS engineering, AI integrations, and production debugging. Ship cleaner systems faster.

111
Articles
6
Categories
17h
Reading Time

111 articles

How to Get Enums in Prisma Client: Import, Query
PostgreSQL
7 min read·2026-09-07

How to Get Enums in Prisma Client: Import, Query

Stuck trying to access Prisma enum values? This guide shows you exactly how to import, use, and validate generated enum types in your Node.js app.

Read more
Firebase Auth IDBDatabase Transaction Error: 2026 Fix
Next.js
8 min read·2026-09-06

Firebase Auth IDBDatabase Transaction Error: 2026 Fix

Firebase Auth stores its session in an IndexedDB database called firebaseLocalStorageDb. When that connection closes mid-session, sign-in throws InvalidStateError. Here is the cause, the SDK version that changed the behaviour, and a Next.js App Router setup that degrades gracefully.

Read more
Fix "Default condition should be last one" (Firebase)
Next.js
7 min read·2026-09-06

Fix "Default condition should be last one" (Firebase)

One Firebase release put "default" before "browser" in the package.json exports map of 30 packages, and webpack's resolver refuses that. Here is the exact error, the diff that caused it, the release that fixed it, and how to find any other package in node_modules doing the same thing.

Read more
n8n Microsoft OAuth2: Fix 'Need Admin Approval'
Automation
9 min read·2026-09-06

n8n Microsoft OAuth2: Fix 'Need Admin Approval'

An admin clicked "Grant admin consent" and the n8n Microsoft credential still fails. The grant was real; it just did not cover the app or the scopes n8n actually requests. Here is the Entra ID checklist that ends it.

Read more
Firebase webframeworks Not Enabled in GitHub Actions: Fix
DevOps
8 min read·2026-09-06

Firebase webframeworks Not Enabled in GitHub Actions: Fix

Running firebase experiments:enable webframeworks on your laptop does nothing for GitHub Actions. Here is the env var the CLI actually reads, the complete workflow, and why Firebase now steers Next.js apps to App Hosting.

Read more
Fix: react-dom/server Import Error in Next.js App Router
Next.js
8 min read·2026-09-06

Fix: react-dom/server Import Error in Next.js App Router

"You're importing a component that imports react-dom/server" is a compile-time rule of the App Router, not a bug in your code. Here is what the rule protects, which use cases are legitimate, and the fixes verified against Next.js 15.5 and 16.3 with both webpack and Turbopack.

Read more
Supabase "__cf_bm" Cookie Rejected for Invalid Domain: Fix
Supabase
8 min read·2026-09-06

Supabase "__cf_bm" Cookie Rejected for Invalid Domain: Fix

The warning fires on every image, upload and WebSocket that touches <ref>.supabase.co in Firefox. It is Cloudflare's bot-management cookie being scoped to a Public Suffix List domain, so every browser drops it. Here is the verified cause, the cases where the noise hides a real 403 or auth bug, and how to tell them apart in two minutes.

Read more
Force tsc to Ignore node_modules: Fix TS Errors
TypeScript
7 min read·2026-09-05

Force tsc to Ignore node_modules: Fix TS Errors

Run tsc --noEmit on a project that compiles fine in the editor and the terminal lights up with type errors from inside node_modules. The fix is skipLibCheck, plus two

Read more
Fix PostgreSQL Server Won't Start on Mac OS X (2026)
PostgreSQL
8 min read·2026-09-03

Fix PostgreSQL Server Won't Start on Mac OS X (2026)

A fresh Homebrew install of PostgreSQL on a Mac completes without errors, then psql answers connection refused because the server was never started. Which command starts it depends on

Read more
Cross-Origin-Opener-Policy Blocks window.closed: 2026 Fix
Next.js
7 min read·2026-09-01

Cross-Origin-Opener-Policy Blocks window.closed: 2026 Fix

The Firebase Google sign-in popup loses window.closed access when a COOP header isolates the opener. Here's the exact header change that restores the popup flow.

Read more
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
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
Fix: psql: command not found (Install PostgreSQL Client)
PostgreSQL
6 min·2026-08-03

Fix: psql: command not found (Install PostgreSQL Client)

The error fires when the shell cannot locate the psql binary — either PostgreSQL is not installed (only the server or a GUI client is), or it is installed but its bin directory is not on PATH. Fix it by installing the postgresql-client package (apt/brew), installing PostgreSQL itself (choco on Windows), or appending the bin directory to PATH.

Read more
Scaleway vs AWS S3: EU Pricing & Data Residency 2026
DevOps
7 min·2026-08-03

Scaleway vs AWS S3: EU Pricing & Data Residency 2026

AWS S3 is the default for object storage, but for EU-only workloads it is more expensive than necessary and you must explicitly select an EU region to satisfy GDPR data residency. Scaleway Object Storage stores every byte in Paris or Amsterdam by default — there is no US region to opt out of — uses the same S3-compatible API, and costs 50-70% less for typical workloads. Here is the 2026 pricing breakdown, the API parity list, and the gotchas that make Scaleway a no-go for some workloads (no Glacier tier, fewer storage classes, no Lambda@Edge equivalent).

Read more
Self-Hosted Plausible vs GA4: GDPR by Default (2026)
DevOps
8 min·2026-08-03

Self-Hosted Plausible vs GA4: GDPR by Default (2026)

Google Analytics 4 is found illegal in multiple EU countries (Austria, France, Italy, Denmark, Finland, Norway, Sweden) because it transfers user data to the US. To stay compliant you need a consent banner, a Data Processing Agreement, and Consent Mode v2 — and the EU-US Data Privacy Framework on which Google relies is itself under legal threat at the EU's top court. Self-hosted Plausible Analytics collects no personal data, sets no cookies, and runs on your own server. Here is the 2026 setup, the cost, the feature gaps you should plan for (no heatmaps, no BigQuery export, no Google Ads Smart Bidding), and the deployment steps on a Hetzner VPS or Scaleway Stardust.

Read more
How to Drop All Tables in PostgreSQL Safely (2026)
PostgreSQL
9 min read·2026-07-29

How to Drop All Tables in PostgreSQL Safely (2026)

Dropping tables one by one is painful. Here is the one-command reset, the PostgreSQL 15 permission gotcha that breaks it, and the safe way to do it on Supabase.

Read more
How to Change a PostgreSQL User Password (Supabase)
PostgreSQL
10 min read·2026-07-22

How to Change a PostgreSQL User Password (Supabase)

`ALTER ROLE alice WITH PASSWORD 'newpass';` is the SQL. The psql `\password` prompt avoids logging the cleartext. In Supabase the `postgres` role password is reset from the Dashboard, not SQL. Here is each method, the scram-sha-256 default, and the three things that break after a password change.

Read more
PostgreSQL SHOW TABLES / DESCRIBE TABLE (psql + Supabase)
PostgreSQL
9 min read·2026-07-22

PostgreSQL SHOW TABLES / DESCRIBE TABLE (psql + Supabase)

Coming from MySQL you type `SHOW TABLES` or `DESCRIBE table` and PostgreSQL throws a syntax error — both are MySQL commands. The psql equivalents are `\dt` (list tables) and `\d table_name` (describe a table); the portable SQL equivalents are `information_schema.tables` and `information_schema.columns`. Here is exactly what to run in psql, the Supabase SQL editor, Drizzle, or any client, plus why your query returns zero rows.

Read more
PostgreSQL DESCRIBE TABLE: The psql \d Equivalent
PostgreSQL
5 min·2026-07-21

PostgreSQL DESCRIBE TABLE: The psql \d Equivalent

Coming from MySQL you type DESCRIBE table and psql throws a syntax error. The psql equivalent is \d table_name. For Supabase, Drizzle, or any SQL client without backslash commands, use the information_schema.columns view.

Read more
Fix: Peer Authentication Failed for User "postgres"
PostgreSQL
6 min·2026-07-21

Fix: Peer Authentication Failed for User "postgres"

The error fires when PostgreSQL's peer auth check compares the OS username to the database role and they differ — common after sudo-ing into psql or in local dev. Fix it by matching users, or by switching the local auth method to scram-sha-256 with a real password.

Read more
useSearchParams Suspense Error: 3 Real Fixes (Next.js 15)
Next.js
6 min read·2026-06-27

useSearchParams Suspense Error: 3 Real Fixes (Next.js 15)

The error only surfaces during the production build — dev mode hides it completely. Here is why, and the three fixes ranked by situation.

Read more
Fix: Next.js proxy.js matcher not working for static assets
Next.js
7 min read·2026-06-27

Fix: Next.js proxy.js matcher not working for static assets

Without a matcher, proxy.js runs on every request including _next/static and public assets. And Server Functions are not separate routes — a matcher gap silently drops auth coverage.

Read more
Supabase getClaims() vs getSession(): The Silent Auth Bug
Supabase
7 min read·2026-06-27

Supabase getClaims() vs getSession(): The Silent Auth Bug

Your auth looks correct but users can bypass it. The bug: getSession() in server code reads from local storage without revalidating the token against the Auth server.

Read more
Supabase redirectTo Failing on Vercel Previews: SITE_URL Fix
Supabase
6 min read·2026-06-27

Supabase redirectTo Failing on Vercel Previews: SITE_URL Fix

The redirect lands on your production domain instead of the preview URL, or you get a "redirect URL not allowed" error. Here is the exact Supabase dashboard config and the Vercel env var pattern.

Read more
VERCEL_EXPERIMENTAL_DEV_SKIP_LINK: Stop Dev Link Hangs
DevOps
7 min read·2026-06-25

VERCEL_EXPERIMENTAL_DEV_SKIP_LINK: Stop Dev Link Hangs

Configure VERCEL_EXPERIMENTAL_DEV_SKIP_LINK to skip the Vercel CLI dev link and speed up local Next.js development.

Read more
TypeScript Getter Setter Errors: TS1056, TS1028, TS2378 Fix
TypeScript
8 min read·2026-06-23

TypeScript Getter Setter Errors: TS1056, TS1028, TS2378 Fix

TypeScript getter/setter errors come from ES target misconfiguration or type mismatches. Fix TS1056, TS1028, and TS2378 in minutes.

Read more
JSX.Element vs ReactNode vs ReactElement: TS2322 Fix
TypeScript
9 min read·2026-06-20

JSX.Element vs ReactNode vs ReactElement: TS2322 Fix

Fix TS2322 by understanding when ReactNode, JSX.Element, and ReactElement apply in React + TypeScript component typing.

Read more
Fix ChunkLoadError: Loading Chunk Failed in Next.js
Next.js
9 min read·2026-06-18

Fix ChunkLoadError: Loading Chunk Failed in Next.js

"ChunkLoadError: Loading chunk 5760 failed" almost always means a user has an old tab open after you shipped a new deploy. The fix is configuration — deploymentId, build IDs, and CDN headers — not a try/catch.

Read more
Fix Dynamic Server Usage Error in Next.js App Router
Next.js
9 min read·2026-06-18

Fix Dynamic Server Usage Error in Next.js App Router

Next.js throws this when a route it wants to render at build time calls a dynamic function — cookies(), headers(), searchParams, or a no-store fetch. The fix is either opt the route into dynamic rendering, or remove the request-time dependency if it should be static.

Read more
Fix next/image Hostname Not Configured in Next.js
Next.js
7 min read·2026-06-18

Fix next/image Hostname Not Configured in Next.js

next/image strictly allow-lists remote hosts. The fix is images.remotePatterns in next.config — matched exactly on protocol, hostname, port, and pathname. Get one wrong (http vs https, a subdomain, a missing port) and it still blocks.

Read more
use client vs use server in Next.js: The Real Difference
Next.js
8 min read·2026-06-18

use client vs use server in Next.js: The Real Difference

The #1 misconception in the App Router: "use server" is not the opposite of "use client". One marks a client boundary in the module graph; the other exposes callable server functions. Server Components are the default — no directive needed.

Read more
Fix Postgres 'Could Not Serialize Access' (40001)
PostgreSQL
9 min read·2026-06-18

Fix Postgres 'Could Not Serialize Access' (40001)

Postgres aborts one transaction with 40001 to prevent a serialization anomaly. The docs are explicit: apps using REPEATABLE READ or SERIALIZABLE must be prepared to retry. Here's the correct retry loop and how to reduce conflicts.

Read more
Fix Foreign Key Constraint Violation in Supabase (23503)
PostgreSQL
9 min read·2026-06-18

Fix Foreign Key Constraint Violation in Supabase (23503)

23503 means a foreign key relationship is broken. Inserting a child before its parent? Insert the parent first. Can't delete a parent with children? Choose an ON DELETE action. The most common Supabase case is a profiles row referencing auth.users.

Read more
Select the First Row per Group in Supabase Postgres
PostgreSQL
8 min read·2026-06-18

Select the First Row per Group in Supabase Postgres

The "greatest-N-per-group" problem: one representative row per group. Postgres solves it with DISTINCT ON; supabase-js can't express that directly, so you wrap it in a view or an RPC function. Both confirmed by Supabase maintainers.

Read more
Fix TS7016: Could Not Find Declaration File for Module
TypeScript
8 min read·2026-06-18

Fix TS7016: Could Not Find Declaration File for Module

TS7016 fires when you import an untyped JavaScript module under noImplicitAny. The right fix is usually `npm i -D @types/X` — but sometimes the package already ships types, and sometimes you need to write a one-line declaration.

Read more
Fix TS2305: Module Has No Exported Member in TypeScript
TypeScript
8 min read·2026-06-18

Fix TS2305: Module Has No Exported Member in TypeScript

TS2305 says the export you're importing doesn't exist under that name. The cause is almost always one of: a typo, default-vs-named confusion, a CJS/ESM interop mismatch, or @types drifting from the runtime package. Each has a precise fix.

Read more
TS2564: Why Constructor Methods Don't Count as Init
TypeScript
8 min read·2026-06-18

TS2564: Why Constructor Methods Don't Count as Init

TS2564 fires when a class field is typed but never guaranteed to be set. The fix depends on WHY it's unset: a default value, constructor assignment, the definite-assignment `!`, or an optional `?`. Picking the wrong one hides real bugs.

Read more
Fix "Property does not exist on Window" in TypeScript
TypeScript
9 min read·2026-06-17

Fix "Property does not exist on Window" in TypeScript

Learn how to safely extend the Window interface in TypeScript using declaration merging, type assertions, and bracket notation to avoid compile-time errors.

Read more
Next.js Build Passed But Production Broke
Next.js
8 min read·2026-06-17

Next.js Build Passed But Production Broke

A green build only proves the bundle compiled. This postmortem walks through three production-only failures: missing Vercel env vars, Edge runtime imports, and cache behavior that changed after deploy.

Read more
Next.js Middleware Not Running on Vercel: 3 Causes
Next.js
8 min read·2026-06-17

Next.js Middleware Not Running on Vercel: 3 Causes

Middleware that works locally can disappear in Vercel production because the matcher never matches, Edge bundles a Node-only import, or auth middleware cannot read the token. This guide gives you the diagnosis order I use before touching app code.

Read more
Supabase Realtime Not Receiving Events: Complete Fix
Supabase
8 min read·2026-06-17

Supabase Realtime Not Receiving Events: Complete Fix

A Supabase Realtime subscription can say SUBSCRIBED and still receive nothing. This fix walks through RLS, filter syntax, stale React subscriptions, paused projects, and broadcast versus postgres_changes confusion.

Read more
How to set the next/image component to 100% height
Next.js
7 min read·2026-06-14

How to set the next/image component to 100% height

If your <Image / component ignores height: 100% and appears too small or misaligned, the issue is almost always that the parent container lacks an explicit

Read more
Fix Module not found: Can't resolve 'encoding' in Vercel
Next.js
8 min read·2026-06-14

Fix Module not found: Can't resolve 'encoding' in Vercel

You see "Module not found: Can't resolve 'encoding'" in your Vercel deployment logs. This guide explains why it happens with cross-fetch/node-fetch and how to fix it permanently.

Read more
How to get COUNT(*) in Supabase
Supabase
5 min read·2026-06-06

How to get COUNT(*) in Supabase

If you are fetching whole result sets just to count them, you are paying for bandwidth and latency you do not need. Supabase already returns counts in query metadata.

Read more
Next.js Query String Params: searchParams + useRouter
Next.js
6 min read·2026-06-06

Next.js Query String Params: searchParams + useRouter

If `router.query` examples keep breaking on you, the problem is usually that you're mixing App Router and Pages Router APIs. Here is the exact fix for each case.

Read more
n8n requested webhook is not registered fix
Automation
6 min read·2026-06-06

n8n requested webhook is not registered fix

This n8n webhook error is usually not about your payload. It is almost always a test-vs-production URL mixup or an inactive workflow.

Read more
Next.js Redirect from / to another page
Next.js
6 min read·2026-06-06

Next.js Redirect from / to another page

If your redirect works only after render, flickers, or fires in the wrong place, you are probably using the wrong redirect API for the job. Here is the exact mapping.

Read more
Supabase bucket RLS policy for table objects fix
Supabase
7 min read·2026-06-06

Supabase bucket RLS policy for table objects fix

This Storage error almost never means Supabase is broken. It usually means your upload path, your RLS policy, or your use of `upsert` does not match how Storage actually authorizes writes.

Read more
Why useEffect runs twice in Next.js dev
Next.js
6 min read·2026-06-06

Why useEffect runs twice in Next.js dev

If your logs, API calls, or subscriptions fire twice in local dev, you are probably seeing React's development-only Strict Mode check. Here is what to fix and what not to panic about.

Read more
How to Access Route Parameter Inside getServerSideProps
Next.js
8 min read·2026-06-05

How to Access Route Parameter Inside getServerSideProps

Learn why your dynamic route parameter appears as undefined in getServerSideProps and how to correctly extract it from the context object for server-side data fetching.

Read more
Fix 'Next.js 15 requires Node.js 18.18' Build Error
Next.js
8 min read·2026-06-05

Fix 'Next.js 15 requires Node.js 18.18' Build Error

Next.js 15 drops support for older Node versions. Here is how to upgrade to Node.js 18.18.0 or later and fix build errors.

Read more
Does Supabase service_role Bypass RLS? Yes — Use It Safely
Supabase
12 min read·2026-06-04

Does Supabase service_role Bypass RLS? Yes — Use It Safely

The Supabase service_role key bypasses every RLS policy in your database. That is exactly what you want for admin jobs, migrations, and cron tasks — and exactly what an attacker wants if it ever leaks to the client bundle. Here is how to set up the admin client in Next.js, where it is safe to use, and the three mistakes that put a root credential in your JS bundle.

Read more
Supabase Enums: ALTER TYPE ADD VALUE in Migrations
PostgreSQL
7 min read·2026-06-02

Supabase Enums: ALTER TYPE ADD VALUE in Migrations

Step‑by‑step guide to adding a PostgreSQL enum type and column in Supabase, including verification and common pitfalls.

Read more
How to Change the Port in Next.js (and Fix EADDRINUSE)
Next.js
7 min read·2026-06-02

How to Change the Port in Next.js (and Fix EADDRINUSE)

Change the default Next.js port when it collides with another process. Step‑by‑step fix with code, verification, and prevention tips.

Read more
Fix React 18 Hydration Mismatch in Next.js
Next.js
7 min read·2026-06-02

Fix React 18 Hydration Mismatch in Next.js

A step‑by‑step fix for the React 18 hydration mismatch error in Next.js apps, covering root cause, code changes, verification, and prevention.

Read more
Supabase 42501 Permission Denied: Schema public & auth
Supabase
7 min read·2026-06-02

Supabase 42501 Permission Denied: Schema public & auth

Learn the exact steps to grant the right permissions in Supabase and stop the 'permission denied for schema public' error from breaking your app.

Read more
Fix "lcp" not working in production
Next.js
7 min read·2026-06-01

Fix "lcp" not working in production

When LCP data never appears in your analytics, a missing reportWebVitals export is usually to blame. Follow these steps to fix it.

Read more
How to implement LCP end to end
Next.js
7 min read·2026-06-01

How to implement LCP end to end

Learn how to instrument Largest Contentful Paint (LCP) in a Next.js project, send the metric to your analytics provider, and verify that the data is accurate.

Read more
TypeError cookies() crash in Next.js route handler
Next.js
7 min read·2026-05-27

TypeError cookies() crash in Next.js route handler

A production‑grade fix for the `TypeError: cookies() is not a function` crash that appears in Next.js route handlers after a deploy.

Read more
Fix "cookies() should be awaited" Error in Next.js 15
Next.js
9 min read·2026-05-19

Fix "cookies() should be awaited" Error in Next.js 15

Next.js 15 broke synchronous `cookies().get()`. Every server-side call must now `await cookies()` first. Here's the precise migration — App Router pages, route handlers, Server Actions, and Supabase SSR — plus the codemod that fixes 90% of call sites automatically.

Read more
Fix Next.js revalidatePath Not Working in Server Actions
Next.js
8 min read·2026-05-19

Fix Next.js revalidatePath Not Working in Server Actions

Your Server Action mutates data but the page shows stale values until you hard-refresh. `revalidatePath` is one of those APIs that "succeeds" while doing nothing. Here are the six reasons it no-ops, with the exact fix for each — including the one nobody tells you about: `dynamic = 'force-static'`.

Read more
Stripe Webhook Signature Verification Failed in Next.js
DevOps
11 min read·2026-05-19

Stripe Webhook Signature Verification Failed in Next.js

If Stripe webhooks return `Webhook signature verification failed`, your Next.js route is parsing the JSON before Stripe sees it. Here's the exact raw-body pattern for App Router, Pages Router, and Vercel Edge — plus the three secret-mismatch traps that cause the same error.

Read more
Supabase Auth Error Codes: Fixes + TS Cheat Sheet (2026)
Supabase
9 min read·2026-05-19

Supabase Auth Error Codes: Fixes + TS Cheat Sheet (2026)

Supabase Auth returns precise error codes — `invalid_credentials`, `weak_password`, `same_password`, `email_not_confirmed` — but most apps collapse them all into "Something went wrong." Here's the full TypeScript enum, a typed handler, and the UX pattern that doubles signup completion.

Read more
Fix Supabase RLS Infinite Recursion (Production 2026)
Supabase
9 min read·2026-05-19

Fix Supabase RLS Infinite Recursion (Production 2026)

If your Supabase query returns `infinite recursion detected in policy for relation "X"`, your RLS policy is querying the same table it protects. Here's exactly why it loops, and three production-grade fixes that don't leak data.

Read more
Clerk vs Better Auth vs Supabase: Next.js Auth in 2026
Supabase
22 min read·2026-05-14

Clerk vs Better Auth vs Supabase: Next.js Auth in 2026

We tested all four major auth solutions across 50+ real-world scenarios in production. Here is the honest comparison nobody else gives you — including the middleware vulnerability that changed everything, migration costs, and which one actually scales.

Read more
I Tanked My Core Web Vitals Score With Next.js Images
Next.js
13 min read·2026-04-21

I Tanked My Core Web Vitals Score With Next.js Images

Added images to my Next.js app and watched my Core Web Vitals tank. After debugging for days, here are the 7 fixes that brought my CLS score back to green.

Read more
Next.js Stale Data: How I Fixed Cache Revalidation
Next.js
15 min read·2026-04-21

Next.js Stale Data: How I Fixed Cache Revalidation

My mutations worked but the UI showed stale data. Took me a week to understand Next.js App Router caching. Here are the 6 fixes that made my data fresh again.

Read more
11 Supabase Auth Lessons From a Year in Production
Supabase
11 min read·2026-04-20

11 Supabase Auth Lessons From a Year in Production

Eleven recurring traps that surface once Supabase Auth is wired into a production Next.js app — drawn from public Supabase docs, the SSR guide, and the postmortems the community has published.

Read more
Next.js 15 Caching Explained: Why Data Shows Stale
Next.js
11 min read·2026-04-15

Next.js 15 Caching Explained: Why Data Shows Stale

Upgraded to Next.js 15 and suddenly your data is stale — or refreshing too often? The caching model changed completely. Here is what actually happens and how to control it.

Read more
Why Your Supabase Queries Are Slow (And How to Fix)
Supabase
13 min read·2026-04-15

Why Your Supabase Queries Are Slow (And How to Fix)

Slow Supabase queries kill your app feel and inflate your bill. Here are the six causes I keep seeing in production apps, and the exact SQL and code fixes for each one.

Read more
How I Built a Self-Running Client Reporting System in n8n
Automation
11 min read·2026-04-05

How I Built a Self-Running Client Reporting System in n8n

Client reports were taking 3 hours every Friday. After one weekend building an n8n automation, they now take 10 minutes to review and send. Here's the workflow, the mistakes I made, and the parts that surprised me.

Read more
How I Fixed My n8n Workflow Failing Silently for Weeks
Automation
9 min read·2026-04-05

How I Fixed My n8n Workflow Failing Silently for Weeks

My n8n workflow was silently failing every Tuesday for three weeks. No errors, no alerts, just nothing happening. Here's the debugging story and the monitoring setup I built so it can never sneak past me again.

Read more
From Zapier to n8n: How I Cut My Automation Bill to Zero
Automation
10 min read·2026-04-05

From Zapier to n8n: How I Cut My Automation Bill to Zero

I was paying $120/month on Zapier and barely using a third of it. Here's the honest story of migrating to n8n — the wins, the failures, and the one thing that almost made me give up.

Read more
Set Up Ollama With n8n: Cut AI API Costs to Zero
Automation
10 min read·2026-04-05

Set Up Ollama With n8n: Cut AI API Costs to Zero

$50/month in OpenAI API charges was eating into my automation ROI. I switched to Ollama for local AI and my costs dropped to zero. Here's the full setup and honest tradeoffs.

Read more
How I Stopped Missing Leads with a $0 n8n CRM Automation
Automation
9 min read·2026-04-05

How I Stopped Missing Leads with a $0 n8n CRM Automation

A $4,000 project slipped through my fingers because I missed a contact form email. Here's the n8n automation I built to make sure that never happens again — and it cost nothing to run.

Read more
How to Structure Your Next.js App Router Project for Scale
Next.js
2026-04-02

How to Structure Your Next.js App Router Project for Scale

Stop shoving everything into the components folder. Learn the Feature-Sliced Design pattern adapted perfectly for the Next.js App Router.

Read more
Supabase + Next.js Tutorial for Beginners (Free, 2026)
Supabase
20 min read·2026-03-26

Supabase + Next.js Tutorial for Beginners (Free, 2026)

Build a complete full-stack application with Next.js and Supabase from scratch. Authentication, database, CRUD operations, and deployment — all in 20 minutes.

Read more
Supabase vs Firebase in 2026: The Honest Comparison
Supabase
18 min read·2026-03-26

Supabase vs Firebase in 2026: The Honest Comparison

Supabase vs Firebase — which backend should you pick in 2026? We compare pricing, performance, developer experience, and scalability with real benchmarks and code examples.

Read more
Why Developers Switch from Firebase to Supabase in 2026
Supabase
15 min read·2026-03-26

Why Developers Switch from Firebase to Supabase in 2026

Thousands of developers are migrating from Firebase to Supabase. Here is why — with real migration stories, cost savings, and a step-by-step guide to make the switch.

Read more
Offline-First Next.js + Supabase: Sync That Actually Works
Next.js
14 min read·2026-03-24

Offline-First Next.js + Supabase: Sync That Actually Works

Build a Next.js app that works offline, queues writes, and syncs cleanly to Supabase when the network returns — IndexedDB, sync queue, conflict resolution, with code.

Read more
Debugging Supabase RLS Policies: A Simple Checklist
Supabase
13 min read·2026-03-17

Debugging Supabase RLS Policies: A Simple Checklist

Master RLS debugging techniques. Learn how to identify, diagnose, and fix Row Level Security policy issues that block data access in production.

Read more
7 Next.js + Supabase Architecture Decisions I'd Skip
Supabase
8 min read·2026-03-17

7 Next.js + Supabase Architecture Decisions I'd Skip

After shipping multiple production apps with Next.js and Supabase, here are the decisions that cost the most time to undo — and what I'd do instead from day one.

Read more
Supabase RLS Policies Silently Failing: How to Debug Them
Supabase
7 min read·2026-03-17

Supabase RLS Policies Silently Failing: How to Debug Them

RLS failures don't throw errors — they return empty results. Here is exactly how to find and fix the most common Row Level Security bugs in Supabase before they reach production.

Read more
7 Lessons From Running Next.js + Supabase in Production
Supabase
8 min read·2026-03-14

7 Lessons From Running Next.js + Supabase in Production

Seven recurring patterns from production runs of Next.js + Supabase, and the fixes that prevented the most common failures.

Read more
Supabase Auth MFA (TOTP) in 2026: Patterns That Scale
Supabase
9 min read·2026-03-12

Supabase Auth MFA (TOTP) in 2026: Patterns That Scale

How we went from failing enterprise security requirements to passing SOC 2 compliance in 6 weeks. The authentication architecture patterns that actually work at scale.

Read more
Next.js Server Actions vs API Routes: When to Use Each
Next.js
10 min read·2026-03-10

Next.js Server Actions vs API Routes: When to Use Each

Understand the differences between Server Actions and API Routes in Next.js 15. Learn when to use each approach with real-world examples and performance comparisons.

Read more
Enable Supabase Realtime: ALTER PUBLICATION + 7 Fixes
Supabase
11 min read·2026-03-03

Enable Supabase Realtime: ALTER PUBLICATION + 7 Fixes

Avoid common Supabase Realtime pitfalls that cause memory leaks, missed updates, and performance issues. Learn real-world solutions from production applications.

Read more
Next.js + Supabase: 10 Production Mistakes + Fixes (2026)
Supabase
14 min read·2026-02-25

Next.js + Supabase: 10 Production Mistakes + Fixes (2026)

Avoid these critical mistakes when building with Next.js and Supabase. Learn from real-world errors that cost developers hours of debugging and discover proven solutions.

Read more
Next.js + Supabase Performance: 7 Fixes Cut Load 70%
Next.js
14 min read·2026-02-25

Next.js + Supabase Performance: 7 Fixes Cut Load 70%

The 7 optimizations that took a sluggish Next.js + Supabase app from 4.2s LCP to 1.1s — RLS indexes, ISR config, image pipeline, and the connection-pooler trap on Vercel.

Read more
Supabase Auth Session Disappears on Refresh? Fix (2026)
Supabase
8 min read·2026-02-16

Supabase Auth Session Disappears on Refresh? Fix (2026)

Supabase auth sessions mysteriously disappearing after page refresh? Learn the exact cause and fix it in 5 minutes with this tested solution.

Read more
Supabase AuthSessionMissingError in Middleware: 5 Fixes
Supabase
10 min read·2026-02-16

Supabase AuthSessionMissingError in Middleware: 5 Fixes

Auth errors crashing your Next.js middleware? Learn how to handle Supabase auth errors gracefully with proper error handling patterns.

Read more
Next.js 15 vs 14: Real Benchmarks + Upgrade Verdict (2026)
Next.js
10 min read·2026-02-16

Next.js 15 vs 14: Real Benchmarks + Upgrade Verdict (2026)

Side-by-side benchmarks on real apps — build time, bundle size, runtime perf, and the breaking changes that hurt. The honest verdict on whether the upgrade is worth it.

Read more
Supabase Auth Callback Redirect Not Working? Next.js Fix
Supabase
11 min read·2026-02-16

Supabase Auth Callback Redirect Not Working? Next.js Fix

Auth redirect not working after Supabase sign-in? Here are the three root causes and the exact fixes — callback route, redirect URL allowlist, and router.refresh().

Read more
Supabase vs Firebase Authentication: Which is Better
Supabase
8 min read·2026-02-16

Supabase vs Firebase Authentication: Which is Better

Compare Supabase and Firebase authentication features, pricing, performance, and developer experience. Learn which backend solution fits your Next.js project best.

Read more
Next.js Environment Variables Undefined on Vercel? Fix
DevOps
10 min read·2026-02-05

Next.js Environment Variables Undefined on Vercel? Fix

Environment variables not working on Vercel? Learn the exact configuration needed for Next.js 15 deployment with zero errors.

Read more
Fix 'Hydration failed' in Next.js: 8 Root Causes (2026)
Next.js
12 min read·2026-02-03

Fix 'Hydration failed' in Next.js: 8 Root Causes (2026)

Hydration mismatch errors breaking your Next.js app? Learn the root causes and 8 proven fixes to eliminate these errors permanently.

Read more
Next.js 'Module not found: Can't resolve': 6 Fixes
Next.js
11 min read·2026-02-01

Next.js 'Module not found: Can't resolve': 6 Fixes

Module not found errors only in production? Learn why Next.js builds fail after deploy and get 6 proven fixes that work on Vercel, AWS, and other platforms.

Read more
Next.js Turbopack Stuck on Compiling? 5 Fixes (2026)
Next.js
9 min read·2026-01-30

Next.js Turbopack Stuck on Compiling? 5 Fixes (2026)

Turbopack stuck on compiling in Next.js 15/16? Learn the exact causes and 5 proven fixes, plus how to disable Turbopack safely with next build --webpack when production builds crash.

Read more
Supabase Email Confirmation Not Sending: 5 Fixes (2026)
Supabase
10 min read·2026-01-28

Supabase Email Confirmation Not Sending: 5 Fixes (2026)

Email confirmations not sending from Supabase? Learn the exact causes and fixes for SMTP, template, and configuration issues in 10 minutes.

Read more
Docker Tutorial 2026: Dev Environment with Compose
DevOps
10 min read·Jan 27, 2026

Docker Tutorial 2026: Dev Environment with Compose

Step-by-step guide to creating a production-ready Docker development environment with hot reload, debugging, and Docker Compose.

Read more
Migrate JavaScript to TypeScript with ts-migrate (2026)
TypeScript
13 min read·Jan 27, 2026

Migrate JavaScript to TypeScript with ts-migrate (2026)

Migrate a JS codebase to TypeScript file-by-file — no full rewrite required. The tsconfig settings, file order, and tricks for handling untyped packages along the way.

Read more

Never Miss an Update

Get the latest articles, insights, and expert perspectives delivered straight to your inbox.

One email a month — no fluff

RLS gotchas, Next.js cache debugging, and the one Supabase setting that bit me last month.