SlideShare a Scribd company logo
1 of 61
Download to read offline
JavaScript frameworks of tomorrow
Juho Vepsäläinen
FooConf Helsinki – 01.02.2023
What to expect
1. Current trends
2. Islands architecture
3. Resumability
4. JSON as the building block
5. Conclusion
1
Current trends
Past, present, future
Source: Miško Hevery: WebApps at Scale
2
Client, server, developer
3
Content delivery networks [5]
4
Edge computing [6]
5
Transitional web applications (TWAs) (2021) [3]
• In October 2021, Rich Harris proposed the idea of TWAs [3]
6
Transitional web applications (TWAs) (2021) [3]
• In October 2021, Rich Harris proposed the idea of TWAs [3]
• TWA = pickBestIdeas(traditionalWeb, SPA)
6
Transitional web applications (TWAs) (2021) [3]
• In October 2021, Rich Harris proposed the idea of TWAs [3]
• TWA = pickBestIdeas(traditionalWeb, SPA)
• TWAs utilize SSR for fast initial loading times while not relying
on JavaScript
6
Transitional web applications (TWAs) (2021) [3]
• In October 2021, Rich Harris proposed the idea of TWAs [3]
• TWA = pickBestIdeas(traditionalWeb, SPA)
• TWAs utilize SSR for fast initial loading times while not relying
on JavaScript
• TWAs provide consistent experience and accessibility as a
built-in feature
6
Progressive enhancement in a nutshell (2008) [2]
7
Disappearing frameworks (2021) [1]
• Disappearing frameworks come with almost zero cost and vanish
from the application [1]
8
Disappearing frameworks (2021) [1]
• Disappearing frameworks come with almost zero cost and vanish
from the application [1]
• Strong contrast to the current frameworks that load upfront and
rely on expensive hydration for SSR
8
Disappearing frameworks (2021) [1]
• Disappearing frameworks come with almost zero cost and vanish
from the application [1]
• Strong contrast to the current frameworks that load upfront and
rely on expensive hydration for SSR
• Changing the viewpoint allows new technical solutions to
emerge
8
Islands architecture
Islands architecture (2019) [4]
9
Islands oriented solutions
• 11ty/is-land - a new performance-focused way to add interactive
client-side components to your web site
10
Islands oriented solutions
• 11ty/is-land - a new performance-focused way to add interactive
client-side components to your web site
• îles - Powered by Vite, supports many frameworks (Vue, React,
Preact, etc.) for islands
10
Islands oriented solutions
• 11ty/is-land - a new performance-focused way to add interactive
client-side components to your web site
• îles - Powered by Vite, supports many frameworks (Vue, React,
Preact, etc.) for islands
• Capri - Powered by Vite, live CMS integration, early release
10
Islands oriented solutions
• 11ty/is-land - a new performance-focused way to add interactive
client-side components to your web site
• îles - Powered by Vite, supports many frameworks (Vue, React,
Preact, etc.) for islands
• Capri - Powered by Vite, live CMS integration, early release
• Astro - Lots of integrations, provides a model for mixing
interactivity with content
10
Demo time (Astro)
10
Resumability
Resumability in Qwik
• Qwik was initiated by Miško Hevery (Angular.js)
11
Resumability in Qwik
• Qwik was initiated by Miško Hevery (Angular.js)
• Qwik is a new take on how to build web applications
11
Resumability in Qwik
• Qwik was initiated by Miško Hevery (Angular.js)
• Qwik is a new take on how to build web applications
• The big idea is deferring work through resumability and the
avoidance of hydration
11
Resumability in Qwik
• Qwik was initiated by Miško Hevery (Angular.js)
• Qwik is a new take on how to build web applications
• The big idea is deferring work through resumability and the
avoidance of hydration
• In other words, Qwik serializes the application/framework state
into HTML when rendering the application
11
Resumability in Qwik
• Qwik was initiated by Miško Hevery (Angular.js)
• Qwik is a new take on how to build web applications
• The big idea is deferring work through resumability and the
avoidance of hydration
• In other words, Qwik serializes the application/framework state
into HTML when rendering the application
• Qwik leverages JSX but implements state via reactive bindings
and avoids component re-rendering
11
Demo time (Qwik)
11
JSON as the building block
Why to develop yet another SSG/SSR solution?
• Earlier solution of mine (Antwar) started showing its age
12
Why to develop yet another SSG/SSR solution?
• Earlier solution of mine (Antwar) started showing its age
• I also wanted to learn to use Deno
12
Why to develop yet another SSG/SSR solution?
• Earlier solution of mine (Antwar) started showing its age
• I also wanted to learn to use Deno
• As a result, I started playing around with ideas and came up with
Gustwind
12
Why to develop yet another SSG/SSR solution?
• Earlier solution of mine (Antwar) started showing its age
• I also wanted to learn to use Deno
• As a result, I started playing around with ideas and came up with
Gustwind
• Things went out of hand and now I am doing a PhD about the
topic
12
Gustwind - Design principles
• Built entirely around JSON definitions and distilled to a bare
minimum
13
Gustwind - Design principles
• Built entirely around JSON definitions and distilled to a bare
minimum
• Went with Twind for styling, Sidewind for state, and built
Breezewind for templating
13
Gustwind - Design principles
• Built entirely around JSON definitions and distilled to a bare
minimum
• Went with Twind for styling, Sidewind for state, and built
Breezewind for templating
• Reasonably fast and parallelized through Web Workers
13
Gustwind - Design principles
• Built entirely around JSON definitions and distilled to a bare
minimum
• Went with Twind for styling, Sidewind for state, and built
Breezewind for templating
• Reasonably fast and parallelized through Web Workers
• Comes with a flexible plugin architecture so any part can be
replaced if and when needed making the solution ideal for
research purposes
13
Twind - Styling
• Twind is an implementation of Tailwind 3 syntax
14
Twind - Styling
• Twind is an implementation of Tailwind 3 syntax
• Avoids PostCSS dependency!
14
Twind - Styling
• Twind is an implementation of Tailwind 3 syntax
• Avoids PostCSS dependency!
• Constructs extracted CSS through aggregation, not elimination
14
Twind - Styling
• Twind is an implementation of Tailwind 3 syntax
• Avoids PostCSS dependency!
• Constructs extracted CSS through aggregation, not elimination
• Supports both style extraction and runtime usage
14
Sidewind - State
• Sidewind is my take on state management
15
Sidewind - State
• Sidewind is my take on state management
• The idea was to do the same for state as what Tailwind did for
styling with a React inspired API
15
Sidewind - State
• Sidewind is my take on state management
• The idea was to do the same for state as what Tailwind did for
styling with a React inspired API
• In other words, it allows you to maintain state within HTML
syntax itself
15
Sidewind - State
• Sidewind is my take on state management
• The idea was to do the same for state as what Tailwind did for
styling with a React inspired API
• In other words, it allows you to maintain state within HTML
syntax itself
• Internally it is a light wrapper to MutationObserver making it
lean
15
Sidewind - State
• Sidewind is my take on state management
• The idea was to do the same for state as what Tailwind did for
styling with a React inspired API
• In other words, it allows you to maintain state within HTML
syntax itself
• Internally it is a light wrapper to MutationObserver making it
lean
• There are also special features related to hydration and
recursive state (think tree structures)
15
Breezewind - Templating
• Breezewind forms the core of the component system
16
Breezewind - Templating
• Breezewind forms the core of the component system
• It has been heavily inspired by the semantics of React (context,
props, etc.)
16
Breezewind - Templating
• Breezewind forms the core of the component system
• It has been heavily inspired by the semantics of React (context,
props, etc.)
• Think of Breezewind as an extensible JSON to XML transformer
16
Breezewind - Templating
• Breezewind forms the core of the component system
• It has been heavily inspired by the semantics of React (context,
props, etc.)
• Think of Breezewind as an extensible JSON to XML transformer
• Designed to run on top of Cloudflare Workers (no eval)
16
Demo time (Gustwind)
16
Conclusion
What to expect in the coming years
• Exploration of shipping less JavaScript to the client and being
smarter about it (start from zero and load smart)
17
What to expect in the coming years
• Exploration of shipping less JavaScript to the client and being
smarter about it (start from zero and load smart)
• More edge-oriented solutions (how much can we push to the
edge?)
17
What to expect in the coming years
• Exploration of shipping less JavaScript to the client and being
smarter about it (start from zero and load smart)
• More edge-oriented solutions (how much can we push to the
edge?)
• Frontend meets backend in unexpected ways (expect more SSGs
to go hybrid)
17
What to expect in the coming years
• Exploration of shipping less JavaScript to the client and being
smarter about it (start from zero and load smart)
• More edge-oriented solutions (how much can we push to the
edge?)
• Frontend meets backend in unexpected ways (expect more SSGs
to go hybrid)
• SSGs with more user and designer-focused features (think
editing UIs on the web)
17
What to expect in the coming years
• Exploration of shipping less JavaScript to the client and being
smarter about it (start from zero and load smart)
• More edge-oriented solutions (how much can we push to the
edge?)
• Frontend meets backend in unexpected ways (expect more SSGs
to go hybrid)
• SSGs with more user and designer-focused features (think
editing UIs on the web)
• AI and machine learning-driven tools (variant generation etc.)
17
Thank you!
Questions please
17
References i
Carniato, R.
Understanding transitional javascript apps, Nov 2021.
Gustafson, A., Overkamp, L., Brosset, P., Prater, S. V., Wills, M.,
and PenzeyMoog, E.
Understanding progressive enhancement, Oct 2008.
Harris, R.
Have single-page apps ruined the web?, Oct 2021.
Miller, J.
Islands architecture, 2020.
Pathan, A.-M. K., Buyya, R., et al.
A taxonomy and survey of content delivery networks.
Grid Computing and Distributed Systems Laboratory, University
of Melbourne, Technical Report 4, 2007 (2007), 70.
18
References ii
Shi, W., Cao, J., Zhang, Q., Li, Y., and Xu, L.
Edge computing: Vision and challenges.
IEEE internet of things journal 3, 5 (2016), 637–646.
• Island photo by Julius_Silver
• Hare photo by nathalieburblis
• Jenga photo by Zaimful
• Astro demo
• Qwik demo
• Gustwind demo
19

