Stockfish WASM Integration Patterns
Automatically verify correct usage of the Stockfish WASM engine integration.
When to Apply
- Working with files in
src/engine/ - Implementing move analysis features
- Debugging engine communication issues
- Adding new UCI commands
Architecture Overview
Frontend Request → WebSocket IPC → Backend Handler → Stockfish Engine
↓
Frontend Display ← WebSocket IPC ← Backend Response ← UCI Output
Key Files
| File | Purpose |
|---|---|
src/engine/stockfish-engine.ts |
Main engine wrapper |
src/engine/stockfish-loader.ts |
WASM loading |
src/shared/engine-types.ts |
Type definitions |
src/shared/engine-constants.ts |
Engine configuration |
src/backend/analysis-pipeline.ts |
Batch analysis integration |
Correct Patterns
Engine Initialization
// Always check engine ready state before use
if (!engine.isReady()) {
await engine.initialize();
}
UCI Command Pattern
// Set position before analysis
engine.setPosition(fen);
// Use appropriate depth/time limits
const analysis = await engine.analyze({
depth: 20,
multiPV: 3,
});
Error Handling
try {
const result = await engine.getBestMove(fen);
} catch (error) {
if (error instanceof EngineNotReadyError) {
// Reinitialize engine
} else if (error instanceof InvalidFENError) {
// User feedback for invalid position
}
}
Async Patterns
// Always await engine operations
const moves = await engine.getTopMoves(fen, 3);
// Use Promise.all for independent operations
const [eval1, eval2] = await Promise.all([
engine.evaluate(fen1),
engine.evaluate(fen2),
]);
Anti-Patterns to Avoid
// DON'T: Fire and forget
engine.analyze(fen); // Missing await
// DON'T: Assume engine is ready
engine.getBestMove(fen); // Should check isReady()
// DON'T: Block on synchronous operations
while (!engine.isReady()) {} // Use async/await
Verification Checklist
- All engine calls are awaited
- Engine ready state checked before use
- Proper error types used (not generic Error)
- UCI commands follow correct sequence
- Analysis results validated before use
Reference
documents/engine-integration.md- Full integration guide- Stockfish UCI protocol documentation
Converted and distributed by TomeVault — claim your Tome and manage your conversions.