Registry & overrides

SootSim does not use a manually maintained docs list of stubs as its source of truth. Compatibility metadata lives in packages/compat/src/registry.ts, and the docs-facing snapshot is generated from that registry by scripts/generate-site-compat-snapshot.ts.

Resolution order

When SootSim resolves a native package, the flow is:

  1. Built-in compat entry from @soot/compat
  2. Local override from your sootsim.config.ts
  3. Auto-stub fallback for unknown native packages

Not every tracked package is a stub

The compat registry tracks more than browser replacements:

  • native — package needs a SootSim-provided replacement or shim
  • works — pure JS package runs from the bundle as-is
  • build-only — tooling package tracked for scans, but irrelevant at runtime

Local overrides

Use sootsim.config.ts when a project needs a different answer than the built-in registry:

import { defineConfig } from 'sootsim/config'
export default defineConfig({
modules: {
'react-native-camera': { file: './stubs/camera.ts' },
'react-native-config': {
inline: { API_URL: 'http://localhost:3000' },
},
'react-native-analytics': 'noop',
},
})