Building Astro Websites with Almost No JavaScript - Introducing Webuum v0.x | Webuum
Skip to content
Appearance
Return to top
Building Astro Websites with Almost No JavaScript - Introducing Webuum v0.x
For the past few years, we've been building websites with Astro and other server-rendered stacks.<br>Astro solved one of the biggest problems of modern frontend development: shipping too much JavaScript to the browser. Instead of hydrating entire pages, Astro lets us keep most of a website as HTML and only add JavaScript where it is actually needed.<br>That is the right foundation for a modern website.<br>But even mostly static websites still need interaction: dialogs, popovers, accordions, menus, forms, and small component behavior.<br>That is the layer Webuum focuses on.<br>Most Websites Are Not Web Applications <br>A typical website doesn't need client-side routing, global state management, or a large runtime.<br>Most websites need:<br>dialogs<br>dropdowns<br>accordions<br>tabs<br>forms<br>navigation menus<br>small interactive widgets<br>The challenge is not building these features.<br>The challenge is building them without turning a website into an application.<br>The Search for a Smaller Runtime <br>Over the years we've tried many different approaches to progressive enhancement.<br>Some were useful for specific projects. Some made the code smaller, but introduced their own conventions. Some solved interactivity well, but still felt like a layer on top of the website instead of an extension of the HTML we already had.<br>The thing we kept looking for was not another way to organize JavaScript.<br>It was a way to rely more directly on the browser.<br>So we kept asking the same questions:<br>Can we rely more on native browser APIs?<br>Can we use Custom Elements directly?<br>Can we use the browser's own semantics for common UI?<br>Can we reduce abstraction instead of moving it around?<br>Can we make components feel closer to HTML?<br>Most importantly:<br>Can we make interactivity feel like a natural extension of the platform instead of another framework on top of it?
The Platform Is Already Powerful <br>The modern web platform has changed a lot.<br>Today we have:<br>Invoker Commands API<br>Popover API<br>Dialog API with and ::backdrop<br>and<br>Custom Elements<br>Declarative Shadow DOM<br>HTML Templates<br>CSS ::part<br>inert<br>Form-associated custom elements<br>ES Modules<br>And newer pieces like CSS Anchor Positioning and View Transitions are making more UI behavior possible directly in the browser, depending on the browser support you target.<br>That list matters because these are not just low-level APIs.<br>They cover real website behavior: modal dialogs, light-dismiss popovers, disclosure widgets, focus boundaries, declarative button actions, scoped styling, native forms, and reusable components.<br>Many of the problems that required large JavaScript abstractions ten years ago can now be solved directly in the browser.<br>We started wondering:<br>What would a small framework look like if it embraced the platform instead of abstracting it away?
Meet Webuum <br>Today we're releasing the first public alpha of Webuum v0.x.<br>Webuum is a lightweight JavaScript framework built for websites, not web applications. It embraces native browser APIs, focuses on progressive enhancement, and keeps the runtime intentionally small.<br>It is:<br>Native<br>Only 1 kB gzipped<br>Fast on server-rendered websites<br>Declarative<br>Frameworkless<br>Extensible<br>Built around Custom Elements<br>That size is not just a marketing number.<br>Webuum has no virtual DOM, no hydration layer, no routing system, and no runtime magic. It gives you a small base for Custom Elements, typed data-* props, DOM parts, and declarative command behavior.<br>You can use it with a bundler, but you do not need one. You can use it with Astro, PHP, Laravel, Rails, or any stack that already renders HTML. And when a component grows beyond the basics, you can still plug in Signals, LitHtml, or your own custom logic exactly where it helps.<br>It is not:<br>A React replacement<br>A SPA framework<br>A state management solution<br>A meta-framework<br>Webuum exists to solve a much smaller problem:<br>Add interactivity to server-rendered websites with as little JavaScript as possible.
That makes it a good fit for Astro, but it is not limited to Astro. The same idea applies anywhere HTML is already your main output: static sites, CMS-driven sites, Laravel, Rails, or any stack where JavaScript should enhance the page rather than own it.<br>A Different Approach to Components <br>Webuum is built around Custom Elements.<br>Instead of introducing a virtual DOM or a custom rendering engine, components are simply web components.<br>htmldialog is="x-dialog" id="awesomeDialog"><br>button command="close" commandfor="awesomeDialog"><br>Close<br>button><br>dialog><br>This is still a real .<br>The close behavior still comes from the browser.<br>Webuum is there only to enhance the native behavior: add the small hooks your component needs, keep the API pleasant, and preserve the dialog behavior the browser already provides.<br>The same idea applies to...