Jason Miller
jasonformat.com · Personal blog · on HN since 2017
Jason Miller, a web developer, writes about JavaScript tooling, script loading, JSX, and the islands architecture he named.
What HN saysHN links it as the source of the islands architecture idea, with commenters noting it echoes older practice and explaining partial hydration.
24HN people shared it
10linked it in comments
15stories submitted
164story points
4 years agolast shared
2017people per year2026
Most-shared posts
- 1Islands Architecture – when SSR meet micro front end10 people · 34 points · first shared 2020 · 4 comments on HN
- 2Application Holotypes: A Guide to Architecture Decisions5 people · 7 points · first shared 2019 · discussion on HN
- 3Modern Script Loading3 people · 111 points · first shared 2019 · 17 comments on HN
- 4Rome, a New JavaScript Toolchain2 people · 8 points · first shared 2020 · discussion on HN
- 5WTF Is JSX2 people · 2 points · first shared 2017 · discussion on HN
- 6Element Worklet1 people · 2 points · first shared 2021 · discussion on HN
- 7Enabling modern js on npm1 people · first shared 2021
What HN people wrote when they linked it
toddmorey · 2022-06-13
Frameworks like Next or Nuxt often render each page server-side, shipping HTML to the client, but then also send enough javascript and json data to the client to "hydrate" the page back into fully interactive components. The whole site, then, really acts as one large javascript app once fully loaded.
The islands approach is different: pages are server rendered, but you can easily define islands of interactivity (like, say, an auto-complete search bar) where just enough javascript is sent to make those components interactive—and only when it's needed. You can control at what point exactly each component is made interactive: as the page loads, when the component becomes visible, when the user first interacts, etc. It's a great way to balance performance and rich interactivity. If the user never scrolls down to your photo carousel at the bottom of the page, the javascript is never requested.
If this sounds like what we used to do with say PHP & JQuery, you're not wrong. The difference here is we have the same javascript-based template logic and component model both clientside and serverside.
Some other projects adopting the islands pattern:
https://iles.pages.dev
- https://astro.build
- https://slinkity.dev
More reading:
https://jasonformat.com/islands-architecture/
azangru · 2023-02-05
> Do you realise that you are talking of a really small minority of what these tools are used for?
I absolutely do realise that; but the author seems to ignore them altogether (which is a bit odd, given his normally commendable spirit of inclusion). Contrast this with Jason Miller's (another Googler, author of Preact) guide to different architecture decisions based on different product requirements [0]:
[0] - https://jasonformat.com/application-holotypes/
noveltyaccount · 2022-06-30
I had the same thought. I read the islands overview and was had a little "what's old is new again" chuckle.
https://jasonformat.com/islands-architecture/
tuyiown · 2022-06-28
The post seems to claim that there is no drawbacks others approach with the 0 bytes of js, and link to a blog post [1] that absolutely tells nothing how to properly manage back/front state and rendering consistency between the rendering and the «islands» on the client.
[1] https://jasonformat.com/islands-architecture
Spivak · 2022-06-13
It’s actually not gibberish.
* Island refers to this https://jasonformat.com/islands-architecture/
* Island based hydration is a form of partial hydration where the boundary is the component islands.
kaycebasques · 2022-05-21
Discussions about website architecture become a lot more productive when you use Jason Miller's holotypes idea [1] as your starting point. "Holotypes" is kinda just a fancy word for the common top-level uses of the web. E-commerce, search, media player, etc. With that foundation it becomes obvious that SPAs make a lot of sense for some holotypes and a lot less sense for others. We waste time when we talk as if MPA or SPA is appropriate for all website architectures because neither are and never will be. The uses of the web are just too broad at this point.
[1] https://jasonformat.com/application-holotypes/
acemarke · 2021-11-11
There's many reasons to have a JS compilation step:
- Still targeting legacy browsers like IE11
- Using React / JSX syntax
- Using TypeScript
- Using other brand-new JS syntax that hasn't trickled out to wider support yet
- Using custom JS transforms for libraries like `styled-components` (see this Next.js discussion thread for examples of the many different non-standard Babel transformations that people are using: https://github.com/vercel/next.js/discussions/30174 )
That said, the ideal target language version _is_ getting better. Jason Miller ( creator of Preact) has done a lot of research on both browser support for ES2017, as well as tooling to reverse-compile ES5-targeted published libraries upwards to ES2017 syntax again for improved bundle size:
- https://jasonformat.com/enabling-modern-js-on-npm/
- https://web.dev/publish-modern-javascript/
qbasic_forever · 2021-06-08
Check out the islands architecture info, or search around for info on partial hydration. It's similar to how things worked in the jQuery days--you serve up plain old HTML and have a JS function that runs on page load to attach all the event handlers (onclick, etc.) to your dynamic elements (i.e. 'hydrating' the static HTML into dynamic HTML + JS components). The thing with frameworks like Astro is that they try to automate and manage all of that hydration for you, which is nice because for complex sites with lots of different components it becomes a huge, error prone chore to manually wire things up.
edit: Island architecture background info: https://jasonformat.com/islands-architecture/
haukur · 2017-09-08
Another good resource to learn about JSX (by the author of Preact): https://jasonformat.com/wtf-is-jsx/
lucacasonato · 2022-06-13