More Related Content

What's hot

What's hot (20)

OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)OpenStack DevStack Install - 2부 (Multi-nodes)
OpenStack DevStack Install - 2부 (Multi-nodes)
 
Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022
 
Introduction to Istio Service Mesh
Introduction to Istio Service MeshIntroduction to Istio Service Mesh
Introduction to Istio Service Mesh
 
eBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux KerneleBPF - Rethinking the Linux Kernel
eBPF - Rethinking the Linux Kernel
 
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Running Android on the Raspberry Pi: Android Pie meets Raspberry PiRunning Android on the Raspberry Pi: Android Pie meets Raspberry Pi
Running Android on the Raspberry Pi: Android Pie meets Raspberry Pi
 
Issues of OpenStack multi-region mode
Issues of OpenStack multi-region modeIssues of OpenStack multi-region mode
Issues of OpenStack multi-region mode
 
Multicast in OpenStack
Multicast in OpenStackMulticast in OpenStack
Multicast in OpenStack
 
Let's talk about Failures with Kubernetes - Hamburg Meetup
Let's talk about Failures with Kubernetes - Hamburg MeetupLet's talk about Failures with Kubernetes - Hamburg Meetup
Let's talk about Failures with Kubernetes - Hamburg Meetup
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
Python vs c ++
Python vs c ++Python vs c ++
Python vs c ++
 
Replacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with CiliumReplacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with Cilium
 
IPVS for Docker Containers
IPVS for Docker ContainersIPVS for Docker Containers
IPVS for Docker Containers
 
An SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environmentsAn SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environments
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
 
What you need to know about ceph
What you need to know about cephWhat you need to know about ceph
What you need to know about ceph
 
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
 
Testing Persistent Storage Performance in Kubernetes with Sherlock
Testing Persistent Storage Performance in Kubernetes with SherlockTesting Persistent Storage Performance in Kubernetes with Sherlock
Testing Persistent Storage Performance in Kubernetes with Sherlock
 
「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」
 
OpenStack Best Practices and Considerations - terasky tech day
OpenStack Best Practices and Considerations  - terasky tech dayOpenStack Best Practices and Considerations  - terasky tech day
OpenStack Best Practices and Considerations - terasky tech day
 
AvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregateAvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregate
 

Similar to fooConf - JavaScript frameworks of tomorrow

Open stack architecture overview-meetup-6-6_2013
Open stack architecture overview-meetup-6-6_2013Open stack architecture overview-meetup-6-6_2013
Open stack architecture overview-meetup-6-6_2013
Mirantis
 

Similar to fooConf - JavaScript frameworks of tomorrow (20)

JavaScript frameworks of tomorrow
JavaScript frameworks of tomorrowJavaScript frameworks of tomorrow
JavaScript frameworks of tomorrow
 
Quick introduction to Qwik
Quick introduction to QwikQuick introduction to Qwik
Quick introduction to Qwik
 
