sootsim open
sootsim open
Resolve a port, dev-server URL, bundle URL, full shell URL, or app deep link. Ports and bundle targets load into a sim; custom-scheme URLs and leading-slash routes dispatch through the current app’s React Native Linking pipeline. Fresh sims open in a separate window. Named profiles force a fresh Electron or Playwright sim because storage isolation is fixed at window/context construction time. A SootSim preview/build link (e.g. https://sootsim.com/preview/<id>) is a full player page, not a driveable sim; open recognizes it and launches it in your browser for viewing instead of mis-loading the HTML as a bundle.
terminal
Options
| flag | description |
|---|---|
--new | open a fresh sim instead of reusing the current sim |
--profile <id> | open with an isolated persistent storage profile |
--ephemeral | open with a temporary isolated storage profile |
--driver <id> | launch through a specific driver (electron and playwright support profiles) |
--headless | pass headless=true to the launch driver (useful with --driver playwright for CI runs) |
--cdp-port <number> | expose Chrome remote debugging on this port so the sim can be cpu-profiled while still driveable over the bridge (playwright driver only) |
--browser <engine> | playwright engine: chromium (default), webkit, or firefox. webkit is the iOS Safari proxy: headless webkit renders on the real Apple GPU while headless chromium software-rasterizes canvas/WebGL |
--device <model> | device profile for the opened sim (e.g. iphone-16, iphone-16-pro-max, pixel-8). stamped on the engine URL so every open path honors it; playwright sims also size their viewport to the device instead of a desktop-shaped default |
--base-url <url> | base shell URL to wrap around bundle targets |
--replace <module>=<file> | replace a Metro module with a local file for this run; useful for swapping in a deterministic fixture component during demos. repeatable |
--remap <host:port>=<host:port> | rewrite guest-app fetch/websocket traffic from one host:port to another for this run (e.g. a third-party e2e suite that hardcodes a port already taken on the host). repeatable |
--no-describe | skip the automatic describe snapshot that prints right after open finishes (useful when scripting and you only want open’s own output) |
--hot | force metro HMR on (sets hot=true on the bundle URL). default for interactive opens; edits hot-apply through sootsim’s HmrClient |
--no-hmr | force metro HMR off (sets hot=false on the bundle URL). default under --driver playwright so agent/CI runs stay deterministic with no in-bundle refresh wiring |
--port <number> | bridge port (defaults to 7668) |
Examples
terminal
Resolution Rules
open accepts four inputs:
- a raw dev-server port like
8081 - a dev-server base URL like
http://localhost:8081 - a full bundle URL
- a full sootsim shell URL
For raw targets, open now hands the input to the shell instead of guessing a fallback bundle URL. Numeric targets open as /rn/<port>, while non-port inputs fall back to /rn?open=... so ConnectRN can resolve them inside the shell.
Desktop Preference
When the desktop companion is installed, open prefers it first. If the companion does not connect back to the bridge in time, the command falls back to the bridge-owned browser path and finally a plain browser open.
That policy gives you one command that works whether you live in the browser, in Electron, or in a mixed workflow.
