We put ten defects into real route handlers and ran four testing methods at them: a direct call, next-test-api-route-handler, next start, and the Cloudflare Workers build we deploy. Two methods pass a handler that is broken, and one fails a handler that is fine.
Next.jstesting•18 min read•By NoWaterProgramming Team
We used the TypeScript compiler API to count every place five production codebases tell the type system to stop checking, then read every one that sits on untrusted input. The count turned out to be the wrong thing to worry about.
TypeScriptsecurity•18 min read•By NoWaterProgramming Team
We turned on noUncheckedIndexedAccess and exactOptionalPropertyTypes across five production codebases and counted every error. The cost per thousand lines varied by 24x, and half the work was not where you index.
How a pixel-comparison overlay actually works in the browser: why a wrapper div breaks mix-blend-mode, click-through without pointer-events juggling, keeping scroll on its fast path, and hardening per-origin persisted state.
Compress, merge, split, linearize and OCR are five different operations on the same file format. What each one touches in the object graph, why some are fast and some are not, and the three that can quietly corrupt a document.
File Formats•7 min read•By NoWaterProgramming Team
A walkthrough of QR internals against the spec: the module grid and its reserved regions, encoding modes, Reed-Solomon over GF(256), interleaved blocks, mask selection, and what the standard deliberately does not protect.
File Formats•9 min read•By NoWaterProgramming Team
Logpoints, network overrides, local overrides and profiling, plus a session-based way to handle the thirty documentation tabs a debugging session produces. With the actual research on interrupted work, and what it does not say.
How route handlers actually behave in Next.js 16: GET is no longer cached by default, params are async, and most of what you need is a server action instead. With a real deployment that is not on Vercel.
The hooks you use daily, the rules that make them work, and the failure they cause most often: reaching for useEffect when the answer is a computed value, an event handler, or an external store.
The App Router explained through a site that actually runs on it: server components, async request APIs, generateStaticParams, and the three things that break when you deploy somewhere other than Vercel.
Next.jsReact•13 min read•By NoWaterProgramming Team
Which strict flags earn their keep and what each one costs, when to reach for @ts-expect-error over @ts-ignore, why catch variables are unknown, and how to type the edges where outside data enters.
Tailwind v4 moved configuration out of JavaScript and into CSS. What that changes for theming and dark mode, what the upgrade breaks, the browsers it drops, and the measured CSS size of a real site.