[{"data":1,"prerenderedAt":441},["ShallowReactive",2],{"project-45245138":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":18,"aspects":36,"strip":44,"post_text":46,"what":47,"said":75,"maker_in_thread":166,"shape":177,"grid":182,"attempts":405,"same_week":406,"maker_shows":34,"maker_hidden":433,"reader_version":434,"card":435},"45245138","Dagger.js","A buildless, runtime-only JavaScript micro-framework","title","Show HN: Dagger.js – A buildless, runtime-only JavaScript micro-framework","https:\u002F\u002Fdaggerjs.org","daggerjs.org","TonyPeakman",1757899732,2025,80,89,890,3837,24,"notable","languages","frontend javascript micro-framework","library",[24,25,26,27,28],"javascript framework","web components","buildless","html directives","no build step","debated",-0.132,{"positive":32,"neutral":33,"mixed":34,"critical":35},6,8,1,9,{"execution":37,"idea":39,"design":42,"docs":43},{"positive":38,"critical":34},0,{"positive":40,"critical":41},5,2,{"positive":38,"critical":34},{"positive":38,"critical":38},[34,34,38,38,38,38,38,38,38,38,38,38,40,38,34,45,34,38,45,40,34,38,34,38,45,38,40,38,45,45,40,38,38,38,34,45,40,38,45,34],3,"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 \u003Cscript> from a CDN—no bundlers, no compile step.\n\nWhy I built it\nModern stacks are powerful but often heavy: bundlers, compile steps, framework DSLs, local CLIs. For internal tools, small apps, and edge\u002Fserverless deployments, I wanted something you can view-source, paste into a page, and ship.\n\nWhat it is:\n\nRuntime-only: no build or VDOM compile; hydrate behaviors directly on HTML.\nHTML direc",{"problem":48,"audience":54,"pricing":58,"motivation":59,"time_to_build":58,"stack":63,"openness":72,"stage":73,"team_size":74},{"value":49,"source":50,"evidence":51},"Heavy bundlers and compile steps for small apps, dashboards and embeds","maker",[52],{"id":53},"post",{"value":55,"source":50,"evidence":56},"Developers building internal tools, small apps, embeds and edge deployments",[57],{"id":53},null,{"value":60,"source":50,"evidence":61},"Wanted something you can view-source, paste into a page and ship without bundlers or CLIs",[62],{"id":53},[64,68],{"value":65,"source":50,"evidence":66},"JavaScript",[67],{"id":53},{"value":69,"source":50,"evidence":70},"Web Components",[71],{"id":53},"open_source","beta","unknown",{"praise":76,"objections":85,"requests":109,"questions":123,"alternatives":136},[77],{"value":78,"source":79,"evidence":80},"Buildless approach appealing","commenter",[81],{"id":82,"by":83,"text":84},"45248284","leke","Buildless! I'm already interested.",[86,95,99],{"value":87,"source":79,"evidence":88},"Longevity and lock-in concerns for a young project",[89,92],{"id":90,"by":11,"text":91},"45247899","Totally fair — longevity is a real concern, and I’ve had the same hesitation with new tools myself. The nice thing about Dagger.js is that it’s intentionally very small and…",{"id":93,"by":11,"text":94},"45301864","Thanks to both of you for the thoughtful discussion — I really appreciate seeing different perspectives here. On the “lock-in” concern: that’s a fair point. dagger.js is still…",{"value":96,"source":79,"evidence":97},"Compact source code is hard to read",[98],{"id":93,"by":11,"text":94},{"value":100,"source":79,"evidence":101},"Domain resolution problems reported",[102,106],{"id":103,"by":104,"text":105},"45245622","mdaniel","I'd guess people are getting different results because of the varying A records https:\u002F\u002Fdns.google\u002Fquery?name=daggerjs.org https:\u002F\u002Fwww.whois.com\u002Fwhois\u002F3.33.130.190 and…",{"id":107,"by":11,"text":108},"45247929","Good catch — thanks for digging into that. You’re right: the domain still has a mix of A records (AWS + GitHub Pages), which explains why some people see different results. I…",[110,114],{"value":111,"source":50,"evidence":112},"More readable source code",[113],{"id":93,"by":11,"text":94},{"value":115,"source":50,"evidence":116},"Standards-compliant attribute syntax for XML\u002FXHTML",[117,120],{"id":118,"by":11,"text":119},"45302020","Thanks for laying this out — I share your priorities on minimal boilerplate and a buildless-first workflow. dagger.js is designed around that: no bundler by default, just HTML +…",{"id":121,"by":11,"text":122},"45309472","Thanks a lot for the detailed suggestions — this is super helpful. You’re right that symbols like +\u002F\u002F@ aren’t valid in XML\u002FXHTML, and the original idea was just to keep things as…",[124],{"value":125,"source":79,"evidence":126},"How it differs from Alpine, petite-vue and Vue ESM",[127,130,133],{"id":128,"by":11,"text":129},"45247481","That’s a good comparison — Svelte also started from the “write less, ship less” idea, and I have a lot of respect for it. The big difference is that Svelte achieves that by…",{"id":131,"by":11,"text":132},"45247955","Yeah, that’s a fair comparison — Dagger.js lives in a similar space to petite-vue \u002F Alpine: no build step, HTML-first, sprinkle behaviors where you need them. The main…",{"id":134,"by":11,"text":135},"45247970","That’s a good point — the ESM build of Vue is solid, actively maintained, and does give you a no-build setup with the full feature set. dagger.js aims a bit differently: it’s…",[137,142,150,154,160],{"value":138,"source":79,"evidence":139},"Alpine.js",[140,141],{"id":128,"by":11,"text":129},{"id":131,"by":11,"text":132},{"value":143,"source":79,"evidence":144},"Vue ESM build",[145,149],{"id":146,"by":147,"text":148},"45247532","zelphirkalt","If I had to use one of these modern JS frameworks, I think Vue without build step would be one of the candidates. No shitty webpack configuring, no minimizer, no bundler, no…",{"id":134,"by":11,"text":135},{"value":151,"source":79,"evidence":152},"Svelte",[153],{"id":128,"by":11,"text":129},{"value":155,"source":79,"evidence":156},"Solid",[157],{"id":158,"by":11,"text":159},"45247541","Solid is definitely in that “compile-to-direct-DOM” camp, and I think it’s awesome — it shows how far you can push the reactive model with JSX + fine-grained updates. dagger.js…",{"value":161,"source":79,"evidence":162},"Aurelia",[163],{"id":164,"by":11,"text":165},"45276113","Aurelia is a great framework — I really like the way it ties template, JS, and CSS together into one unit. That convention makes it very natural to organize components and…",{"comments":167,"answered":168,"key":169},40,12,[170,173,174],{"id":171,"text":172},"45247918","Exactly — that’s a good way to frame it. One of the reasons I kept Dagger.js tiny and runtime-only was to minimize those risks: no exotic build chain that might break, and…",{"id":93,"text":94},{"id":175,"text":176},"45356076","Haha, that’s a great way to put it . Writing one-line code does feel clever in the moment, but you’re right, the “writer’s joy” often turns into the “reader’s pain.” Striking the…",{"commenters":178,"max_depth":179,"maker_replies":167,"first_comment_mins":180,"lifespan_hours":181},35,14,4,218,[183,187,191,193,196,199,202,204,206,208,209,213,215,218,221,224,227,230,233,236,239,241,243,245,247,250,251,254,257,259,261,264,267,270,273,274,276,279,281,282,284,286,289,291,294,296,299,301,304,308,311,315,317,319,322,325,326,328,330,332,335,337,340,343,346,347,349,350,352,355,358,359,362,364,365,368,372,375,377,379,382,384,385,387,391,393,396,398,403],[184,38,34,185,186,38],"45245551","project\u002Fcritical\u002Fnone","mkoryak",[188,38,38,189,190,38],"45247796","commenter\u002Fneutral\u002Fnone","Arch-TK",[171,38,38,192,11,34],"project\u002Fpositive\u002Fidea",[194,38,34,195,186,38],"45251126","project\u002Fcritical\u002Fexecution",[197,38,38,198,190,38],"45255388","commenter\u002Fneutral\u002Fexecution",[200,38,38,201,186,38],"45255986","commenter\u002Fcritical\u002Fexecution",[93,38,38,203,11,34],"project\u002Fpositive\u002Fexecution",[205,38,38,198,186,38],"45351223",[175,38,38,207,11,34],"maker\u002Fpositive\u002Fnone",[90,38,38,192,11,34],[210,34,38,211,212,38],"45245538","other\u002Fneutral\u002Fnone","malfist",[214,34,38,211,104,38],"45245568",[216,34,38,211,217,38],"45246404","patates",[219,34,38,211,220,38],"45247007","throwaway290",[222,34,38,223,11,34],"45247590","project\u002Fneutral\u002Fnone",[225,41,38,211,226,38],"45245712","taosx",[228,41,38,211,229,38],"45245849","harrygeez",[231,41,38,211,232,38],"45246132","jeswin",[234,41,38,235,11,34],"45247572","other\u002Fpositive\u002Fnone",[237,41,38,211,238,38],"45246774","bytehowl",[158,41,38,240,11,34],"project\u002Fneutral\u002Fidea",[242,41,38,211,226,38],"45246977",[244,41,38,223,11,34],"45247574",[246,41,38,240,11,34],"45247522",[248,41,38,211,249,38],"45245905","Scaevolus",[128,41,38,240,11,34],[252,41,38,211,253,38],"45247716","kakokiyrvoooo",[255,41,40,192,256,38],"45246845","fergie",[258,41,38,192,11,34],"45247413",[260,41,38,240,11,34],"45247404",[262,41,38,211,263,38],"45247789","epolanski",[265,45,38,266,11,34],"45245157","project\u002Fpositive\u002Fnone",[268,45,34,185,269,38],"45245415","xupybd",[271,45,45,223,272,38],"45245523","pylotlight",[103,45,45,223,104,38],[275,45,45,223,269,38],"45245754",[277,45,34,185,278,38],"45246100","chrismorgan",[280,45,38,223,11,34],"45247741",[107,45,38,266,11,34],[283,45,38,223,11,34],"45245763",[285,45,40,266,269,38],"45245986",[287,45,34,185,288,38],"45245424","jodacola",[290,45,38,223,11,34],"45245759",[292,180,40,192,293,38],"45246475","omtinez",[295,180,38,192,11,34],"45247791",[297,40,34,185,298,38],"45246449","copypaper",[300,40,38,223,11,34],"45247364",[302,32,38,189,303,38],"45265321","kasuu",[305,306,38,211,307,38],"45245724",7,"wffurr",[309,306,38,211,310,38],"45246039","ivape",[312,306,34,313,314,38],"45246483","project\u002Fcritical\u002Fidea","Nickersf",[316,306,38,240,11,34],"45247831",[318,306,38,240,11,34],"45247984",[320,33,45,240,321,38],"45245647","nivethan",[323,33,38,211,324,38],"45245768","mythz",[146,33,38,211,147,38],[327,33,38,240,11,34],"45247977",[329,33,40,192,147,38],"45248519",[331,33,38,266,11,34],"45276123",[333,33,45,240,334,38],"45254814","em-bee",[164,33,38,336,11,34],"project\u002Fneutral\u002Fdesign",[338,33,38,339,334,38],"45276830","commenter\u002Fneutral\u002Fdesign",[341,33,38,342,11,34],"45297003","maker\u002Fneutral\u002Fdesign",[344,33,45,345,334,38],"45301211","project\u002Fmixed\u002Fdesign",[118,33,38,336,11,34],[348,33,45,336,334,38],"45302381",[121,33,38,336,11,34],[351,33,40,192,334,38],"45314379",[353,33,38,354,11,34],"45341482","maker\u002Fneutral\u002Fnone",[356,33,38,357,11,34],"45331031","project\u002Fneutral\u002Fdocs",[134,33,38,240,11,34],[360,33,38,361,324,38],"45248514","commenter\u002Fneutral\u002Fidea",[363,33,38,240,11,34],"45296958",[131,33,38,240,11,34],[366,35,38,367,11,34],"45276223","project\u002Fpositive\u002Fdocs",[369,370,34,313,371,38],"45246529",10,"pyrolistical",[373,370,38,211,374,38],"45247243","zdragnar",[376,370,38,240,11,34],"45247996",[378,370,38,240,11,34],"45247992",[380,381,45,357,104,38],"45245552",11,[383,381,38,357,11,34],"45247636",[82,168,40,192,83,38],[386,168,38,240,11,34],"45248390",[388,389,38,211,390,38],"45246468",13,"jerawaj740",[392,389,38,211,11,34],"45247464",[394,179,45,357,395,38],"45248688","efilife",[397,179,38,240,11,34],"45249398",[399,400,34,401,402,38],"45252188",15,"project\u002Fcritical\u002Fdesign","imiric",[404,400,38,336,11,34],"45257231",[],[407,412,416,421,425,429],{"id":408,"name":409,"points":410,"category":411},"45231378","AnyCrap",1184,"creative",{"id":413,"name":414,"points":415,"category":411},"45220069","Beat Maker",202,{"id":417,"name":418,"points":419,"category":420},"45212535","Asxiv.org",161,"ai",{"id":422,"name":423,"points":424,"category":411},"45232299","CLAVIER-36",146,{"id":426,"name":427,"points":428,"category":411},"45247396","Backdrop",82,{"id":430,"name":431,"points":432,"category":420},"45276501","Math2Tex",79,false,"v2",{"id":436,"name":5,"line":6,"ai":433,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":437,"top":18,"kw":438,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":439,"url":9,"mix":440,"praise":78,"objection":87,"sub":21},45245138,-0.13,[24,25,26,27,28],"1100000000005013103510103050335000135031",[32,33,34,35],1794036682497]