Networking
You Fixed CORS and the Browser Kept Failing for Another Ten Minutes
Access-Control-Max-Age caches the preflight decision, including the one that said no. Here is why your fix looked like it did not work.
Runtime errors, module systems, async pitfalls and the parts of the language that behave differently than they read.
Networking
Access-Control-Max-Age caches the preflight decision, including the one that said no. Here is why your fix looked like it did not work.
JavaScript
A single page app that was fine for an hour and unusable by the afternoon. Three wrong hypotheses, then a heap snapshot showed forty thousand detached DOM nodes.
Next.js
Your build fails because a page tried to read a header. Here is what triggers dynamic rendering and how to decide what each route should be.
JavaScript
Same code, same package.json, different bundler, different result. The difference is resolution conditions and how strict each tool is.
Shopify
Add to cart stopped working, the layout shifted, or the page throws a console error. A systematic way to find which app did it and what to do about it.
JavaScript
Your editor takes four seconds to show a type error and tsc takes two minutes. There is a profiler for this and almost nobody uses it.
Networking
Every response is a success as far as HTTP is concerned. That one design decision breaks monitoring, retries, and error handling unless you plan for it.
Shopify
Items vanish from the cart, quantities are wrong, and it never reproduces on your machine. Throttle your network and it appears every time.
Node.js
The error that shows up when a dependency goes ESM only. What it means, the five ways to fix it, and how to pick the right one.
React
A complete diagnostic guide to React hydration mismatches: the eight real causes ranked by how often they actually happen, with the fix for each.
JavaScript
TypeScript gave up. Here is why recursive conditional types hit a wall, and how to restructure so they do not.
JavaScript
Sometimes it is infinite recursion. Often it is spreading a large array into a function call, and the fix is completely different.