koin.js

A batteries-included React component for browser-based retro game emulation. Built on top of Nostalgist.js, adding production-ready features like cloud saves, touch controls, gameplay recording, and RetroAchievements integration.

What You Get

Core Emulation

  • [✓]27 Systems — NES to PlayStation, Game Boy to Arcade
  • [✓]Automatic Core Selection — Detects system from file extension
  • [✓]BIOS Support — Flexible mounting (system or ROM folder)
  • [✓]10 CRT Shaders — Lottes, Geom, zFast, LCD Grid, and more

Save System

  • [✓]Slot-Based Saves — Multiple save slots with screenshots
  • [✓]Auto-Save — Configurable interval with progress indicator
  • [✓]Emergency Saves — Automatic save on tab close/hide
  • [✓]Save Queue — Prevents corruption from concurrent operations

Controls

  • [✓]Touch Controls — GPU-accelerated virtual D-pad and buttons
  • [✓]Gamepad Support — Xbox, PlayStation, Switch detection
  • [✓]Key Remapping — Per-system keyboard layouts
  • [✓]Multi-Touch — Combo inputs (e.g., diagonal + A+B)

Extras

  • [✓]Gameplay Recording — VP9 WebM capture at 30fps
  • [✓]RetroAchievements — Login, unlock tracking, hardcore mode
  • [✓]Rewind — Go back in time (Tier 1 systems)
  • [✓]Speed Control — 0.5x to 4x playback speed

Performance Optimization

The player automatically applies optimized RetroArch settings based on system complexity:

Tier 1 — Zero Lag

8-bit/16-bit systems get Run-Ahead enabled, cutting 1 frame (~16ms) of input latency for near-instant response.

NES, SNES, Genesis, GB, GBC, Master System, Game Gear, PC Engine, Atari 2600/7800, Lynx, Neo Geo Pocket, WonderSwan

Tier 2 — Max Smoothness

32-bit+ systems get Threaded Video for smooth, stutter-free gameplay. Rewind is disabled to save memory.

PlayStation, N64, GBA, Saturn, Dreamcast, Nintendo DS, PSP, Arcade, DOS, Neo Geo

> Get Started_