[{"data":1,"prerenderedAt":937},["ShallowReactive",2],{"project-39429370":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":36,"aspects":37,"strip":49,"post_text":51,"what":52,"said":80,"maker_in_thread":210,"shape":220,"grid":224,"attempts":899,"same_week":900,"maker_shows":18,"maker_hidden":929,"reader_version":930,"card":931},"39429370","htmz","a low power tool for HTML","title","Show HN: htmz – a low power tool for HTML","https:\u002F\u002Fleanrada.com\u002Fhtmz\u002F","leanrada.com","Kalabasa",1708348338,2024,1020,242,7,3515,1,"legend","dev_tools","html fragment loader","library",[24,25,26,27,28],"html","iframe","htmx alternative","no javascript","fragment swap","mixed",0.096,{"positive":32,"neutral":33,"mixed":34,"critical":35},33,56,6,21,116,{"idea":38,"docs":41,"execution":43,"design":45,"performance":46,"privacy":47},{"positive":39,"critical":40},18,4,{"positive":42,"critical":18},2,{"positive":40,"critical":44},5,{"positive":40,"critical":44},{"positive":42,"critical":44},{"positive":48,"critical":18},0,[44,50,44,50,44,48,48,48,44,40,50,50,48,50,50,50,48,50,18,42,50,42,18,18,50,44,40,50,40,44,50,44,50,50,40,40,42,44,44,50],3,null,{"problem":53,"audience":51,"pricing":51,"motivation":64,"time_to_build":51,"stack":68,"openness":77,"stage":78,"team_size":79},{"value":54,"source":55,"evidence":56},"Replacing page fragments with server HTML without heavy JavaScript frameworks","maker",[57,60],{"id":58,"by":11,"text":59},"39430577","Yes this was a response to htmx. It was a half-parody half-I wanna make it work project. Like https:\u002F\u002Fgithub.com\u002Fvilgacx\u002Faki I would fear if anyone wants to use this in…",{"id":61,"by":62,"text":63},"39431744","koliber","In 2001 or so, I was building an HTML based email client. We used a hidden iframe to execute JS to load data from the server and manipulate the DOM with the result. It was not…",{"value":65,"source":55,"evidence":66},"Half parody, half a wish to make the htmx-style idea work",[67],{"id":58,"by":11,"text":59},[69],{"value":70,"source":71,"evidence":72},"JavaScript","commenter",[73],{"id":74,"by":75,"text":76},"39452413","gpnt","Well, you are using javascript anyway so here it is a 163 bytes solution without the back button problem and iframe hack: \u003Cscript>onclick=async…","open_source","prototype","unknown",{"praise":81,"objections":109,"requests":154,"questions":169,"alternatives":184},[82,101],{"value":83,"source":71,"evidence":84},"Clever, elegant use of existing browser features",[85,89,93,97],{"id":86,"by":87,"text":88},"39430451","azornathogron","This is a glorious demonstration of someone really understanding the platform. I don't expect I would ever use it, but I think it's excellent.",{"id":90,"by":91,"text":92},"39431973","fractaledmind","I cannot believe how simple and elegant this is. Using an iframe as a request\u002Fresponse proxy to enable targeted replacement is just",{"id":94,"by":95,"text":96},"39432202","lelanthran","Jesus Christ, this is all at once simple, powerful and useful. So little code, achieving so much!!!",{"id":98,"by":99,"text":100},"39430000","sodimel","Simple and powerful, as the vanilla web should be. Thank you for this (small) gem :)",{"value":102,"source":71,"evidence":103},"Simple and small code",[104,108],{"id":105,"by":106,"text":107},"39429979","Alifatisk","Kind of impressive that the installation script was that small.",{"id":94,"by":95,"text":96},[110,125,136,143],{"value":111,"source":71,"evidence":112},"Breaks back button and browser history",[113,117,121],{"id":114,"by":115,"text":116},"39430132","internet2000","Apparently it breaks your back button too.",{"id":118,"by":119,"text":120},"39431986","yellowapple","One downside of this approach is that it fills my browser history with a bunch of extra entries, which ain't ideal (especially for my Back button). I'd guess that's probably…",{"id":122,"by":123,"text":124},"39432584","jallasprit","It's quite good. I noticed that my back button had to be repeatedly pressed to go back to write this comment, after interacting with the examples a few times. I'm sure that's…",{"value":126,"source":71,"evidence":127},"Breaks without JavaScript, no graceful degradation",[128,132],{"id":129,"by":130,"text":131},"39430175","Arch-TK","Given that this uses `target`, doesn't it mean that unlike htmx you can't easily make this gracefully degrade when JS isn't enabled? And, yes, I know, saying \"when JS isn't…",{"id":133,"by":134,"text":135},"39439183","account42","Zero noscript fallback. Please don't use this.",{"value":137,"source":71,"evidence":138},"Likely conflicts with Content-Security-Policy",[139],{"id":140,"by":141,"text":142},"39430962","sublinear","This seems likely to have issues with most \"Content-Security-Policy\" rules because of the inline script in \"onload\" and the iframe. Makes it a non starter in real world…",{"value":144,"source":71,"evidence":145},"Uses slot and URL fragments incorrectly",[146,150],{"id":147,"by":148,"text":149},"39430796","spankalee","Reusing the \u003Cslot> element like this is a bad idea - it has very specific behavior in browsers. In a shadow root it'll be replaced by the children of the host element, no matter…",{"id":151,"by":152,"text":153},"39431862","andrewmcwatters","Except using a URL fragment refers to a “resource that is subordinate to another, primary resource” not a destination. They point out the URL abuse, so why do it? Slot is also a…",[155,162],{"value":156,"source":71,"evidence":157},"Support for cross-origin requests",[158],{"id":159,"by":160,"text":161},"39434553","h43z","Here a version that works for cross origin requests. ``` \u003Ciframe hidden name=xhtmz onload=\"onmessage=x=>document.querySelector(x.data.target).innerHTML=x.data.content\">\u003C\u002Fiframe>…",{"value":163,"source":71,"evidence":164},"Preprocessor or no-JS support",[165],{"id":166,"by":167,"text":168},"39449686","mofosyne","Oh, if this snippet is just a search and replacer... would it be possible for this to be a preprocessor as well? Would allow for noJS websites.",[170,177],{"value":171,"source":71,"evidence":172},"How does it compare to htmx",[173],{"id":174,"by":175,"text":176},"39432161","germandiago","How it compares to htmx?",{"value":178,"source":71,"evidence":179},"Can returned JavaScript run",[180],{"id":181,"by":182,"text":183},"39434507","tommica","Can it trigger JS returned from the proxy? Something like \u003Cscript>alert(123);\u003C\u002Fscript>",[185,196,203],{"value":186,"source":71,"evidence":187},"htmx",[188,192],{"id":189,"by":190,"text":191},"39430341","tambourine_man","That's a great hack and it shows how close the browser is to offering SPA natively. Just a few attributes and we could avoid the iframe. It's probably more useful to prove a…",{"id":193,"by":194,"text":195},"39431235","synergy20","I happened to spend a little more time on htmx this weekend which htmz was inspired by. htmx\u002Fhtmz does do well for simple use cases, htmx does well for SSR heavy cases(e.g.…",{"value":197,"source":71,"evidence":198},"pjax",[199],{"id":200,"by":201,"text":202},"39430161","jdp","Reminds me of pjax [1], except pjax works over XHR instead of an iframe and uses pushState by default to keep the back button working. [1]: https:\u002F\u002Fgithub.com\u002Fdefunkt\u002Fjquery-pjax",{"value":204,"source":71,"evidence":205},"Hotwire",[206],{"id":207,"by":208,"text":209},"39434495","agp2572","This is very similar to how Hotwire does replacing of HTML generated on server side in Ruby on Rails.",{"comments":211,"answered":40,"key":212},16,[213,214,217],{"id":58,"text":59},{"id":215,"text":216},"39435276","It's just a weird feeling for someone to use a hack \u002F experiment as a foundation or something. I know 'the software is provided \"as is \", without warranty'. The difference with…",{"id":218,"text":219},"39438508","Yeah, querySelector(undefined) works Although location.hash defaults to the empty string '' when there is no hash, which gives a SyntaxError, so we still need the fallback…",{"commenters":221,"max_depth":16,"maker_replies":211,"first_comment_mins":222,"lifespan_hours":223},157,67,167,[225,229,233,236,239,243,246,249,252,254,258,260,264,268,271,274,277,279,282,286,289,291,294,297,301,304,307,310,313,315,317,319,321,324,327,329,332,335,337,340,343,345,348,350,353,356,359,361,363,366,369,372,374,376,379,380,383,386,389,390,394,397,399,402,406,408,411,414,415,417,418,421,424,427,430,433,435,437,439,441,443,446,449,451,454,456,458,460,463,466,469,471,473,476,479,482,485,487,490,492,494,497,499,502,505,507,510,512,515,518,520,522,524,527,531,534,537,542,546,549,553,556,559,562,565,567,570,573,576,578,581,584,586,589,591,594,597,600,603,605,608,610,613,615,617,619,622,625,627,630,633,635,638,641,645,648,650,653,655,657,660,662,664,666,669,671,673,675,679,681,685,688,691,694,698,701,703,708,712,716,720,725,729,731,733,736,739,743,745,748,752,754,757,759,763,765,767,769,774,776,778,780,784,787,789,791,793,796,798,800,802,804,808,810,813,816,819,822,826,828,831,833,835,838,840,844,848,850,854,858,862,864,866,869,873,875,878,882,886,890,892,896],[226,48,44,227,228,48],"39431133","maker\u002Fpositive\u002Fidea","keepamovin",[230,48,48,231,232,48],"39432516","commenter\u002Fneutral\u002Fnone","cschep",[234,48,48,231,235,48],"39433658","safety1st",[237,48,48,231,238,48],"39433861","jkingsman",[240,48,48,241,242,48],"39434229","other\u002Fneutral\u002Fnone","TimTheTinker",[244,48,48,241,245,48],"39435408","MikeTheGreat",[247,48,48,231,248,48],"39435254","scubbo",[250,48,48,231,251,48],"39439059","RamblingCTO",[189,18,50,253,190,48],"project\u002Fmixed\u002Fidea",[255,18,50,256,257,48],"39430576","project\u002Fneutral\u002Fnone","alexpetros",[58,18,48,259,11,18],"maker\u002Fneutral\u002Fidea",[261,18,50,262,263,48],"39430840","maker\u002Fneutral\u002Fdocs","detritus",[265,18,44,266,267,48],"39431090","project\u002Fpositive\u002Fidea","briantakita",[269,18,48,241,270,48],"39433405","bee_rider",[272,18,48,241,273,48],"39433570","zubairshaik",[275,18,48,241,276,48],"39433559","zestyping",[278,18,48,241,267,48],"39436382",[280,18,48,241,281,48],"39441142","naasking",[283,18,44,284,285,48],"39431521","maker\u002Fpositive\u002Fexecution","NelsonMinar",[287,18,50,259,288,48],"39432018","bachmeier",[215,18,48,290,11,18],"maker\u002Fneutral\u002Fexecution",[292,18,48,241,293,48],"39436442","Exoristos",[295,18,48,241,296,48],"39436559","recursivedoubts",[298,18,18,299,300,48],"39438669","project\u002Fcritical\u002Fexecution","yawaramin",[302,18,44,266,303,48],"39432729","noduerme",[305,18,48,241,306,48],"39433226","aeontech",[308,18,48,241,309,48],"39435034","o11c",[311,18,44,266,312,48],"39432990","IggleSniggle",[314,18,48,231,281,48],"39430600",[316,18,44,266,296,48],"39431985",[318,18,48,241,190,48],"39432699",[320,18,48,241,296,48],"39434649",[322,18,48,231,323,48],"39433078","DoesntMatter22",[325,18,48,241,326,48],"39433218","eproxus",[328,18,48,241,296,48],"39434373",[330,18,48,241,331,48],"39445354","gedw99",[333,18,48,241,334,48],"39433445","harryvederci",[336,18,48,241,296,48],"39434730",[338,18,48,241,339,48],"39437388","1propionyl",[341,18,48,241,342,48],"39435026","felixguendling",[344,18,48,241,296,48],"39436599",[346,18,48,241,347,48],"39435396","bb88",[349,18,48,241,293,48],"39436421",[351,18,48,241,352,48],"39436756","gorjusborg",[354,18,48,241,355,48],"39462577","niutech",[357,18,48,241,358,48],"39435405","liendolucas",[360,18,48,241,296,48],"39436613",[362,18,48,241,331,48],"39445130",[364,18,48,241,365,48],"39445165","lsferreira42",[367,18,48,241,368,48],"39442200","digitalsin",[370,18,44,266,371,48],"39439266","larodi",[373,42,48,241,148,48],"39431383",[375,42,48,241,281,48],"39441566",[377,42,48,241,378,48],"39442839","hnbad",[61,50,44,266,62,48],[381,50,48,241,382,48],"39432052","LispSporks22",[384,50,48,241,385,48],"39432871","smrtinsert",[387,50,48,241,388,48],"39437389","xutopia",[86,40,44,266,87,48],[391,40,18,392,393,48],"39432090","project\u002Fcritical\u002Fdesign","simplify",[395,40,48,231,396,48],"39433052","sam2426679",[398,40,48,231,393,48],"39433114",[400,40,48,231,401,48],"39435985","neoberg",[403,40,50,404,405,48],"39435119","project\u002Fneutral\u002Fexecution","mirekrusin",[407,40,48,231,300,48],"39438677",[409,44,50,404,410,48],"39435836","err4nt",[412,44,50,404,413,48],"39437967","ericlewis",[218,44,48,404,11,18],[416,44,50,404,355,48],"39462607",[129,34,50,404,130,48],[419,34,48,231,420,48],"39430270","beretguy",[422,34,48,231,423,48],"39430390","efilife",[425,34,48,231,426,48],"39432860","SushiHippie",[428,34,48,231,429,48],"39432925","pmontra",[431,34,48,231,432,48],"39433200","samtheprogram",[434,34,48,231,426,48],"39434102",[436,34,48,231,429,48],"39435164",[438,34,48,231,432,48],"39433185",[440,34,48,290,11,18],"39430400",[442,34,50,404,281,48],"39430465",[444,34,50,404,445,48],"39430606","simpaticoder",[447,34,50,404,448,48],"39434261","sesm",[450,34,48,231,445,48],"39435069",[452,34,48,231,453,48],"39487326","nymanjon",[455,34,50,404,355,48],"39462630",[457,34,50,404,355,48],"39462646",[459,34,48,284,11,18],"39490528",[461,34,48,231,462,48],"39430950","MatthiasPortzel",[464,34,48,231,465,48],"39431316","J_Shelby_J",[467,34,48,231,468,48],"39431520","SigmundurM",[470,34,48,231,130,48],"39431580",[472,34,48,231,190,48],"39432859",[474,34,50,404,475,48],"39433222","nashashmi",[477,34,48,478,11,18],"39435302","commenter\u002Fneutral\u002Fidea",[480,34,48,231,481,48],"39433516","smaudet",[483,34,48,231,484,48],"39433565","superkuh",[486,34,48,231,481,48],"39434158",[488,34,48,231,489,48],"39435516","jerbear4328",[491,34,48,231,481,48],"39437397",[493,34,48,231,484,48],"39442242",[495,34,48,231,496,48],"39435454","jamespo",[498,34,48,231,134,48],"39440483",[500,34,44,501,429,48],"39432872","project\u002Fpositive\u002Fexecution",[503,34,18,392,504,48],"39434255","kevincox",[506,34,50,404,300,48],"39438693",[508,34,48,241,509,48],"39434461","dormento",[200,16,50,511,201,48],"project\u002Fneutral\u002Fidea",[513,16,48,241,514,48],"39435608","captn3m0",[516,16,48,241,517,48],"39436962","darylteo",[147,519,18,299,148,48],8,[521,519,48,290,11,18],"39430859",[523,519,48,290,11,18],"39435240",[525,519,50,404,526,48],"39431087","KatrinaKitten",[528,529,18,392,530,48],"39434596",9,"cmgriffing",[532,529,18,392,533,48],"39435474","phinnaeus",[535,529,48,231,536,48],"39435855","hwillis",[538,539,18,540,541,48],"39433577",10,"project\u002Fcritical\u002Fperformance","pier25",[543,539,50,544,545,48],"39433603","project\u002Fneutral\u002Fperformance","mariusseufzer",[547,539,18,540,548,48],"39433733","interstice",[550,539,44,551,552,48],"39433653","project\u002Fpositive\u002Fperformance","trws",[554,539,50,544,555,48],"39433827","flaburgan",[557,539,18,540,558,48],"39433845","klabb3",[560,539,48,231,561,48],"39434322","_heimdall",[563,539,50,544,564,48],"39434671","withinboredom",[566,539,48,231,541,48],"39437742",[568,539,48,569,564,48],"39438767","commenter\u002Fneutral\u002Fperformance",[571,539,44,266,572,48],"39435476","mhd",[574,539,18,540,575,48],"39435487","eddd-ddde",[577,539,50,544,541,48],"39437733",[579,539,48,231,580,48],"39439621","Malix_off",[582,539,44,551,583,48],"39436360","strken",[585,539,50,404,228,48],"39437086",[587,539,18,540,588,48],"39439252","jdthedisciple",[590,539,48,241,296,48],"39445289",[592,539,18,593,580,48],"39439595","project\u002Fcritical\u002Fidea",[595,539,50,544,596,48],"39441379","miroljub",[598,539,48,241,599,48],"39444153","spiffytech",[122,601,50,602,123,48],11,"project\u002Fmixed\u002Fexecution",[193,604,18,593,194,48],12,[606,604,48,241,607,48],"39431664","angra_mainyu",[609,604,48,241,194,48],"39433028",[611,604,48,241,612,48],"39436218","buremba",[614,604,48,241,194,48],"39436664",[616,604,48,241,355,48],"39472129",[140,618,18,299,141,48],13,[620,618,50,621,182,48],"39434052","project\u002Fneutral\u002Fprivacy",[623,618,50,621,624,48],"39434263","morbicer",[114,626,18,299,115,48],14,[628,626,44,501,629,48],"39430182","rnmmrnm",[631,626,50,404,632,48],"39430371","troupo",[634,626,48,290,11,18],"39430707",[636,626,48,231,637,48],"39430947","devmor",[639,626,50,404,640,48],"39433540","ComplexSystems",[642,643,48,241,644,48],"39435489",15,"socketcluster",[646,643,48,241,647,48],"39435677","torgoguys",[649,643,48,231,644,48],"39436847",[651,211,44,266,652,48],"39433696","intrasight",[74,654,50,404,75,48],17,[656,654,50,404,355,48],"39472173",[658,39,50,511,659,48],"39432339","_ix",[661,39,50,511,426,48],"39433051",[663,39,48,241,326,48],"39433187",[98,665,44,266,99,48],19,[667,668,44,266,453,48],"39484624",20,[670,668,50,602,453,48],"39487288",[672,35,50,404,160,48],"39434675",[159,674,50,404,160,48],22,[676,674,18,677,678,48],"39434576","project\u002Fcritical\u002Fprivacy","chatmasta",[118,680,50,602,119,48],23,[682,683,50,256,684,48],"39433811",24,"lelandfe",[686,683,48,231,687,48],"39434162","wild_egg",[689,683,48,690,11,18],"39434895","maker\u002Fneutral\u002Fdesign",[692,683,48,241,693,48],"39479008","arispen",[695,696,44,697,281,48],"39436197",25,"project\u002Fpositive\u002Fdocs",[699,700,50,511,612,48],"39435661",26,[702,700,50,511,355,48],"39472097",[704,705,44,706,707,48],"39432959",27,"project\u002Fpositive\u002Fdesign","d0utone",[709,710,44,266,711,48],"39430030",28,"p4bl0",[713,714,50,511,715,48],"39437497",29,"Xeoncross",[717,718,44,706,719,48],"39473682",30,"mlekoszek",[721,722,50,723,724,48],"39431467",31,"project\u002Fneutral\u002Fdocs","flanbiscuit",[726,722,48,727,728,48],"39431539","commenter\u002Fneutral\u002Fdocs","atahanacar",[730,722,48,231,724,48],"39442742",[151,732,18,593,152,48],32,[734,732,48,231,735,48],"39432195","chuckadams",[737,32,48,241,738,48],"39431855","franky47",[740,741,44,266,742,48],"39431766",34,"atum47",[744,741,48,231,11,18],"39435332",[746,741,44,747,190,48],"39436556","maker\u002Fpositive\u002Fnone",[749,750,48,478,751,48],"39431741",35,"qwertygnu",[105,753,44,501,106,48],36,[755,753,50,404,756,48],"39431964","turnsout",[166,758,50,511,167,48],37,[760,761,50,404,762,48],"39433894",38,"hiccuphippo",[764,761,48,404,11,18],"39435217",[90,766,44,266,91,48],39,[768,766,48,241,281,48],"39435837",[770,771,18,772,773,48],"39430683",40,"project\u002Fcritical\u002Fdocs","hanniabu",[775,771,48,723,11,18],"39430830",[777,771,50,262,773,48],"39431501",[779,771,48,727,756,48],"39431974",[781,782,18,593,783,48],"39430980",41,"moritzwarhier",[785,782,50,511,786,48],"39431627","scwoodal",[788,782,44,697,783,48],"39433752",[790,782,48,262,11,18],"39435615",[792,782,44,747,783,48],"39436296",[794,782,50,511,795,48],"39433070","oneshtein",[797,782,48,231,783,48],"39433725",[799,782,50,511,448,48],"39433229",[181,801,50,256,182,48],42,[207,803,50,511,208,48],43,[805,806,50,511,807,48],"39430021",44,"kickofline",[809,806,50,723,711,48],"39430042",[811,806,50,723,812,48],"39430198","vcg3rd",[814,806,48,815,11,18],"39430287","maker\u002Fneutral\u002Fnone",[817,806,48,241,818,48],"39430318","joshfarrant",[820,806,44,821,257,48],"39430583","project\u002Fpositive\u002Fnone",[823,824,50,253,825,48],"39435603",45,"gardenhedge",[174,827,50,511,175,48],46,[829,827,50,511,830,48],"39435451","mixmastamyk",[133,832,18,299,134,48],47,[834,832,50,404,355,48],"39472368",[836,832,48,837,453,48],"39487688","commenter\u002Fneutral\u002Fexecution",[839,832,48,837,355,48],"39510578",[841,842,44,266,843,48],"39432042",48,"lyxsus",[845,846,48,241,847,48],"39432213",49,"woah",[849,846,48,241,448,48],"39433277",[851,852,48,241,853,48],"39439085",50,"Uptrenda",[855,856,44,266,857,48],"39434062",51,"begueradj",[859,860,50,511,861,48],"39440173",52,"revskill",[863,860,50,511,281,48],"39441619",[865,860,48,404,11,18],"39446536",[867,868,44,706,707,48],"39432954",53,[870,871,48,241,872,48],"39436957",54,"fuzztester",[94,874,44,266,95,48],55,[876,33,50,602,877,48],"39431881","ulrischa",[879,880,48,241,881,48],"39433321",57,"aitternh",[883,884,18,392,885,48],"39438721",58,"pwdisswordfishc",[887,888,48,241,889,48],"39430528",59,"overstay8930",[891,888,48,241,296,48],"39432005",[893,894,50,256,895,48],"39432552",60,"sunshinerag",[897,898,44,706,735,48],"39432150",61,[],[901,906,911,916,920,925],{"id":902,"name":903,"points":904,"category":905},"39377508","Gitlab Meeting Simulator",353,"productivity",{"id":907,"name":908,"points":909,"category":910},"39379339","Aldi Price Map",348,"data",{"id":912,"name":913,"points":914,"category":915},"39402142","Driftmania",276,"games",{"id":917,"name":918,"points":919,"category":910},"39428609","plprql",267,{"id":921,"name":922,"points":923,"category":924},"39425706","RAM Prices",241,"finance_crypto",{"id":926,"name":927,"points":928,"category":20},"39409816","macOS-cross-compiler",215,false,"v2",{"id":932,"name":5,"line":6,"ai":929,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":933,"top":18,"kw":934,"maker":11,"domain":10,"tier":19,"attempts":48,"strip":935,"url":9,"mix":936,"praise":83,"objection":111,"sub":21},39429370,0.1,[24,25,26,27,28],"5353500054330333031232113543453533442553",[32,33,34,35],1793991085006]