Hey HN! I built Lume.js after getting frustrated with framework overhead on simple projects.
The problem: 80% of websites don't need a full framework. Vanilla JS works great except for one thing: reactivity. You end up with spaghetti code manually tracking which DOM elements to update.
What Lume does: Adds reactivity to vanilla JS using only web standards. data-bind attributes (valid HTML5) + ES6 Proxies. No JSX, no v-model, no x-data. No build step unless you want one.
Philosophy: Inspired by Go - do one thing well. Lume makes HTML reactive. Everything else (routing, validation, etc.) is optional addons or separate libraries.
I rewrote the core three times over two months to get automatic dependency tracking without memory leaks. Ended up with 114 tests and full coverage.
The repeat addon for list rendering is experimental (API might change), but everything else is stable.
Would love feedback, especially on:
API decisions (explicit state() wrapping vs automatic)
Tradeoffs (bundle size vs features)
Use cases I'm missing
Links:
Hey HN! I built Lume.js after getting frustrated with framework overhead on simple projects.
The problem: 80% of websites don't need a full framework. Vanilla JS works great except for one thing: reactivity. You end up with spaghetti code manually tracking which DOM elements to update.
What Lume does: Adds reactivity to vanilla JS using only web standards. data-bind attributes (valid HTML5) + ES6 Proxies. No JSX, no v-model, no x-data. No build step unless you want one.
Size: 1.5KB gzipped (vs 42KB React+ReactDOM, 18KB Vue, 15KB Alpine).
Philosophy: Inspired by Go - do one thing well. Lume makes HTML reactive. Everything else (routing, validation, etc.) is optional addons or separate libraries.
I rewrote the core three times over two months to get automatic dependency tracking without memory leaks. Ended up with 114 tests and full coverage.
The repeat addon for list rendering is experimental (API might change), but everything else is stable.
Would love feedback, especially on:
API decisions (explicit state() wrapping vs automatic) Tradeoffs (bundle size vs features) Use cases I'm missing Links:
Website: https://sathvikc.github.io/lume-js/ GitHub: https://github.com/sathvikc/lume-js Design decisions: https://sathvikc.github.io/lume-js/#docs/design/design-decis...