While the core tech (Libretro/WASM) is solid, wrapping it in a UI that feels "native" is a deep rabbit hole. I built Koin Deck Player to solve the glue-code headaches, and I've open-sourced it as a drop-in React component.
It handles the tricky engineering bits so you don't have to:
- Latency Tiers: Automatically enables "Run-Ahead" (calculating frames in advance) for 8/16-bit systems to get sub-frame latency. - Performance: Detects SharedArrayBuffer support to switch N64/PS1 emulation to threaded video rendering, preventing UI freezes. - Mobile Controls: A custom GPU-accelerated virtual controller that uses heuristic multi-touch (sliding finger between buttons works) and haptics. - Audio: Handles the notorious auto-play/resume AudioContext quirks across browsers.
I built this because I believe preservation shouldn't just be about archiving file, it should be about making the experience delightful.
Repo is MIT licensed. I'd love to hear your feedback on the input latency!