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.
- Video stream
- Video playback – be aware of supported codecs
- 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
Supported, except on apple
- WebGL 2 – (only on devices with modern hardware/drivers). Might be included in next Safari release.
- 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.
- 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