Integrations
The tools crossbind works with, from the bundler in your project to the registry your native code comes from. Each card names the crossbind packages it takes and opens its setup. To start from nothing instead, Examples has every create-crossbind template.
Bundlers
A plugin turns the headers and .rs files you import into JavaScript modules. It works at the bundler level, beside your framework's own plugin, so the framework needs no crossbind package of its own. Without a bundler, the CLI builds a plain script instead.
vite preview send the COOP/COEP headers, so a multithreaded build runs locally as it is.@crossbind/plugin-viteWebpackThe plugin, plus the loader its rule hands headers and .rs files to. The config has to be an ES module, such as webpack.config.mjs.@crossbind/plugin-webpack@crossbind/plugin-webpack-loaderRspackThe Webpack plugin and its loader, through Rspack's webpack-compatible plugin API.@crossbind/plugin-webpack@crossbind/plugin-webpack-loaderRollupThe core the Vite plugin wraps, for a plain Rollup build. There is no dev server: rollup -c -w rebuilds the wasm.@crossbind/plugin-rollupMetroTurns header, .i and .rs imports into modules and writes the C++ bridge for each header while Metro bundles.@crossbind/plugin-metroNo bundlerThe CLI builds a loader and its wasm for a classic <script> tag. It binds every header under src/native, and nothing rebuilds on save.crossbindMobile and desktop
React Native and Expo apps call your C++ as native code over JSI; Electron loads it as a Node-API addon in its main process.
app.json. Expo Go cannot load your C++, so the app needs expo prebuild and a development build.@crossbind/plugin-react-native@crossbind/plugin-react-native-ios-helper@crossbind/core-embind-jsi@crossbind/plugin-metroElectronThe main process loads your C++ as a Node-API addon and answers the window over IPC. Node-API is ABI-stable, so nothing rebuilds per Electron version.crossbind@crossbind/core-embind-napiRuntimes
Servers, edge isolates and WASI hosts load what the CLI builds for them, with no bundler plugin in between.
crossbind/node/dev hooks.crossbindCloudflare WorkersThe Worker imports the loader and its .wasm from the build, and Wrangler bundles both with no extra rules. Single-threaded, with files in memory.crossbindwasmtimeRuns C and C++ built as a WASI command, with no JavaScript, and serves a WASI HTTP component with wasmtime serve. Needs wasmtime 47 or newer.crossbindSpinServes the same WASI HTTP component from a spin.toml manifest with spin up. Tested with Spin 4.2.crossbindwasmCloudwash dev takes the WASI HTTP component as build.component_path. Checked by hand with wash 2.10.crossbindPackage registries
Where your native dependencies come from. A crossbind port arrives prebuilt from npm; crates and Conan packages build from source with your project.
@crossbind/port-*: 16 C and C++ libraries from GDAL to SQLite, prebuilt from pinned upstream sources. Install one variant per platform you build; your own crossbind packages work the same way.crates.ioDeclare a crate in cargoDependencies and import it with cargo:, with no Rust of your own. Builds for the web, React Native and Node.js addons; not for WASI yet.ConanCenterDeclare a package in conanDependencies and import its headers with conan:; crossbind builds it from source for each target. Not for WASI.Coding agents
One portable skill, installed with the Skills CLI. No background server and no client-specific plugin.
Another tool
A bundler with no plugin here can still drive the build: the plugins only call functions crossbind exports, and @crossbind/plugin-rollup is the smallest one to copy. Another bundler lists those functions. For anything else, ask in Discussions.