[{"data":1,"prerenderedAt":801},["ShallowReactive",2],{"project-16052558":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":35,"aspects":36,"strip":48,"post_text":50,"what":51,"said":101,"maker_in_thread":206,"shape":219,"grid":224,"attempts":762,"same_week":763,"maker_shows":41,"maker_hidden":793,"reader_version":794,"card":795},"16052558","Sapper.js","towards a better web app framework","title","Show HN: Sapper.js – towards a better web app framework","https:\u002F\u002Fsvelte.technology\u002Fblog\u002Fsapper-towards-the-ideal-web-app-framework","svelte.technology","rich_harris",1514908628,2018,410,209,40,2155,2,"legend","languages","web application framework","library",[24,25,26,27,28],"web framework","server-side rendering","svelte","code splitting","javascript framework","mixed",-0.308,{"positive":32,"neutral":33,"mixed":34,"critical":16},10,36,4,90,{"idea":37,"execution":39,"performance":42,"design":44,"docs":46},{"positive":18,"critical":38},21,{"positive":40,"critical":41},1,3,{"positive":34,"critical":43},9,{"positive":40,"critical":45},7,{"positive":47,"critical":47},0,[40,41,18,40,40,40,40,47,40,47,47,41,47,40,18,41,41,41,41,41,18,40,18,47,49,34,40,40,41,41,18,18,40,18,40,40,18,40,41,47],5,null,{"problem":52,"audience":62,"pricing":50,"motivation":68,"time_to_build":50,"stack":75,"openness":98,"stage":99,"team_size":100},{"value":53,"source":54,"evidence":55},"Building fast, server-rendered web apps with small client payloads without a virtual DOM","maker",[56,59],{"id":57,"by":11,"text":58},"16053571","Server-side rendering means you get a quick first load. Client-side rendering means subsequent navigations are quick, because there's less data to transfer (maybe a little bit of…",{"id":60,"by":11,"text":61},"16060877","Svelte is the premise behind Sapper. If you want to use React, use Next; if you want to use Vue, use Nuxt; if you want that 7kb Hello World (instead of Next's 204kb or Nuxt's…",{"value":63,"source":54,"evidence":64},"Beginner-to-intermediate JavaScript developers, especially newsroom and casual programmers",[65],{"id":66,"by":11,"text":67},"16060810","Learning a new framework is intimidating enough without potentially having to learn a new language on top of it. I work in the news business, among people who in many cases…",{"value":69,"source":54,"evidence":70},"Make a fast, lean framework that compiles templates instead of using a virtual DOM",[71,74],{"id":72,"by":11,"text":73},"16053076","You mean this Sierpinski demo? http:\u002F\u002Fsvelte-sierpinski.surge.sh\u002F Ok, I'll level with you — that's not actually doing the same thing as the Fiber version. But that's it's…",{"id":60,"by":11,"text":61},[76,80,86,92],{"value":77,"source":54,"evidence":78},"Svelte",[79],{"id":60,"by":11,"text":61},{"value":81,"source":54,"evidence":82},"webpack",[83],{"id":84,"by":11,"text":85},"16053821","It uses code-splitting, dynamic imports and hot module reloading, which are all well supported in webpack. We definitely plan to support Rollup as well, once it has those…",{"value":87,"source":54,"evidence":88},"Express",[89],{"id":90,"by":11,"text":91},"16053138","It's just an Express app, so you can use whatever datastore you like — create a `routes\u002Fapi\u002Fsome-endpoint\u002F[thing].js` file and export a request handler that interacts with your…",{"value":93,"source":54,"evidence":94},"TypeScript (Svelte itself is written in it)",[95],{"id":96,"by":11,"text":97},"16053173","Thank you. Svelte itself is written in TypeScript so I'm a believer. I'd like to get first-class support for TypeScript in components at some point. Adding .ts support for the…","open_source","beta","unknown",{"praise":102,"objections":124,"requests":152,"questions":171,"alternatives":186},[103,115],{"value":104,"source":105,"evidence":106},"Svelte's compile-to-JS approach and small payloads look promising","commenter",[107,111],{"id":108,"by":109,"text":110},"16053153","skrebbel","I've been following Rich's work on Rollup, Svelte and now Sapper with interest and great awe. I truly believe he's onto something. At the same time, if I were designing something…",{"id":112,"by":113,"text":114},"16054574","pwaai","How many of you actually built a React\u002FRedux stack SPA that actually came anywhere near what Sapper offers? The file size problem is underrated. Not everybody walks around with…",{"value":116,"source":54,"evidence":117},"Fast navigation compared with the HN clone",[118,121],{"id":119,"by":11,"text":120},"16053736","Ultimately, the proof is in the pudding. Which is faster, when you start navigating around? * https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=16052558 *…",{"id":122,"by":11,"text":123},"16054018","What about when you start clicking the links in the nav, or opening other stories and profile pages? As far as I can see, the Sapper version blows the original out of the water.",[125,136,143],{"value":126,"source":105,"evidence":127},"Universal (shared server and client) code is a flawed premise",[128,132],{"id":129,"by":130,"text":131},"16052878","Touche","I think this premise is wrong: > 2. As a corollary, your app's codebase should be universal — write once for server and client This is a mistake a lot of developers make. The…",{"id":133,"by":134,"text":135},"16057071","cryptica","Isomorphic frameworks are a bad idea. I'm convinced that any attempt at making a single general-purpose web application framework will fail. I've seen it happen too many times…",{"value":137,"source":105,"evidence":138},"Unclear what problem it solves versus existing frameworks",[139],{"id":140,"by":141,"text":142},"16054333","aspiringuzer","I've used many web frameworks over the years and I really wanted to like this Sapper technology, but for the life of me I just don't understand what problem it's trying to solve.…",{"value":144,"source":54,"evidence":145},"Pre-1.0 software with rough edges",[146,149],{"id":147,"by":11,"text":148},"16056790","> You find that you will be at the top of the page as it re-renders. You lose the place you were scrolled to. What browser is that happening in? In Chrome it works correctly —…",{"id":150,"by":11,"text":151},"16057253","It's configurable. Add rel=prefetch to an \u003Ca> element and you'll get that behaviour; don't, and you won't. Since the links are small, mousing over them tends to suggest you…",[153,157,164],{"value":154,"source":105,"evidence":155},"TypeScript support in components",[156],{"id":108,"by":109,"text":110},{"value":158,"source":105,"evidence":159},"Rollup support for bundling",[160],{"id":161,"by":162,"text":163},"16053760","tobr","Curious: why use Webpack rather than your own and IMHO much superior bundler, Rollup? I’m excited to try this more but I have mixed feelings about Svelte. The concept is…",{"value":165,"source":105,"evidence":166},"Streaming SSR and prefetching of dynamic data",[167],{"id":168,"by":169,"text":170},"16053495","deno","Some bullet points are missing from the “perfect framework” list: 1. SSR must support streaming 2. SSR must work in a service worker (so in fact you have 3 targets: server,…",[172,179],{"value":173,"source":105,"evidence":174},"Will it have long-term community support and hiring pool",[175],{"id":176,"by":177,"text":178},"16052679","Tankenstein","As always, my main concern with this is traction. Will this be well supported, with a good community, 4 years down the line? I know React will, just because of the massive…",{"value":180,"source":105,"evidence":181},"Does SSR still matter for SEO",[182],{"id":183,"by":184,"text":185},"16053328","kiernanmcgowan","Question: > 1. It should do server-side rendering, for fast initial loads and no caveats around SEO Is server-side rendering still an issue for SEO? Don't major search engines…",[187,195,199],{"value":188,"source":105,"evidence":189},"React with Next.js",[190,194],{"id":191,"by":192,"text":193},"16059057","jitlerr","Is there any way to use Sapper.js with React, Vue or anything framework? I find the premise behind Sapper interesting, but I just don't see the appeal of Svelte, where they are…",{"id":60,"by":11,"text":61},{"value":196,"source":54,"evidence":197},"Vue with Nuxt",[198],{"id":60,"by":11,"text":61},{"value":200,"source":105,"evidence":201},"Marko",[202],{"id":203,"by":204,"text":205},"16057355","fineline","Hi Rich, I notice you mention Marko. That was my first thought when checking out Svelte today - Marko uses somewhat similar approach, and thus brings somewhat similar benefits.…",{"comments":207,"answered":208,"key":209},25,16,[210,213,216],{"id":211,"text":212},"16052948","In practice, this isn't an issue. Component lifecycle hooks and methods (which is where anything involving raw DOM access or animation takes place) never run on the server — the…",{"id":214,"text":215},"16052995","The server is only involved when you first hit the page. After that, the client takes care of all the rendering. There is no discrepancy!",{"id":217,"text":218},"16053106","If you don't mind reloading the entire page on every single navigation, and don't have any dynamic data or interactivity, this is indeed a very solid approach.",{"commenters":220,"max_depth":221,"maker_replies":207,"first_comment_mins":222,"lifespan_hours":223},107,11,13,126,[225,227,229,231,232,235,238,241,244,248,251,254,257,260,263,267,270,272,275,277,280,282,284,287,290,292,294,296,299,302,305,306,310,312,315,318,321,323,325,327,330,333,335,337,340,343,345,347,350,352,355,357,359,361,363,366,369,371,373,377,380,383,385,388,391,393,395,397,399,401,404,407,409,411,412,414,415,418,420,422,425,428,431,434,436,438,441,443,446,448,451,455,457,460,462,464,467,470,473,475,478,480,482,484,486,488,491,494,496,499,501,503,505,507,509,511,513,516,519,522,525,527,530,533,535,537,540,543,545,546,550,553,555,559,562,564,568,571,572,574,577,581,584,585,586,588,591,594,596,597,599,602,604,606,610,613,616,618,621,623,625,627,631,634,637,639,642,645,649,651,652,653,657,661,664,668,672,675,678,680,683,685,689,691,695,700,703,706,711,713,717,719,721,723,727,730,733,735,738,740,742,744,747,749,751,754,756,758,760],[129,47,40,226,130,47],"project\u002Fcritical\u002Fidea",[211,47,47,228,11,40],"commenter\u002Fneutral\u002Fnone",[230,47,40,226,130,47],"16052966",[214,47,47,228,11,40],[233,47,40,234,130,47],"16053060","project\u002Fcritical\u002Fexecution",[236,47,47,228,237,47],"16053250","scottmf",[239,47,47,228,240,47],"16053800","abritinthebay",[242,47,47,228,243,47],"16054762","ralmidani",[245,47,41,246,247,47],"16058025","project\u002Fneutral\u002Fidea","natecavanaugh",[249,47,41,246,250,47],"16067956","Can_Not",[252,47,40,226,253,47],"16059569","tnolet",[255,47,41,246,256,47],"16053014","mike-cardwell",[258,47,47,228,259,47],"16053354","dbbk",[261,47,41,246,262,47],"16053288","dfabulich",[264,47,47,265,266,47],"16054938","other\u002Fneutral\u002Fnone","tootie",[268,47,40,226,269,47],"16053411","tboyd47",[271,47,47,265,240,47],"16053807",[273,47,49,274,259,47],"16054257","project\u002Fpositive\u002Fidea",[276,47,40,226,269,47],"16054408",[278,47,40,226,279,47],"16054863","weego",[281,47,47,228,250,47],"16067934",[283,47,40,226,269,47],"16071057",[285,47,40,226,286,47],"16053876","OJFord",[288,47,41,246,289,47],"16054758","alkonaut",[291,47,47,228,259,47],"16054886",[293,47,47,228,289,47],"16054956",[295,47,47,228,259,47],"16055455",[297,47,40,226,298,47],"16057668","austincheney",[300,47,47,265,301,47],"16070455","nh2",[303,40,40,226,304,47],"16053029","DougWebb",[217,40,47,226,11,40],[307,40,40,308,309,47],"16053287","project\u002Fcritical\u002Fperformance","RobertRoberts",[311,40,47,265,237,47],"16053358",[313,40,47,265,314,47],"16053434","megaman22",[316,40,47,265,317,47],"16053558","goatlover",[319,40,47,265,320,47],"16053968","Danihan",[322,40,47,265,286,47],"16053997",[324,40,47,265,314,47],"16054896",[326,40,47,265,286,47],"16059614",[328,40,47,265,329,47],"16057959","cookiecaper",[331,40,47,265,332,47],"16053454","rimliu",[334,40,47,228,237,47],"16053701",[336,40,47,265,309,47],"16053758",[338,40,47,265,339,47],"16055495","boubiyeah",[341,40,40,234,342,47],"16054665","Nemi",[147,40,47,344,11,40],"maker\u002Fneutral\u002Fexecution",[346,40,40,234,342,47],"16092962",[348,40,47,265,349,47],"16053768","nine_k",[351,40,47,265,317,47],"16054778",[353,40,47,265,354,47],"16053919","GordonS",[356,40,47,265,309,47],"16053587",[358,40,47,265,237,47],"16053984",[360,40,47,265,309,47],"16054366",[362,40,47,228,237,47],"16056732",[364,40,47,265,365,47],"16057570","unclebucknasty",[367,40,47,228,368,47],"16058208","Silhouette",[370,40,47,228,314,47],"16058233",[372,40,47,228,368,47],"16058321",[374,40,47,375,376,47],"16054022","other\u002Fneutral\u002Fperformance","dmitriid",[378,40,41,246,379,47],"16054413","antonkm",[381,40,47,228,382,47],"16053702","bdcravens",[384,40,47,228,279,47],"16054961",[386,40,47,228,387,47],"16055303","aaron-lebo",[389,40,47,390,368,47],"16058179","commenter\u002Fneutral\u002Fidea",[392,40,47,228,387,47],"16058322",[394,40,47,228,368,47],"16058338",[396,40,47,228,387,47],"16058388",[398,40,47,228,368,47],"16058449",[400,40,47,228,237,47],"16056915",[402,40,47,265,403,47],"16056963","mattgreenrocks",[405,40,47,228,406,47],"16057254","zsck",[57,40,47,408,11,40],"project\u002Fpositive\u002Fperformance",[410,40,40,308,309,47],"16053691",[119,40,47,408,11,40],[413,40,49,408,130,47],"16053857",[122,40,47,408,11,40],[416,40,40,308,417,47],"16055405","lassejansen",[419,40,40,308,304,47],"16056936",[150,40,47,421,11,40],"project\u002Fneutral\u002Fperformance",[423,40,49,408,424,47],"16053938","chaoticsamuel",[426,40,40,308,427,47],"16054074","dgreensp",[429,40,47,430,11,40],"16054186","maker\u002Fneutral\u002Fnone",[432,40,47,375,433,47],"16054483","shoover",[435,40,40,308,339,47],"16055444",[437,40,49,408,309,47],"16054090",[439,40,41,440,309,47],"16054342","project\u002Fmixed\u002Fperformance",[442,40,47,430,11,40],"16055234",[444,40,41,421,445,47],"16054759","dsego",[447,40,47,265,339,47],"16055427",[449,40,47,228,450,47],"16053697","al2o3cr",[452,40,47,453,454,47],"16053725","commenter\u002Fneutral\u002Fperformance","timr",[456,40,47,453,354,47],"16053881",[458,40,47,453,459,47],"16055499","noxecanexx",[461,40,41,421,317,47],"16053742",[463,40,40,308,445,47],"16054810",[465,40,47,265,466,47],"16060278","vitro",[468,40,47,375,469,47],"16057735","taneq",[471,40,49,408,472,47],"16059992","purerandomness",[474,40,47,265,365,47],"16057522",[476,40,47,265,477,47],"16058042","felipeccastro",[479,40,47,265,365,47],"16058715",[168,18,41,481,169,47],"project\u002Fneutral\u002Fnone",[483,18,47,430,11,40],"16053622",[485,18,41,421,169,47],"16054806",[176,41,41,487,177,47],"project\u002Fmixed\u002Fnone",[489,41,49,274,490,47],"16052746","gedy",[492,41,40,226,493,47],"16052900","mlsarecmg",[495,41,47,228,490,47],"16052943",[497,41,40,498,376,47],"16053707","project\u002Fcritical\u002Fdesign",[500,41,47,228,490,47],"16053960",[502,41,40,498,493,47],"16054479",[504,41,47,228,130,47],"16054633",[506,41,47,228,493,47],"16054983",[508,41,47,228,376,47],"16059061",[72,41,47,510,11,40],"maker\u002Fneutral\u002Fperformance",[512,41,40,308,493,47],"16054443",[514,41,41,421,515,47],"16061286","vanderZwan",[517,41,41,430,518,47],"16057179","jondubois",[520,41,47,265,521,47],"16052791","whome2",[523,41,47,265,524,47],"16052817","hluska",[526,41,47,228,309,47],"16053339",[528,41,47,265,529,47],"16053254","azangru",[531,41,47,265,532,47],"16053629","digitaltrees",[534,41,47,265,532,47],"16053609",[536,41,47,265,177,47],"16059743",[538,41,47,265,539,47],"16053042","nailer",[541,41,47,265,542,47],"16054205","kelvin0",[108,34,49,544,109,47],"maker\u002Fpositive\u002Fexecution",[96,34,47,430,11,40],[547,34,41,548,549,47],"16057102","project\u002Fneutral\u002Fdocs","nikcub",[551,34,41,246,552,47],"16058305","stephen",[66,34,47,554,11,40],"maker\u002Fneutral\u002Fidea",[556,34,49,557,558,47],"16055494","maker\u002Fpositive\u002Fnone","alexhayes",[560,49,41,246,561,47],"16053178","bryanlarsen",[563,49,47,265,11,40],"16053244",[565,566,40,226,567,47],"16056442",6,"_greim_",[569,566,47,265,570,47],"16057560","lfischer",[133,45,40,226,134,47],[573,45,41,246,570,47],"16057594",[575,45,47,228,576,47],"16058031","arxpoetica",[578,579,47,265,580,47],"16052896",8,"auggierose",[582,579,47,265,583,47],"16053145","zimablue",[161,43,41,481,162,47],[84,43,47,430,11,40],[587,43,40,498,162,47],"16054266",[589,43,47,590,11,40],"16054351","maker\u002Fneutral\u002Fdesign",[592,43,40,498,593,47],"16055475","atoko",[595,43,47,590,11,40],"16055678",[203,43,41,481,204,47],[598,43,47,481,11,40],"16057585",[600,43,49,601,204,47],"16065148","project\u002Fpositive\u002Fnone",[603,43,40,498,162,47],"16056010",[605,43,47,590,11,40],"16056158",[607,43,41,608,609,47],"16056624","project\u002Fmixed\u002Fdesign","contomcon",[611,43,49,612,576,47],"16055357","project\u002Fpositive\u002Fdesign",[614,43,41,615,445,47],"16055374","project\u002Fneutral\u002Fdesign",[617,32,40,498,376,47],"16053685",[619,32,41,615,620,47],"16054199","purple-again",[622,32,47,228,259,47],"16054313",[624,221,41,246,262,47],"16053423",[626,221,47,510,11,40],"16053652",[628,629,40,226,630,47],"16053811",12,"AiDirex",[632,629,40,633,141,47],"16054775","maker\u002Fcritical\u002Fidea",[635,222,41,481,636,47],"16053139","antris",[183,638,41,481,184,47],14,[640,638,41,481,641,47],"16053375","LeonM",[643,638,41,481,644,47],"16053793","ravenstine",[646,647,40,308,648,47],"16057531",15,"Ros2",[650,647,47,510,11,40],"16057610",[191,208,41,615,192,47],[60,208,47,554,11,40],[654,655,40,498,656,47],"16058968",17,"jchook",[658,659,40,226,660,47],"16053399",18,"ashelmire",[662,659,47,228,663,47],"16055692","jazoom",[665,666,41,421,667,47],"16056034",19,"christophilus",[669,670,41,481,671,47],"16056852",20,"antihero",[673,38,41,246,674,47],"16053243","breatheoften",[676,38,47,228,677,47],"16053903","ricardobeat",[140,679,40,226,141,47],22,[681,679,47,265,682,47],"16054791","innocentoldguy",[684,679,41,246,576,47],"16055376",[686,687,47,228,688,47],"16055412",23,"Rauchg",[690,687,47,590,11,40],"16055965",[692,687,47,693,694,47],"16059017","commenter\u002Fneutral\u002Fdesign","tribby",[696,697,47,698,699,47],"16053825",24,"commenter\u002Fcritical\u002Fnone","young_greedo",[701,697,47,265,702,47],"16057661","thomasfromcdnjs",[704,207,40,226,705,47],"16059959","techaddict009",[707,708,41,709,710,47],"16055353",26,"project\u002Fneutral\u002Fexecution","nwmcsween",[712,708,41,709,576,47],"16057246",[714,715,41,481,716,47],"16052961",27,"chaostheory",[90,715,47,718,11,40],"maker\u002Fneutral\u002Fdocs",[720,715,40,226,259,47],"16053372",[722,715,41,246,716,47],"16054999",[724,725,40,226,726,47],"16053011",28,"QGmLe",[728,725,47,228,729,47],"16053050","meathook",[731,725,40,226,732,47],"16053146","mwcampbell",[734,725,41,246,677,47],"16053913",[736,725,47,228,737,47],"16053195","wcarron",[739,725,47,265,445,47],"16054905",[741,725,47,265,682,47],"16054958",[743,725,47,228,726,47],"16062070",[745,725,41,246,746,47],"16058295","brett40324",[112,748,41,440,113,47],29,[750,748,47,375,493,47],"16054913",[752,748,47,228,753,47],"16057431","leeoniya",[755,748,47,375,339,47],"16059097",[757,748,47,453,493,47],"16059748",[759,748,47,228,354,47],"16059777",[761,748,47,265,493,47],"16060617",[],[764,769,774,779,784,789],{"id":765,"name":766,"points":767,"category":768},"16049026","mind-circus.org",341,"games",{"id":770,"name":771,"points":772,"category":773},"16064770","HNCute",208,"productivity",{"id":775,"name":776,"points":777,"category":778},"16021874","Themer",135,"dev_tools",{"id":780,"name":781,"points":782,"category":783},"16042888","Roulette Pizza",127,"consumer_social",{"id":785,"name":786,"points":787,"category":788},"16052214","images-to-osm",94,"ai",{"id":790,"name":791,"points":792,"category":768},"16032889","Gameboy",82,false,"v2",{"id":796,"name":5,"line":6,"ai":793,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":797,"top":18,"kw":798,"maker":11,"domain":10,"tier":19,"attempts":47,"strip":799,"url":9,"mix":800,"praise":104,"objection":126,"sub":21},16052558,-0.31,[24,25,26,27,28],"1321111010030123333321205411332212112130",[32,33,34,16],1794036562130]