Jamstack Conf 2021 was last week (October 6-7, 2021). While I wasn't able to participate in this virtual conference live, many of the recorded talks were made available on YouTube. Thank you, Jamstack Conf!
I was never planning on binging all the videos--even though most of them are less than 20 minutes, including a few less-than-3-minutes lightning talks. But I managed to watch several that piqued my interest. Here are some thoughts.
Jamstack no longer means JAMstack
Interestingly, JAMstack became Jamstack in March 2020.2 Certainly, SSG and, more generally, serving pre-rendered pages are still its big focus today.3 However, even the official Jamstack website no longer explicitly refers to the JAM acronym. What's changed?
If I may speculate, this subtle re-branding seems to be motivated by the continuing rise of server-side rendering (SSR)--and more concretely, growing adoption of Next.js and Vercel. Put differently, the move from JAMstack to Jamstack signals an effort to expand beyond SSG and bring SSR under its brand. It's notable that, shortly after, Netlify introduced
next-on-netlify to enabled SSR on its platform, powered by AWS Lambda-style serverless computing. Similarly, but from the opposite direction, Next.js has been adding improved SSG features (e.g.
getStaticPaths(), etc.) in its 9.x releases (Next.js 9 was released in July 2019).
All that being said, I find it particularly interesting that in his keynote speeach, Netlify's Matt Billmann openly and rather strongly expressed his skepticism toward React Server Component:
Server components [...] will probably make it really hard to reason about, like, where does the state live? Again, does the state live in the browser or in the server? What happens as it's moving back and forth? [...] To a certain degree, it can feel a bit like moving back to the old model of the web. [...] The idea of React Server Component sort of feels a bit like rolling back to that architectural model for the web where every user interaction needs a server to tell the UI what to do.
Phrases like "moving back" and "rolling back" insinuate that React Server Component is a sort of regression. I get that provisining full servers is not Netlify's business model, but I still find it curious that he felt the need to make such a forceful remark.
Rise of static-first MPA frameworks?
- Transitional Apps (Have Single-Page Apps Ruined the Web?) by Rich Harris
- The next generation of Jamstack performance is… less JS! by Yang Zhang
It seems to me that these two talks are coming from opposing viewpoints. Rich, the original author of Svelte, seeks to push forward the web development by improving the SPA model. From what I can gather, what he proposes as a solution, Transitional Apps, hinges on streamlining the pre-rendering (at either runtime or build time) of static contents for the initial load followed by hydration for dynamic parts. If that's the case, there is nothing new about the approach, and the result is ultimately a SPA, where, after the initial load, the whole application is hydrated at once and routing/state management is handled in a top-down fashion by the framework that oversees it.
On the other hand, Yang introduces existing and upcoming solutions that are created from a different orientation and directly address the limitations of the standard hydration techniques. These include:
- Marko: streaming server-rendered HTML and (upcoming sub-)component level hydration
- Astro: pre-rendering static HTML and lazily loaded component-level hydration
- React 18 SSR: streaming server-rendered HTML and component-level hydration
- React Server Component (release TBD)
Notably, Astro is the only one here that outputs an app to be deployed to and fully hosted on CDN. The rest requires a running Node.js server to handle requests.
Of course, Jamstack Conf 2021 was jam-packed😏 with a lot more interesting topics. For this blog post, I will just briefly list a few more thought pieces:
- While watching this talk on Vue 3 ecosystem, I realized that Vue is looking more and more like Svelte with its Composition API,
<script setup>, and ref sugar. I heard from elsewhere that the performance gap has significantly narrowed as well.
- I'm getting an impression that RedwoodJS might not be getting the traction it needs for long-term viability. The 1.0 release is planned in early 2022 so maybe it's too early to say anything. Regardless, I enjoyed this super entertaining presentation by Tom Preston-Werner.
- Angular still managed to be part of the conference. I wonder how long it will keep its seat at the table...
- You can find that the main subject of early posts on Netlify blog was various static site generators. For instance, Netlify's CEO highlights in this article (predates the term "JAMstack" and also shared on Netlify blog) how static site generators would be "the next big thing."↩
- That is, based on the first appearance of the updated term on Netlify blog. The first post to call it Jamstack instead of JAMstack was published on March 19, 2020.↩
- An excerpt from the "What is Jamstack?" page: "The core principles of pre-rendering, and decoupling, enable sites and applications to be delivered with greater confidence and resilience than ever before."↩
- But wait, you can use components built with these UI frameworks on Eleventy! See this entertaining talk by Ben Holmes.↩