The purpose of this project is to benchmark all available Web Components technologies with different implementations :
The demos do not use any Polyfill & are build to ES6/ES2015 code for benchmarks purpose. Please use Chrome, Safari or Firefox > v63.
The benchmark is running on Travis during a CI process, results are constant between two builds. Benchmarks are run by the Lighthouse library with fast 4g throttling set up (Network slow down with 4x CPU slower).
The benchmark use the great Puppeteer Node.js
library for
manipulating a Chrome headless instance.
Puppeteer has some
APIs for generating a RAW trace file which can be opened in
Chrome DevTools or
timeline viewer.
The data extracted from the RAW JSON is the "top down tree" total time in DevTools Performance tab of Chrome, which is an addition of scripting, rendering & painting time in the graph below.
Time to interactiveThe benchmark use Lighthouse Node.js library under the hood. The Lighthouse configuration use the interactive audit where you can have "Time to interactive" number.
The first one is for libraries or compilers that are "Web components" friendly first. The second one is for mainstream front-end frameworks which support "Web Components" and can also "export" their own "component" material to standard "Web Components".
The last build run : 04/04/2020 - 13:29:34
This benchmark consist of 4 scenarios : page load, create 50 todos, delete 50 todos, editing 50 todos. Lower numbers are better.
Assets size Gzipped (in Ko) |
Page load (in ms) |
Time to interactive (in ms) |
Create 50 todos (in ms) |
Delete 50 todos (in ms) |
Edit 50 todos (in ms) |
|
---|---|---|---|---|---|---|
Native |
2.2
|
|
|
|
|
|
Atomico 1.5.2
250
|
4.3
|
|
|
|
|
|
Hybrids 4.0.2
1288
|
7.9
|
|
|
|
|
|
HyperHTMLElement 3.10.0
141
|
12.8
|
|
|
|
|
|
LitElement 2.2.1
2169
|
10.3
|
|
|
|
|
|
Omi 6.9.0
8900
|
11.9
|
|
|
|
|
|
Riot 4.4.0
13682
|
9.7
|
|
|
|
|
|
SkateJS & lit-html 0.0.1
2991
|
11.3
|
|
|
|
|
|
SkateJS & Preact 0.0.1
2991
|
16.1
|
|
|
|
|
|
Slim.js 4.0.7
643
|
5.4
|
|
|
|
|
|
Solid 0.5.1
533
|
7.8
|
|
|
|
|
|
Stencil 1.3.0
5608
|
NaN
|
|
|
|
|
|
Svelte 3.9.1
17839
|
6.5
|
|
|
|
|
|
Assets size Gzipped (in Ko) |
Page load (in ms) |
Time to interactive (in ms) |
Create 50 todos (in ms) |
Delete 50 todos (in ms) |
Edit 50 todos (in ms) |
|
---|---|---|---|---|---|---|
Angular Elements 8.2.3
48702
|
133.7
|
|
|
|
|
|
Angular Elements Ivy ~8.2.3
48702
|
NaN
|
|
|
|
|
|
Vue.js 2.6.10
140129
|
40.2
|
|
|
|
|
|
Dojo 5.0.4
150
|
NaN
|
|
|
|
|
|
This benchmark display a Pascal Triangle. Lower numbers are better.
Assets size Gzipped (in Ko) |
Page load (in ms) |
Time to interactive (in ms) |
|
---|---|---|---|
Native |
|
|
|
Atomico 1.5.2
250
|
|
|
|
Hybrids 4.0.2
1288
|
|
|
|
HyperHTMLElement 3.10.0
141
|
|
|
|
LitElement 2.2.1
2169
|
|
|
|
Omi 6.9.0
8900
|
|
|
|
Riot 4.4.0
13682
|
|
|
|
SkateJS & lit-html 0.0.1
2991
|
|
|
|
SkateJS & Preact 0.0.1
2991
|
|
|
|
Slim.js 4.0.7
643
|
|
|
|
Solid 0.5.1
533
|
|
|
|
Svelte 3.9.1
17839
|
|
|
|
Assets size Gzipped (in Ko) |
Page load (in ms) |
Time to interactive (in ms) |
|
---|---|---|---|
Angular Elements 8.2.3
48702
|
|
|
|
Angular Elements Ivy ~8.2.3
48702
|
|
|
|
Vue.js 2.6.10
140129
|
|
|
|
Dojo 5.0.4
150
|
|
|
|
Web Components Benchmark by Vincent Ogloblinsky. Licensed under MIT.