The future is mostly static
The future is mostly staticThe future is mostly static
The future is mostly static
 
Boilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development ProcessBoilerplates: Step up your Web Development Process
Boilerplates: Step up your Web Development Process
 
The future is mostly static
The future is mostly staticThe future is mostly static
The future is mostly static
 
Application Deployment at UC Riverside
Application Deployment at UC RiversideApplication Deployment at UC Riverside
Application Deployment at UC Riverside
 
Portal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted TschoppPortal / BI 2008 Presentation by Ted Tschopp
Portal / BI 2008 Presentation by Ted Tschopp
 
Frontend War: Angular vs React vs Vue
Frontend War: Angular vs React vs VueFrontend War: Angular vs React vs Vue
Frontend War: Angular vs React vs Vue
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
 
Open stack architecture overview-meetup-6-6_2013
Open stack architecture overview-meetup-6-6_2013Open stack architecture overview-meetup-6-6_2013
Open stack architecture overview-meetup-6-6_2013
 
Rise and Fall of the Frontend Developer
Rise and Fall of the Frontend DeveloperRise and Fall of the Frontend Developer
Rise and Fall of the Frontend Developer
 
StackEngine Demo - Docker Austin
StackEngine Demo - Docker AustinStackEngine Demo - Docker Austin
StackEngine Demo - Docker Austin
 
Dockercon State of the Art in Microservices
Dockercon State of the Art in MicroservicesDockercon State of the Art in Microservices
Dockercon State of the Art in Microservices
 
StackEngine Problem Space Demo
StackEngine Problem Space DemoStackEngine Problem Space Demo
StackEngine Problem Space Demo
 
01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinar01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinar
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
 
