
Web Development — 2026 Week 10
Cloud Four's code review guide is this week's featured piece, and its most useful insight is structural: every PR must explain not just what changed but why, with… Compiled for immediate developer deployment.


How Buttondown's API versioning works
"X-API-Version" header, the API key's pinned version, then the system default. A transformation pipeline applies chained migrations bidirectionally — converting requests up to the current schema before hitting route handlers, and converting responses back down to the client's expected format before serialization. Real-world migrations covered include field renames, structural changes from flat tag arrays to filter objects, a TypeID migration that recursively walks the entire response tree, and moving nested timing fields between levels. The system has run unchanged for 18 months while supporting major infrastructure changes.
Proxying fetch requests in server-side JavaScript - Human Who Codes
fetch() requests across four major server-side JavaScript runtimes, noting the Fetch standard intentionally omits proxying as a browser-focused spec. Node.js gained native proxy support in v22.21.0 and v24.5.0 via HTTP_PROXY / HTTPS_PROXY environment variables when NODE_USE_ENV_PROXY=1 is set; programmatic proxying uses undici's ProxyAgent passed as a dispatcher option. Deno uses Deno.createHttpClient() with a proxy URL and passes the client via the client fetch option. Bun supports a direct proxy string on the fetch options object. Cloudflare Workers has no native proxy support, so Zakas demonstrates a workaround using his @humanwhocodes/proxy-fetch-server npm package running inside a Node.js Docker container bound as a Durable Object.
Kubernetes Skew Protection: Vercel-Style Safe Deployments
"__plt_dpl" cookie and manages HTTPRoute rules through the Kubernetes Gateway API. Old deployments transition through Active → Draining → Expired states, with traffic monitored by Prometheus; expired versions scale to zero after a configurable grace period (default 24 hours) or when traffic drops to zero for 30 minutes.
What I Did When I Inherited Bad Tech

Writing Cross-Platform Hooks for AI Coding Agents
npx vitest or npx playwright test. The core challenge is that the two platforms send different JSON shapes on stdin: Claude Code nests the command inside tool_input under a PreToolUse event, while Cursor's beforeShellExecution puts it at the top level. The hook normalizes both inputs, matches against blocked patterns using regexes, and returns platform-specific allow/deny responses with descriptive block messages pointing agents toward the correct yarn test:unit / test:e2e scripts. The script runs as a plain TypeScript file using Node.js 22.6+ --experimental-strip-types, avoiding a build step entirely, and is designed to fail-open on parse errors.![There are 2 kinds of devs. One of them is screwed. Justin Searls interview [Podcast #210]](/_next/image?url=https%3A%2F%2Fbusansashimi-digest-media.s3.ap-northeast-2.amazonaws.com%2Fdigest%2Fweek-10-2026%2Fvideo-freecodecamp-org-hP931079TMw.jpg&w=3840&q=75)
There are 2 kinds of devs. One of them is screwed. Justin Searls interview [Podcast #210]

How We Do Code Reviews at Cloud Four
There are 2 kinds of devs. One of them is screwed. Justin Searls interview [Podcast #210]
How Buttondown's API versioning works
"X-API-Version" header, the API key's pinned version, then the system default. A transformation pipeline applies chained migrations bidirectionally — converting requests up to the current schema before hitting route handlers, and converting responses back down to the client's expected format before serialization. Real-world migrations covered include field renames, structural changes from flat tag arrays to filter objects, a TypeID migration that recursively walks the entire response tree, and moving nested timing fields between levels. The system has run unchanged for 18 months while supporting major infrastructure changes.Proxying fetch requests in server-side JavaScript - Human Who Codes
fetch() requests across four major server-side JavaScript runtimes, noting the Fetch standard intentionally omits proxying as a browser-focused spec. Node.js gained native proxy support in v22.21.0 and v24.5.0 via HTTP_PROXY / HTTPS_PROXY environment variables when NODE_USE_ENV_PROXY=1 is set; programmatic proxying uses undici's ProxyAgent passed as a dispatcher option. Deno uses Deno.createHttpClient() with a proxy URL and passes the client via the client fetch option. Bun supports a direct proxy string on the fetch options object. Cloudflare Workers has no native proxy support, so Zakas demonstrates a workaround using his @humanwhocodes/proxy-fetch-server npm package running inside a Node.js Docker container bound as a Durable Object.Kubernetes Skew Protection: Vercel-Style Safe Deployments
"__plt_dpl" cookie and manages HTTPRoute rules through the Kubernetes Gateway API. Old deployments transition through Active → Draining → Expired states, with traffic monitored by Prometheus; expired versions scale to zero after a configurable grace period (default 24 hours) or when traffic drops to zero for 30 minutes.What I Did When I Inherited Bad Tech
Writing Cross-Platform Hooks for AI Coding Agents
npx vitest or npx playwright test. The core challenge is that the two platforms send different JSON shapes on stdin: Claude Code nests the command inside tool_input under a PreToolUse event, while Cursor's beforeShellExecution puts it at the top level. The hook normalizes both inputs, matches against blocked patterns using regexes, and returns platform-specific allow/deny responses with descriptive block messages pointing agents toward the correct yarn test:unit / test:e2e scripts. The script runs as a plain TypeScript file using Node.js 22.6+ --experimental-strip-types, avoiding a build step entirely, and is designed to fail-open on parse errors.Cloud Four's code review guide is this week's featured piece, and its most useful insight is structural: every PR must explain not just what changed but why, with a step-by-step testing checklist written as if the reviewer has never touched the feature. That discipline — splitting lint changes, code moves, and bug fixes into separate requests — is what keeps a small agency coherent across client developers and contractors alike.
Architecture thinking dominates the rest of the category. Corbin Crutchley's account of inheriting a shaky codebase at PDRT is a practical playbook for incremental migration over full rewrites — A/B delivery, view embedding, page-by-page stack switching — leading to a 350% usage increase in 18 months. Buttondown's date-based API versioning system, Stripe-inspired and running unchanged for 18 months, shows how a bidirectional transformation pipeline lets a product evolve its schema without breaking existing callers. Platformatic's Kubernetes Skew Protection brings Vercel-style version-pinning to self-hosted deployments, solving the hydration error problem that occurs when old frontends hit new backends.
Two more practical pieces close the week. Nicholas Zakas surveys fetch() proxy support across Node.js, Deno, Bun, and Cloudflare Workers — a useful reference as server-side runtimes diverge on this unglamorous but essential capability. Justin Searls' podcast interview raises the stakes: in his framing, the unsolved problem of agentic development is verifiability, not generation speed, and the divide between order-taker and ambitious developers is sharpening fast.
- Every PR should explain the "why" and include a step-by-step testing checklist for reviewers unfamiliar with the feature — small structural habits catch bugs before review even begins.
- Incremental migration beats full rewrites: A/B delivery, view embedding, and page-by-page stack switching let teams modernize without the risk of a flag-day cutover.
- Verifiability — fast, automated feedback loops — is the unsolved bottleneck in agentic development; teams that invest in robust test infrastructure now will have a compounding advantage.