Web DevNext.js Standalone Docker Image Size: A Real Dockerfile
What Next.js output standalone actually produces, the two directories file tracing never copies, and the three-stage Dockerfile this site deploys to a self-hosted VPS.
Read MoreBlog
Articles on Next.js, React, TypeScript, and modern web app architecture — performance, SEO, and real-world frontend engineering patterns.
81 articles
Web DevWhat Next.js output standalone actually produces, the two directories file tracing never copies, and the three-stage Dockerfile this site deploys to a self-hosted VPS.
Read More
An agent put use client at the top of a route file and the whole page shipped to the browser. The type checker said nothing. Here is the plugin I wrote for that stack in full — manifest, skill, hook, subagent — and which of the four I deleted.
Read More
An artifact is a live, interactive page on claude.ai published straight from a session. Here are the constraints that shape it and where it silently will not work.
Read More
How I structure articles so ChatGPT, Perplexity, and Google AI Overviews quote them — answer-first writing, FAQPage and TechArticle schema, and measuring AI-referral traffic.
Read More
How I use the Speculation Rules API to prefetch and prerender pages in Chromium — the JSON syntax, eagerness levels, document rules, and how it differs from Next.js Link prefetch.
Read More
Why the Date object is broken and how Temporal fixes it with immutable types, first-class time zones, and DST-safe math — plus the current browser status.
Read More
Next.js 16 renamed middleware.ts to proxy.ts. Here is the mechanical migration, the silent trap that exposes routes, and why auth must move to your data layer after CVE-2025-29927.
Read More
How Cache Components flips Next.js to dynamic-by-default and hands you explicit caching through the use cache directive, cacheLife profiles, and cacheTag invalidation.
Read More
What the Next.js hydration mismatch error really means, the handful of causes behind it, and how I fix each one with useEffect, dynamic imports, and suppressHydrationWarning.
Read More
Every use server function is a public POST endpoint. How I harden Next.js Server Actions with per-action auth, ownership checks, Zod validation, and rate limiting.
Read More
Astro 5 shipped Server Islands, a stable Content Layer API, and typed astro:env — how each one works and when I actually reach for it.
Read More
Why Svelte 5 dropped the compiler-magic reactive model for explicit runes — how $state, $derived, $effect, and $props work, the signals under the hood, and how to migrate.
Read More
How HTMX revives the hypermedia model — hx-get, hx-swap, and HTML fragments instead of a JSON API — where it shines, where it does not, and what htmx 2.0 changed.
Read More
Tailwind CSS v4 is a ground-up rewrite on the Rust Oxide engine: CSS-first theme config, automatic content detection, and builds up to 5x faster.
Read More
React's build-time compiler now memoizes components and hooks for you. Here is what it does, how to wire it into Babel, Vite, and Next.js, and where it can still bite.
Read More
Biome is a single Rust formatter and linter that wants to replace ESLint plus Prettier. Here is the honest comparison: speed, config, Prettier compatibility, migration, and the limits I hit.
Read More
Why Vite ran esbuild in dev and Rollup in production, the inconsistencies that caused, and how Rolldown — the Rust bundler from the Vite team — unifies both.
Read More
Why naive useEffect timers leak, how to build a reusable useDebounce hook, and how to clean up debounce and throttle on unmount in React.
Read More
Two architectures for shipping less JavaScript — RSC's server-render boundary versus the islands model in Astro and Qwik — and how to choose.
Read More
How TanStack Router gives you typed params, validated search state, and route loaders — and why file-based routing beats hand-wiring the tree.
Read More
Valibot ships a schema in about 1.3 kB while Zod carries roughly 13 kB — here is why the modular pipe design tree-shakes and Zod's method chaining does not.
Read More
Heavy CPU work freezes React at 0fps. Here is how I move it to a Web Worker with Comlink, when a worker beats a server call, and how to hold 60fps.
Read More
Zod 4 rewrote the validation core for speed, added a 1.9 KB tree-shakable mini build, and reshaped error handling — here is what changed and how to migrate.
Read More
How to generate a unique Open Graph image for every blog post at request time using Next.js ImageResponse and Satori, without shipping a design tool.
Read More