A developer migrated a marketing site from React and Ark UI to native Web Components using Astro, eliminating 100 KB of JavaScript with no functionality lost. The post explains why React is overkill for mostly-static marketing sites, walks through the ergonomic pain points of raw Custom Elements, and introduces nanotags — a tiny (~2.5 KB) wrapper library that adds typed props backed by nanostores atoms, type-safe DOM refs, automatic event listener cleanup, and composable accessibility attachments. The result is a fully reactive component system costing around 3 KB total, with no framework runtime between code and the browser.
Table of contents
The problem with defaultsLighter framework, or no framework?Super speed, super quality: lessons from the Aptos Network site launchWhy Web Components?What raw Web Components feel likenanotags: making Web Components enjoyableDeclarative, type-safe props and refsTyped events and the builder chainAccessibilityModularity and bundle sizeFinal React-ionsSort: