Show HN: Dagger.js – A buildless, runtime-only JavaScript micro-framework

37 TonyPeakman 22 9/15/2025, 1:28:52 AM daggerjs.org ↗
TL;DR: dagger.js is a buildless, runtime-only micro-framework that plays nicely with native Web Components. It uses HTML-first directives (e.g. +click, +load) so you can ship a page by dropping a single <script> from a CDN—no bundlers, no compile step.

Why I built it Modern stacks are powerful but often heavy: bundlers, compile steps, framework DSLs, local CLIs. For internal tools, small apps, and edge/serverless deployments, I wanted something you can view-source, paste into a page, and ship.

What it is:

Runtime-only: no build or VDOM compile; hydrate behaviors directly on HTML. HTML directives: e.g. +click, lifecycle +load / +loaded / +unload / +unloaded. Zero APIs: dagger.js works in pure declarative mode, modules and directives provide everything you need to build your application. Web-Components-first: works alongside Custom Elements; keep concerns local. Distributed modules: load small, focused script modules via CDN. Progressive enhancement: the page renders without a build step.

Use cases:

Admin panels & dashboards that don’t warrant a full toolchain Embed widgets, docs-sites with interactive bits Edge/serverless apps where cold start and simplicity matter

Links

GitHub: https://github.com/dagger8224/dagger.js Docs/Guide: https://daggerjs.org Examples: https://codepen.io/dagger8224/pens

I’d love feedback on edge-cases, and where it breaks. Happy to answer tough questions here.

Comments (22)

malfist · 2h ago
Dagger is also a compile time java dependency injection framework
mdaniel · 2h ago
And a very cool CI toolkit https://github.com/dagger/dagger (Apache 2)

Link to the DI mentioned by the parent comment https://github.com/google/dagger (also Apache 2)

taosx · 1h ago
I’d actually love to see something that goes in the opposite direction, highly optimized and compiled, where the result is as small, fast, and efficient as possible. I get that a lot of people dislike compilation, but once I have the CI set upI never found build steps to be a problem for me.

Some time ago while I was experimenting with writing Debian benchmarks[0], I found that by completely avoiding strings, using Uint8Arrays, and manually managing bounds/memory, I could squeeze out performance that almost made you forget you were writing JavaScript. I never ended up submitting a PR, but it was pretty eye-opening.

At one point I went into a rabbit hole and tried to build something similar on my own, but it got complicated very quickly given my limited compiler knowledge. That’s why I always thought Prepack[1] was such a cool idea.

[0] https://benchmarksgame-team.pages.debian.net/benchmarksgame/... [1] https://github.com/facebookarchive/prepack

Scaevolus · 1h ago
Isn't that what Svelte was aiming to do? It's moved on a ways since then, but you can still see the fundamentals in its demos: https://svelte.dev/playground/hello-world
harrygeez · 1h ago
I’m in a similar boat like you. I would love for a React-like library that compiles down to direct JavaScript DOM transforms. Of course Svelte exists but I don’t want to mark what is reactive or not and I can’t go back to html templates after using typed JSX. Also I don’t really like the “island” like template syntax of Vue, Svelte, etc
jeswin · 37m ago
If what you're looking for is JSX and TypeScript (but without magic or reactivity), there's something I wrote here: https://webjsx.org
TonyPeakman · 3h ago
thanks for taking a look!

Positioning: Think Alpine/Vue-like ergonomics but no build and WC-first.

Size & perf: Focus is on simplicity and startup latency over framework features. I’m not posting synthetic benchmarks; if you have a real page you want me to try, I’ll profile it and share results.

Interop: Works with native Custom Elements. I’m preparing examples with Shoelace/FAST.

Security: Directives are sandboxed; no eval. If you spot an injection risk, please open an issue and I’ll patch quickly.

Limitations: Complex state management, SSR/streaming, and huge SPA routing aren’t first goals.

License: MIT.

Contrib: Issues and small PRs welcome (docs, examples, tests especially).

I’ll stay in the thread to answer questions and incorporate feedback into the docs.

xupybd · 2h ago
Website looks dead. I get Godaddy domain parking.
TonyPeakman · 1h ago
Hey xupybd,thanks for reporting the issue,you may refer to the alternative site: https://000712133.deployed.codepen.website/#overview/introdu...

Thanks

xupybd · 1h ago
Hi Tony, Looks like it's up and running now. Propagation delay probably got me in New Zealand. Cool project BTW.
pylotlight · 2h ago
mdaniel · 2h ago
xupybd · 1h ago
It's working now
chrismorgan · 44m ago
No, it’s still broken. DNS is offering six choices, two of which are broken.
jodacola · 2h ago
FYI: daggerjs.org is resolving to a GoDaddy domain parked page right now.

Will check out the repo linked at the end of your message.

TonyPeakman · 1h ago
Thanks for reporting this, jodacola, it seems there is domain parsing issue sometimes, you may refer to the alternative site: https://000712133.deployed.codepen.website/#overview/introdu...
nivethan · 2h ago
Is this aimed at being in the same role as petite-vue and alpinejs? They also don't have a build step.

I've started to think something like petite-vue and twind would let you build small internal tools quickly, there are some major downsides to it which is why I haven't committed yet.

mythz · 1h ago
Using the full vue.js doesn't have a build step either.

I started out developing UIs using petite-vue, unfortunately ended up rewriting it to use full Vue.js after running into too many of its limitations and issues, which given that it's abandon-ware wont ever be resolved. As such I'd strongly recommend against starting projects with PetiteVue and just use the ESM build of Vue.js which also doesn't require a build step, has the full feature-set, is actively used and maintained, etc.

Either way developing Web Apps (using Vue) without a build step using JS Modules is now my preference which I've written about in my Simple, Modern JavaScript post [1]

[1] https://servicestack.net/posts/javascript

wffurr · 1h ago
Seems like it’s been a while since a new JS framework landed on the front page.
ivape · 55m ago
The last decade gave us enough JavaScript for a lifetime.
mkoryak · 2h ago
Seems neat. I wouldn't use it for personal stuff because I'd be afraid of getting locked into a framework that might not exist next year.

Once this project is about a year old, if it still has any commits, then I'd consider it.

mdaniel · 2h ago
What are the criteria for $ interpolation? Is it everywhere?

  <div class="text">
        ${ winner ? 'Wins' : 'Draw' }!
  </div>