Drow.js is a minimalist wrapper for the Web Components API that replaces class boilerplate with a clean, object-based config. - Two-way binding, computed properties, scoped CSS, Shadow DOM support - Global store for cross-component state sharing - Lifecycle hooks: init(), disconnected(), updated() - Render batching via requestAnimationFrame - TypeScript definitions included - Zero dependencies. No build step. Drop in a single script tag.
No reviews yetBe the first to leave a review for Drow.js
Maker
📌
Hey Product Hunt! 👋
I built Drow.js because I kept reaching for React or Vue for projects that really just needed a couple of reusable components — and the setup cost was never worth it.
The Web Components API is genuinely powerful, but the native syntax is painful. You extend HTMLElement, call super(), remember which lifecycle methods do what... all before writing a single line of actual UI logic.
Drow fixes that. You hand it a plain object with a name, a template, and some state. It handles registration, reactivity, and rendering. That's it.
Recent additions that I'm especially happy with:
- **Render batching** — rapid state changes collapse into one DOM update per frame
- **Keyed d-for diffing** — lists patch only what changed, not full rebuilds
- **d-if / d-else-if / d-else** chaining — conditional blocks that actually work intuitively
- **Deep d-model** — bind inputs to nested state paths like `d-model="user.email"`
It's genuinely zero dependencies. The whole library is one file you can read in 10 minutes.
Would love to hear what you think — and if you build something with it, let me know!