Write-ups of problems solved for real: what broke, why the obvious fix did not work, and what actually helped.
August 24, 2026 · 3 min read
«Only friends can message you» sounds like sensible privacy care. In practice it meant the first message never went through, and messaging worked for nobody.
An in-process request counter looks correct and passes every test. On a serverless platform it protects you exactly until the first real load.
A page called a server action to mark messages read. The action revalidated the cache — and the route started returning 500. One line, a week of unnoticed breakage.
Three ways a Next server action can fail silently: no navigation, no error, not a word on screen. And why that is the worst kind of breakage.
August 22, 2026 · 2 min read
The site answered in 880 ms and geography looked guilty. Moving the server closer barely helped. The real cause was an auth() call inside the shared layout.
Querying for availability before inserting looks like the obvious fix. A second guest slips in between the check and the write, and both get the same table.
Three separate reasons why Yandex Metrica recorded not a single pageview while the code looked perfectly right. Two of them were security headers.
August 22, 2026 · 3 min read
The toggle worked, the variables changed, the background went light — but card headings stayed near-black on black. The answer turned out to be one line.