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

The Juniper SDN Landscape
The Juniper SDN LandscapeThe Juniper SDN Landscape
The Juniper SDN LandscapeChris Jones
 
Cncf checkov and bridgecrew
Cncf checkov and bridgecrewCncf checkov and bridgecrew
Cncf checkov and bridgecrewLibbySchulze
 
Palo Alto Networks CASB
Palo Alto Networks CASBPalo Alto Networks CASB
Palo Alto Networks CASBAlberto Rivai
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - ObservabilityAraf Karsh Hamid
 
Présentation CloudStack by Ikoula pour les Start-up @ La Cantine
Présentation CloudStack by Ikoula pour les Start-up @ La CantinePrésentation CloudStack by Ikoula pour les Start-up @ La Cantine
Présentation CloudStack by Ikoula pour les Start-up @ La CantineIkoula
 
SIPREC RTPEngine Media Forking
SIPREC RTPEngine Media ForkingSIPREC RTPEngine Media Forking
SIPREC RTPEngine Media ForkingHossein Yavari
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfJavier Turégano Molina
 
Microservices Testing Strategies JUnit Cucumber Mockito Pact
Microservices Testing Strategies JUnit Cucumber Mockito PactMicroservices Testing Strategies JUnit Cucumber Mockito Pact
Microservices Testing Strategies JUnit Cucumber Mockito PactAraf Karsh Hamid
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopWeaveworks
 
Istio service mesh introduction
Istio service mesh introductionIstio service mesh introduction
Istio service mesh introductionKyohei Mizumoto
 
Istio : Service Mesh
Istio : Service MeshIstio : Service Mesh
Istio : Service MeshKnoldus Inc.
 
Cilium + Istio with Gloo Mesh
Cilium + Istio with Gloo MeshCilium + Istio with Gloo Mesh
Cilium + Istio with Gloo MeshChristian Posta
 
Continuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQubeContinuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQubeEmre Dündar
 
MicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scaleMicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scaleSudhir Tonse
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingAraf Karsh Hamid
 

What's hot (20)

Service mesh
Service meshService mesh
Service mesh
 
The Juniper SDN Landscape
The Juniper SDN LandscapeThe Juniper SDN Landscape
The Juniper SDN Landscape
 
Zero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOpsZero-Trust SASE DevSecOps
Zero-Trust SASE DevSecOps
 
Cncf checkov and bridgecrew
Cncf checkov and bridgecrewCncf checkov and bridgecrew
Cncf checkov and bridgecrew
 
F5 Web Application Security
F5 Web Application SecurityF5 Web Application Security
F5 Web Application Security
 
Palo Alto Networks CASB
Palo Alto Networks CASBPalo Alto Networks CASB
Palo Alto Networks CASB
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - Observability
 
Présentation CloudStack by Ikoula pour les Start-up @ La Cantine
Présentation CloudStack by Ikoula pour les Start-up @ La CantinePrésentation CloudStack by Ikoula pour les Start-up @ La Cantine
Présentation CloudStack by Ikoula pour les Start-up @ La Cantine
 
SIPREC RTPEngine Media Forking
SIPREC RTPEngine Media ForkingSIPREC RTPEngine Media Forking
SIPREC RTPEngine Media Forking
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdf
 
Microservices Testing Strategies JUnit Cucumber Mockito Pact
Microservices Testing Strategies JUnit Cucumber Mockito PactMicroservices Testing Strategies JUnit Cucumber Mockito Pact
Microservices Testing Strategies JUnit Cucumber Mockito Pact
 
Intro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps WorkshopIntro to Kubernetes & GitOps Workshop
Intro to Kubernetes & GitOps Workshop
 
Istio service mesh introduction
Istio service mesh introductionIstio service mesh introduction
Istio service mesh introduction
 
Istio : Service Mesh
Istio : Service MeshIstio : Service Mesh
Istio : Service Mesh
 
Cilium + Istio with Gloo Mesh
Cilium + Istio with Gloo MeshCilium + Istio with Gloo Mesh
Cilium + Istio with Gloo Mesh
 
Continuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQubeContinuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQube
 
MicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scaleMicroServices at Netflix - challenges of scale
MicroServices at Netflix - challenges of scale
 
Demystifying Service Mesh
Demystifying Service MeshDemystifying Service Mesh
Demystifying Service Mesh
 
Big Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb Sharding
 
Microservices
Microservices Microservices
Microservices
 

Similar to fooConf - JavaScript frameworks of tomorrow

JavaScript frameworks of tomorrow
JavaScript frameworks of tomorrowJavaScript frameworks of tomorrow
JavaScript frameworks of tomorrowJuho Vepsäläinen
 
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 ProcessFibonalabs
 
Application Deployment at UC Riverside
Application Deployment at UC RiversideApplication Deployment at UC Riverside
Application Deployment at UC RiversideMichael Kennedy
 
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 TschoppTed 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 VueMarudi Subakti
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realistsKarthik Gaekwad
 
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 ApplicationsDenis Izmaylov
 
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_2013Mirantis
 
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 DeveloperRafael Casuso Romate
 
StackEngine Demo - Docker Austin
StackEngine Demo - Docker AustinStackEngine Demo - Docker Austin
StackEngine Demo - Docker AustinBoyd Hemphill
 
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 MicroservicesAdrian Cockcroft
 
StackEngine Problem Space Demo
StackEngine Problem Space DemoStackEngine Problem Space Demo
StackEngine Problem Space DemoBoyd Hemphill
 
01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinar01282016 Aerospike-Docker webinar
01282016 Aerospike-Docker webinarAerospike, Inc.
 
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 Jan09Shaer Hassan
 
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.pptxRamudgarYadav
 
A night at the spa
A night at the spaA night at the spa
A night at the spaChris Love
 

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

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 standardJuho Vepsäläinen
 
Web application development - The past, the present, the future
Web application development - The past, the present, the futureWeb application development - The past, the present, the future
Web application development - The past, the present, the futureJuho Vepsäläinen
 
Survive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksSurvive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksJuho Vepsäläinen
 
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 DjangoJuho Vepsäläinen
 
Static Websites - The Final Frontier
Static Websites - The Final FrontierStatic Websites - The Final Frontier
Static Websites - The Final FrontierJuho Vepsäläinen
 

More from Juho Vepsäläinen (8)

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
 
Web application development - The past, the present, the future
Web application development - The past, the present, the futureWeb application development - The past, the present, the future
Web application development - The past, the present, the future
 
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

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 

Recently uploaded (20)

Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

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