Full Stack Web Developer (MERN STACK Developer.pptx
Full Stack Web Developer (MERN STACK Developer.pptxFull Stack Web Developer (MERN STACK Developer.pptx
Full Stack Web Developer (MERN STACK Developer.pptx
 
Building SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.jsBuilding SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.js
 
A night at the spa
A night at the spaA night at the spa
A night at the spa
 

More from Juho Vepsäläinen

More from Juho Vepsäläinen (7)

ECMAScript - From an idea to a major standard
ECMAScript - From an idea to a major standardECMAScript - From an idea to a major standard
ECMAScript - From an idea to a major standard
 
Survive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksSurvive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and Tricks
 
Speccer
SpeccerSpeccer
Speccer
 
bongaus.fi - Spotting Service Powered by Django
bongaus.fi - Spotting Service Powered by Djangobongaus.fi - Spotting Service Powered by Django
bongaus.fi - Spotting Service Powered by Django
 
Bootstrap vs. Skeleton
Bootstrap vs. SkeletonBootstrap vs. Skeleton
Bootstrap vs. Skeleton
 
Static Websites - The Final Frontier
Static Websites - The Final FrontierStatic Websites - The Final Frontier
Static Websites - The Final Frontier
 
Intro to HTML5 Canvas
Intro to HTML5 CanvasIntro to HTML5 Canvas
Intro to HTML5 Canvas
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

fooConf - JavaScript frameworks of tomorrow

  • 1. JavaScript frameworks of tomorrow Juho Vepsäläinen FooConf Helsinki – 01.02.2023
  • 2. What to expect 1. Current trends 2. Islands architecture 3. Resumability 4. JSON as the building block 5. Conclusion 1
  • 4. Past, present, future Source: Miško Hevery: WebApps at Scale 2
  • 8. Transitional web applications (TWAs) (2021) [3] • In October 2021, Rich Harris proposed the idea of TWAs [3] 6
  • 9. Transitional web applications (TWAs) (2021) [3] • In October 2021, Rich Harris proposed the idea of TWAs [3] • TWA = pickBestIdeas(traditionalWeb, SPA) 6
  • 10. Transitional web applications (TWAs) (2021) [3] • In October 2021, Rich Harris proposed the idea of TWAs [3] • TWA = pickBestIdeas(traditionalWeb, SPA) • TWAs utilize SSR for fast initial loading times while not relying on JavaScript 6
  • 11. Transitional web applications (TWAs) (2021) [3] • In October 2021, Rich Harris proposed the idea of TWAs [3] • TWA = pickBestIdeas(traditionalWeb, SPA) • TWAs utilize SSR for fast initial loading times while not relying on JavaScript • TWAs provide consistent experience and accessibility as a built-in feature 6
  • 12. Progressive enhancement in a nutshell (2008) [2] 7
  • 13. Disappearing frameworks (2021) [1] • Disappearing frameworks come with almost zero cost and vanish from the application [1] 8
  • 14. Disappearing frameworks (2021) [1] • Disappearing frameworks come with almost zero cost and vanish from the application [1] • Strong contrast to the current frameworks that load upfront and rely on expensive hydration for SSR 8
  • 15. Disappearing frameworks (2021) [1] • Disappearing frameworks come with almost zero cost and vanish from the application [1] • Strong contrast to the current frameworks that load upfront and rely on expensive hydration for SSR • Changing the viewpoint allows new technical solutions to emerge 8
  • 18. Islands oriented solutions • 11ty/is-land - a new performance-focused way to add interactive client-side components to your web site 10
  • 19. Islands oriented solutions • 11ty/is-land - a new performance-focused way to add interactive client-side components to your web site • îles - Powered by Vite, supports many frameworks (Vue, React, Preact, etc.) for islands 10
  • 20. Islands oriented solutions • 11ty/is-land - a new performance-focused way to add interactive client-side components to your web site • îles - Powered by Vite, supports many frameworks (Vue, React, Preact, etc.) for islands • Capri - Powered by Vite, live CMS integration, early release 10
  • 21. Islands oriented solutions • 11ty/is-land - a new performance-focused way to add interactive client-side components to your web site • îles - Powered by Vite, supports many frameworks (Vue, React, Preact, etc.) for islands • Capri - Powered by Vite, live CMS integration, early release • Astro - Lots of integrations, provides a model for mixing interactivity with content 10
  • 24. Resumability in Qwik • Qwik was initiated by Miško Hevery (Angular.js) 11
  • 25. Resumability in Qwik • Qwik was initiated by Miško Hevery (Angular.js) • Qwik is a new take on how to build web applications 11
  • 26. Resumability in Qwik • Qwik was initiated by Miško Hevery (Angular.js) • Qwik is a new take on how to build web applications • The big idea is deferring work through resumability and the avoidance of hydration 11
  • 27. Resumability in Qwik • Qwik was initiated by Miško Hevery (Angular.js) • Qwik is a new take on how to build web applications • The big idea is deferring work through resumability and the avoidance of hydration • In other words, Qwik serializes the application/framework state into HTML when rendering the application 11
  • 28. Resumability in Qwik • Qwik was initiated by Miško Hevery (Angular.js) • Qwik is a new take on how to build web applications • The big idea is deferring work through resumability and the avoidance of hydration • In other words, Qwik serializes the application/framework state into HTML when rendering the application • Qwik leverages JSX but implements state via reactive bindings and avoids component re-rendering 11
  • 30. JSON as the building block
  • 31. Why to develop yet another SSG/SSR solution? • Earlier solution of mine (Antwar) started showing its age 12
  • 32. Why to develop yet another SSG/SSR solution? • Earlier solution of mine (Antwar) started showing its age • I also wanted to learn to use Deno 12
  • 33. Why to develop yet another SSG/SSR solution? • Earlier solution of mine (Antwar) started showing its age • I also wanted to learn to use Deno • As a result, I started playing around with ideas and came up with Gustwind 12
  • 34. Why to develop yet another SSG/SSR solution? • Earlier solution of mine (Antwar) started showing its age • I also wanted to learn to use Deno • As a result, I started playing around with ideas and came up with Gustwind • Things went out of hand and now I am doing a PhD about the topic 12
  • 35. Gustwind - Design principles • Built entirely around JSON definitions and distilled to a bare minimum 13
  • 36. Gustwind - Design principles • Built entirely around JSON definitions and distilled to a bare minimum • Went with Twind for styling, Sidewind for state, and built Breezewind for templating 13
  • 37. Gustwind - Design principles • Built entirely around JSON definitions and distilled to a bare minimum • Went with Twind for styling, Sidewind for state, and built Breezewind for templating • Reasonably fast and parallelized through Web Workers 13
  • 38. Gustwind - Design principles • Built entirely around JSON definitions and distilled to a bare minimum • Went with Twind for styling, Sidewind for state, and built Breezewind for templating • Reasonably fast and parallelized through Web Workers • Comes with a flexible plugin architecture so any part can be replaced if and when needed making the solution ideal for research purposes 13
  • 39. Twind - Styling • Twind is an implementation of Tailwind 3 syntax 14
  • 40. Twind - Styling • Twind is an implementation of Tailwind 3 syntax • Avoids PostCSS dependency! 14
  • 41. Twind - Styling • Twind is an implementation of Tailwind 3 syntax • Avoids PostCSS dependency! • Constructs extracted CSS through aggregation, not elimination 14
  • 42. Twind - Styling • Twind is an implementation of Tailwind 3 syntax • Avoids PostCSS dependency! • Constructs extracted CSS through aggregation, not elimination • Supports both style extraction and runtime usage 14
  • 43. Sidewind - State • Sidewind is my take on state management 15
  • 44. Sidewind - State • Sidewind is my take on state management • The idea was to do the same for state as what Tailwind did for styling with a React inspired API 15
  • 45. Sidewind - State • Sidewind is my take on state management • The idea was to do the same for state as what Tailwind did for styling with a React inspired API • In other words, it allows you to maintain state within HTML syntax itself 15
  • 46. Sidewind - State • Sidewind is my take on state management • The idea was to do the same for state as what Tailwind did for styling with a React inspired API • In other words, it allows you to maintain state within HTML syntax itself • Internally it is a light wrapper to MutationObserver making it lean 15
  • 47. Sidewind - State • Sidewind is my take on state management • The idea was to do the same for state as what Tailwind did for styling with a React inspired API • In other words, it allows you to maintain state within HTML syntax itself • Internally it is a light wrapper to MutationObserver making it lean • There are also special features related to hydration and recursive state (think tree structures) 15
  • 48. Breezewind - Templating • Breezewind forms the core of the component system 16
  • 49. Breezewind - Templating • Breezewind forms the core of the component system • It has been heavily inspired by the semantics of React (context, props, etc.) 16
  • 50. Breezewind - Templating • Breezewind forms the core of the component system • It has been heavily inspired by the semantics of React (context, props, etc.) • Think of Breezewind as an extensible JSON to XML transformer 16
  • 51. Breezewind - Templating • Breezewind forms the core of the component system • It has been heavily inspired by the semantics of React (context, props, etc.) • Think of Breezewind as an extensible JSON to XML transformer • Designed to run on top of Cloudflare Workers (no eval) 16
  • 54. What to expect in the coming years • Exploration of shipping less JavaScript to the client and being smarter about it (start from zero and load smart) 17
  • 55. What to expect in the coming years • Exploration of shipping less JavaScript to the client and being smarter about it (start from zero and load smart) • More edge-oriented solutions (how much can we push to the edge?) 17
  • 56. What to expect in the coming years • Exploration of shipping less JavaScript to the client and being smarter about it (start from zero and load smart) • More edge-oriented solutions (how much can we push to the edge?) • Frontend meets backend in unexpected ways (expect more SSGs to go hybrid) 17
  • 57. What to expect in the coming years • Exploration of shipping less JavaScript to the client and being smarter about it (start from zero and load smart) • More edge-oriented solutions (how much can we push to the edge?) • Frontend meets backend in unexpected ways (expect more SSGs to go hybrid) • SSGs with more user and designer-focused features (think editing UIs on the web) 17
  • 58. What to expect in the coming years • Exploration of shipping less JavaScript to the client and being smarter about it (start from zero and load smart) • More edge-oriented solutions (how much can we push to the edge?) • Frontend meets backend in unexpected ways (expect more SSGs to go hybrid) • SSGs with more user and designer-focused features (think editing UIs on the web) • AI and machine learning-driven tools (variant generation etc.) 17
  • 60. References i Carniato, R. Understanding transitional javascript apps, Nov 2021. Gustafson, A., Overkamp, L., Brosset, P., Prater, S. V., Wills, M., and PenzeyMoog, E. Understanding progressive enhancement, Oct 2008. Harris, R. Have single-page apps ruined the web?, Oct 2021. Miller, J. Islands architecture, 2020. Pathan, A.-M. K., Buyya, R., et al. A taxonomy and survey of content delivery networks. Grid Computing and Distributed Systems Laboratory, University of Melbourne, Technical Report 4, 2007 (2007), 70. 18
  • 61. References ii Shi, W., Cao, J., Zhang, Q., Li, Y., and Xu, L. Edge computing: Vision and challenges. IEEE internet of things journal 3, 5 (2016), 637–646. • Island photo by Julius_Silver • Hare photo by nathalieburblis • Jenga photo by Zaimful • Astro demo • Qwik demo • Gustwind demo 19