<story><title>JavaScript hydration is a workaround, not a solution</title><url>https://thenewstack.io/javascript-hydration-is-a-workaround-not-a-solution/</url></story><parent_chain></parent_chain><comment><author>onion2k</author><text>&lt;i&gt;...get a PageSpeed score of 100&amp;#x2F;100&lt;/i&gt;&lt;p&gt;I&amp;#x27;m slowly coming around to the idea that PageSpeed (or Lighthouse, or Core Web Vitals, or whatever Google has invented this week) is what drives a lot of the complexity in web app dev. People refuse to throw out what they&amp;#x27;ve learned, so every time there&amp;#x27;s a new metric to chase &lt;i&gt;in case you lose SERPS ranking for being slow!&lt;/i&gt; devs heap another layer of complexity on to the Webpack bonfire.&lt;p&gt;Hydration is an example of this. People chased &amp;#x27;first contentful paint&amp;#x27; and &amp;#x27;cumulative layout shift&amp;#x27; timings because that&amp;#x27;s what Google told everyone they needed to optimize for. That meant reducing the amount of upfront work done in JS, pushing some barebones HTML and CSS to the client for those sweet, sweet metrics, and &lt;i&gt;then&lt;/i&gt; running a massive bundle of deferred JS to make it do anything. Google is pulling that rug with Time to Interactive, First Input Delay and (coming soon) Interaction to Next Paint, so now devs are trying to write the same website but have the server strip out the code they wrote (eg Remix.run).&lt;p&gt;Everyone wants a fast website. No one wants a heap of fragile complex build tooling. The answer to the first problem is to stop trying to solve the second problem with MORE TECH. Go back to fundamentals. Just make something that works with with HTML and CSS alone, and enhance it with JS. You don&amp;#x27;t need to be clever about it, especially if the level of interactivity on your website amounts to basically &lt;i&gt;a form.&lt;/i&gt;</text></comment>
<story><title>JavaScript hydration is a workaround, not a solution</title><url>https://thenewstack.io/javascript-hydration-is-a-workaround-not-a-solution/</url></story><parent_chain></parent_chain><comment><author>dmix</author><text>The recent evolution of JS frameworks has been really nice. Performance is basically getting identical to desktop.&lt;p&gt;The three recent developments I&amp;#x27;ve noticed:&lt;p&gt;- &amp;quot;Islands&amp;quot; in Deno &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;fresh.deno.dev&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;fresh.deno.dev&amp;#x2F;&lt;/a&gt; and &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;remix.run&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;remix.run&amp;#x2F;&lt;/a&gt; where only small isolated parts get hydrated, instead of the whole page&lt;p&gt;- Using &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;linear.app&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;linear.app&lt;/a&gt; style data-flows ala Replicache (&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;replicache.dev&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;replicache.dev&amp;#x2F;&lt;/a&gt;) where JSON data is preloaded for all sub-links and stored offline-first like a desktop app, so clicking on anything loads immediately w&amp;#x2F;o waiting for network requests to finish&lt;p&gt;- Now with &amp;#x27;resumability&amp;#x27; where the server-side framework was built with client hydration in mind and delivers the bare minimum event&amp;#x2F;DOM data necessary to make the page interactive (instead of just being a glorified HTML cache load before the usual JS activates)&lt;p&gt;For people not following JS these might all seem like constantly reinventing past lessons, but there is a logical evolution happening here towards desktop-style performance and interactivity on the web. Or pure server-side performance but with full JS interactivity.&lt;p&gt;The next set of frameworks is going to be as big of an evolution the way Angular&amp;#x2F;Backbone-&amp;gt;React&amp;#x2F;Vue was ~8yrs ago. But it&amp;#x27;s going to require new backend server frameworks, not just a new client framework. There&amp;#x27;s probably a big opportunity for the project that can combine this stuff properly.</text></comment>