Web Platform
Various notes about JavaScript. Some things I want to look into are:
- JavaScript meta-programming – converting to estree, making modifications and prettyprinting afterwards...
- WebGPU
- WebXR + BabylonJS
- WASM (C/C++)
Misc notes
Design systems and component libraries
-
framework7
-
material-components-web
-
ionic
-
ant-design
-
react-native-elements
-
OnSen UI
-
konstaUi
WebTech 2021
State of web-apis and technology:
- Chrome/Blink-based: ca. 73% worldwide traffic. State-of-the-art, easy to support.
- Firefox/Spidermonkey-based: ca. 4% worldwide traffic. State-of-the-art, easy to support.
- Safari: ca. 20% worldwide traffic. Technologically laggard, harder to support.
- Others, including IE – ca. 3% worldwide traffic. Not implementing recent Web-APIs. Ignored here.
Tech overview
Widely supported
- Video stream
- Video playback – be aware of supported codecs
- WASM
- WebGL 1
- Crypto – be aware of supported codecs, see https://vibornoff.github.io/webcrypto-examples/index.html
- network: websockets, fetch, and webrtc peer-to-peer connections
- Storage: indexeddb
- A2HS – add to home screen (only partially on apple)
- WebWorker, ServiceWorker
- ES6 modules
- Video Recording
- WebGL 2 – (only on devices with modern hardware/drivers). Support added in latest safari
Supported, except on apple
- WASM-threads – Atomics and Shared Buffers (requires COOP/COEP headers)
- WebXR – partly supported/implemented in Blink/Spidermonkey including oculus. Possibly shimmable on firefox with webvr
Support, except on mobile apple and google:
- Extensions API. Will be included in next safari release.
Under development
- WebGPU – being developed, and behind flags, – not ready yet
- WASM SIMD – behind flag in firefox/chrome
- WASM GC – proposal in progress, unsure if/when implemented
Libraries and tools
- neural networks: https://github.com/Microsoft/onnxjs (replaced by tvm when WebGPU is ready)
- peer to peer file distribution: https://github.com/webtorrent/webtorrent (IPFS still too bloated)
- lz4: https://github.com/gorhill/lz4-wasm
- ffmpeg: https://github.com/ffmpegwasm/ffmpeg.wasm
- Low-level code: https://www.rust-lang.org/what/wasm