[{"data":1,"prerenderedAt":480},["ShallowReactive",2],{"project-43936844":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":27,"sentiment":28,"stance_mix":29,"scored_comments":33,"aspects":34,"strip":46,"post_text":47,"what":48,"said":80,"maker_in_thread":216,"shape":228,"grid":232,"attempts":442,"same_week":443,"maker_shows":335,"maker_hidden":472,"reader_version":473,"card":474},"43936844","Hyper","Standards-first React alternative","title","Show HN: Hyper – Standards-first React alternative","https:\u002F\u002Fnuejs.org\u002Fblog\u002Fstandards-first-react-alternative\u002F","nuejs.org","tipiirai",1746799146,2025,70,85,1008,3837,27,"notable","languages","frontend framework","library",[21,24,25,26],"html first","react alternative","web standards","roasted",-0.503,{"positive":30,"neutral":31,"mixed":30,"critical":32},2,11,23,38,{"docs":35,"idea":38,"design":41,"performance":43,"execution":45},{"positive":36,"critical":37},0,7,{"positive":39,"critical":40},1,4,{"positive":36,"critical":42},5,{"positive":36,"critical":44},3,{"positive":36,"critical":36},[44,36,39,39,39,36,36,39,39,36,36,36,36,44,39,36,39,36,44,39,39,39,39,44,39,44,39,39,42,39,36,39,36,44,44,44,39,39,44,39],"Author here. This is an attempt to simplify frontend development:\n\n1. Standards first: User interfaces should be assembled with HTML, styled with CSS, and enhanced with JavaScript.\n\n2. Less abstractions: UI composition should be easy and require as few idioms and abstractions as possible, both on client and server.\n\n3. Design Systems: Design should be a separate subsystem, easily accessible for developers who care about and understand design.\n\n4. Scalability: Complex UIs should retain simplicity as the application grows.\n\nEager to hear your thoughts!",{"problem":49,"audience":55,"pricing":63,"motivation":64,"time_to_build":63,"stack":68,"openness":79,"stage":79,"team_size":79},{"value":50,"source":51,"evidence":52},"Frontend development is complex; the author wants simpler UI composition with fewer abstractions.","maker",[53],{"id":54},"post",{"value":56,"source":57,"evidence":58},"Developers who want simpler frontend development using web standards.","inferred",[59],{"id":60,"by":61,"text":62},"43937570","andrewmcwatters","If I'm already writing against web standards, why would I want to use Hyper? I'd just be hitching my work against something that had nearly no risk, but just enough dependency…",null,{"value":65,"source":51,"evidence":66},"Simplify frontend development by putting standards first and reducing abstractions.",[67],{"id":54},[69,73],{"value":70,"source":57,"evidence":71},"JavaScript",[72],{"id":54},{"value":74,"source":51,"evidence":75},"Rust (WASM example)",[76],{"id":77,"by":11,"text":78},"43937365","When you go pass 100k-200k records on the client side, typically fetched with event sourcing pattern, you must resort to WASM. Here's a RUST based example with 150k records to…","unknown",{"praise":81,"objections":97,"requests":138,"questions":164,"alternatives":184},[82,90],{"value":83,"source":84,"evidence":85},"Appealing terse sample code and the idea of simpler frontend","commenter",[86],{"id":87,"by":88,"text":89},"43937193","vessenes","I love utopian projects like this. And I’ll say there’s lots that is appealing about the sample code, not least its terseness, a factor that is going to really matter in the next…",{"value":91,"source":84,"evidence":92},"Sprae-like approach is appealing",[93],{"id":94,"by":95,"text":96},"43937291","superchris","Really like what I'm seeing so far. It looks a lot like Sprae: https:\u002F\u002Fgithub.com\u002Fdy\u002Fsprae one of my favorite things that no one seems to be paying attention to :) I use it on…",[98,109,120,131],{"value":99,"source":84,"evidence":100},"Performance claims for large datasets are questioned",[101,105],{"id":102,"by":103,"text":104},"43938082","jitl","The React example w\u002F the complicated table API will work fine for zillions of records. Virtualization is not complex math, and there are many libraries that will implement it for…",{"id":106,"by":107,"text":108},"43937663","madeofpalk","> you must resort to WASM Where does the 'must' come from? A react component will trivially handle 200k records with list virtualisation with just javascript",{"value":110,"source":84,"evidence":111},"Name conflicts with existing hyper projects",[112,116],{"id":113,"by":114,"text":115},"43940724","slenk","I wish open-source projects checked to see if other projects share the same name. Especially since there are packages in NPM already about hyper. https:\u002F\u002Fhyper.is\u002F has been…",{"id":117,"by":118,"text":119},"43938955","streptomycin","So many front end frameworks that they can't even all have unique names https:\u002F\u002Fhyperdom.org\u002F",{"value":121,"source":84,"evidence":122},"Stringly-typed template syntax is unappealing",[123,127],{"id":124,"by":125,"text":126},"43937749","ohcmon","Please, not another `strings` programming language `‹tr : for=\"user of users\">`",{"id":128,"by":129,"text":130},"43938027","mpeg","Stringly typed templating language",{"value":132,"source":84,"evidence":133},"Accessibility not mentioned as a goal",[134],{"id":135,"by":136,"text":137},"43942039","apricot13","I'm wondering why accessibility isn't listed as one of your goals when your building a \"standards first\" library? It's not even mentioned as a feature. I do realise your using…",[139,154,158],{"value":140,"source":84,"evidence":141},"Make React comparison examples equal in features",[142,146,150],{"id":143,"by":144,"text":145},"43940360","pier25","Only use 1:1 markup\u002Ffeatures instead of adding those \"modern react\" examples.",{"id":147,"by":148,"text":149},"43937542","rustc","Can you change the React code to also just have one \"card\" class and nothing more? It shouldn't be 4 times longer than Nue.",{"id":151,"by":152,"text":153},"43941210","nicce","Why not just include equal features to comparisons? New framework should also handle the real-world scenarios.",{"value":155,"source":84,"evidence":156},"Address accessibility",[157],{"id":135,"by":136,"text":137},{"value":159,"source":84,"evidence":160},"Rename the project",[161],{"id":162,"by":61,"text":163},"43941893","Yeah, this is a bad name for a new project. It happens. Might want to rename this early, since there's so much web related stuff named Hyper or has hyper in the name already.",[165,171,177],{"value":166,"source":84,"evidence":167},"How does it handle large tables and virtualization?",[168],{"id":169,"by":103,"text":170},"43937070","How do you virtualize rendering of a table with 100,000 items with Hyper?",{"value":172,"source":84,"evidence":173},"How does it compare to React Server Components?",[174],{"id":175,"by":152,"text":176},"43937238","How would you say that this solves the similar problems as React Server Components? E.g. yesterday's discussion - https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=43929054 Basically, how do…",{"value":178,"source":84,"evidence":179},"Why not embed HTML templates in JS?",[180],{"id":181,"by":182,"text":183},"43938053","EGreg","Why not just embed html templates in js at this point? Why js in html?",[185,192,196,202,209],{"value":186,"source":84,"evidence":187},"React",[188],{"id":189,"by":190,"text":191},"43937944","__jonas","> This is an oldschool example using external CSS, which is no longer the \"idiomatic\" way to build React compomnents: Where does this claim come from? classNames and an external…",{"value":193,"source":84,"evidence":194},"Sprae",[195],{"id":94,"by":95,"text":96},{"value":197,"source":84,"evidence":198},"Markojs",[199],{"id":200,"by":129,"text":201},"43938062","You should take a look at markojs, it's also html-first but the syntax is IMHO more elegant as it extends html (especially the alpha of 6.0 syntax)",{"value":203,"source":84,"evidence":204},"Qwik",[205],{"id":206,"by":207,"text":208},"43938008","lern_too_spel","There are dozens of \"better React\" web frameworks, so it is impossible to get any traction with that value proposition because any attempt at building a new ecosystem will be…",{"value":210,"source":84,"evidence":211},"Facet",[212],{"id":213,"by":214,"text":215},"43939042","dleeftink","I've been getting productive with Facet's approach, especially its 'templates as mixins' paradigm [0]. This gets really powerful when you consider how template scripts are…",{"comments":32,"answered":217,"key":218},15,[219,222,225],{"id":220,"text":221},"43937743","This is a prime example of how complexity grows and how simple components remain simple. Just look for the button example: the one button being larger than the entire app.…",{"id":223,"text":224},"43938047","I definitely want the examples to be exact. How to fix exactly?",{"id":226,"text":227},"43941684","Where is the feedback?",{"commenters":229,"max_depth":37,"maker_replies":32,"first_comment_mins":230,"lifespan_hours":231},44,19,141,[233,236,238,241,243,247,248,252,254,257,259,261,263,265,269,272,274,275,279,282,284,286,288,290,293,295,299,301,303,305,309,313,315,319,320,324,326,328,330,332,333,334,337,338,340,342,344,346,347,349,352,354,358,359,363,365,367,371,372,373,375,378,380,384,387,389,391,393,395,398,402,405,408,411,413,416,417,419,420,423,426,428,432,433,437],[234,36,44,235,148,36],"43937525","project\u002Fneutral\u002Fdocs",[220,36,36,237,11,39],"project\u002Fpositive\u002Fidea",[239,36,36,240,144,36],"43937917","commenter\u002Fneutral\u002Fnone",[223,36,36,242,11,39],"maker\u002Fneutral\u002Fdocs",[244,36,39,245,246,36],"43939323","project\u002Fcritical\u002Fdocs","teg4n_",[143,36,44,242,144,36],[249,36,39,250,251,36],"43941072","maker\u002Fcritical\u002Fnone","Timon3",[226,36,36,253,11,39],"maker\u002Fneutral\u002Fnone",[255,36,36,256,251,36],"43943497","commenter\u002Fneutral\u002Fperformance",[258,36,39,245,148,36],"43937941",[260,36,36,235,11,39],"43937993",[262,36,36,240,148,36],"43938066",[264,36,36,235,11,39],"43938416",[266,36,36,267,268,36],"43944882","commenter\u002Fneutral\u002Fdocs","evertedsphere",[270,36,39,245,271,36],"43937981","jonplackett",[273,36,36,242,11,39],"43938076",[151,36,36,267,152,36],[276,36,39,277,278,36],"43939305","project\u002Fcritical\u002Fnone","SebastianKra",[280,36,36,240,281,36],"43947919","90s_dev",[189,39,36,283,190,36],"commenter\u002Fneutral\u002Fdesign",[285,39,36,283,11,39],"43938153",[287,39,36,283,190,36],"43938327",[289,39,36,283,11,39],"43938521",[291,39,36,283,292,36],"43940200","pacifika",[294,39,36,283,11,39],"43941900",[296,39,36,297,298,36],"43942767","other\u002Fneutral\u002Fdesign","qudat",[300,39,36,297,103,36],"43953951",[87,30,44,302,88,36],"project\u002Fmixed\u002Fidea",[304,30,36,237,11,39],"43937254",[306,30,39,307,308,36],"43937606","project\u002Fcritical\u002Fidea","rizky05",[310,30,44,311,312,36],"43938126","project\u002Fneutral\u002Fidea","tubthumper8",[314,30,36,311,11,39],"43942288",[316,44,36,317,318,36],"43938354","other\u002Fneutral\u002Fnone","faefox",[213,44,36,317,214,36],[321,40,39,322,323,36],"43937893","project\u002Fcritical\u002Fdesign","mg",[325,40,36,311,11,39],"43937922",[327,40,36,240,323,36],"43938398",[329,40,36,240,11,39],"43938490",[331,40,36,317,190,36],"43938009",[181,40,44,311,182,36],[60,42,39,307,61,36],[169,335,44,336,103,36],6,"project\u002Fneutral\u002Fperformance",[77,335,36,336,11,39],[106,335,39,339,107,36],"project\u002Fcritical\u002Fperformance",[341,335,36,336,11,39],"43937794",[343,335,39,339,107,36],"43938165",[345,335,36,336,11,39],"43942264",[102,335,39,339,103,36],[348,335,44,336,190,36],"43938484",[350,335,44,336,351,36],"43937471","brylie",[353,335,36,336,11,39],"43937510",[355,335,36,356,357,36],"43937871","other\u002Fneutral\u002Fperformance","CafeRacer",[135,37,39,245,136,36],[360,361,36,317,362,36],"43940015",8,"librasteve",[175,364,44,311,152,36],9,[366,364,36,311,11,39],"43937323",[368,369,39,245,370,36],"43943536",10,"curtisblaine",[113,31,39,277,114,36],[162,31,39,277,61,36],[94,374,42,237,95,36],12,[376,374,36,317,377,36],"43937638","skrebbel",[206,379,39,307,207,36],13,[381,382,39,245,383,36],"43937974",14,"mock-possum",[385,217,36,317,386,36],"43937089","drcongo",[388,217,36,242,11,39],"43937158",[147,217,39,390,148,36],"maker\u002Fcritical\u002Fdocs",[392,217,36,253,11,39],"43937899",[117,394,39,307,118,36],16,[396,394,36,317,397,36],"43949825","chris_pie",[399,400,36,317,401,36],"43937665",17,"internetter",[403,404,44,311,214,36],"43937888",18,[406,404,36,407,11,39],"43938085","maker\u002Fneutral\u002Fidea",[409,404,44,410,214,36],"43939000","project\u002Fneutral\u002Fexecution",[412,404,36,410,11,39],"43941741",[414,404,42,415,214,36],"43943971","project\u002Fpositive\u002Fnone",[124,230,39,322,125,36],[418,230,36,407,11,39],"43937869",[200,230,39,322,129,36],[421,230,39,322,422,36],"43937988","kakuri",[424,230,36,317,425,36],"43938299","silverwind",[427,230,36,317,397,36],"43949838",[429,230,44,430,431,36],"43993848","project\u002Fneutral\u002Fnone","owebmaster",[128,230,39,322,129,36],[434,435,36,317,436,36],"43938077",20,"bandoti",[438,439,44,440,441,36],"43941902",21,"project\u002Fmixed\u002Fdocs","rafram",[],[444,449,454,459,464,468],{"id":445,"name":446,"points":447,"category":448},"43935394","Hyvector",331,"dev_tools",{"id":450,"name":451,"points":452,"category":453},"43928118","qtap",259,"infrastructure",{"id":455,"name":456,"points":457,"category":458},"43975423","HelixDB",237,"data",{"id":460,"name":461,"points":462,"category":463},"43988381","Muscle-Mem",226,"ai",{"id":465,"name":466,"points":467,"category":20},"43936097","Aberdeen",224,{"id":469,"name":470,"points":471,"category":463},"43964201","Airweave",176,false,"v2",{"id":475,"name":5,"line":6,"ai":472,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":476,"top":18,"kw":477,"maker":11,"domain":10,"tier":19,"attempts":36,"strip":478,"url":9,"mix":479,"praise":83,"objection":99,"sub":21},43936844,-0.5,[21,24,25,26],"3011100110000310103111131311510103331131",[30,31,30,32],1793991119764]