v1.0 — Now on npm!

koin.js

The drop-in React component for browser-based retro game emulation. 27 systems. Cloud saves. Zero backend required.

27
Systems
9
CRT Shaders
~55KB
Gzipped
Nostalgia

Try It Now

Flappy Bird (NES Homebrew) — fully playable in your browser

LOADING EMULATOR...
Initializing WASM cores
↑↓←→ MoveX / Z ButtonsEnter Start

Batteries Included

🎮

Universal Emulation

NES to PlayStation. Game Boy to Arcade. Automatic core selection based on file extension.

☁️

Cloud-Ready Saves

Slot-based saves with screenshots. Auto-save. Emergency saves on tab close. You provide the backend.

📱

Touch Controls

GPU-accelerated virtual D-pad. Multi-touch combos. Per-system button layouts.

🏆

RetroAchievements

Official RA integration. Unlock achievements. Hardcore mode with restrictions.

Rewind Time

Made a mistake? Rewind. Auto-enabled for lightweight 8/16-bit systems.

📹

Gameplay Recording

Capture gameplay as WebM video. VP9 codec at 30fps. Just press F5.

Simple by Design

Minimal Setup

App.tsx
import { GamePlayer } from 'koin.js';

export default function App() {
  return (
    <GamePlayer
      romId="game-123"
      romUrl="/roms/mario.nes"
      system="NES"
      title="Super Mario Bros."
    />
  );
}

Cloud Integration

App.tsx
<GamePlayer
  romId="game-123"
  romUrl="/roms/game.nes"
  system="NES"
  title="My Game"
  
  // Your backend handlers
  onSaveState={handleSave}
  onLoadState={handleLoad}
  onAutoSave={handleAutoSave}
  
  // Optional theming
  systemColor="#FF3333"
  shader="crt/crt-lottes"
/>

Ready to Play?

Start building your retro gaming platform in minutes.