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

sootsim open <port|target|bundle-url|sootsim-url|deeplink> [--new]

Options

flagdescription
--newopen a fresh sim instead of reusing the current sim
--profile <id>open with an isolated persistent storage profile
--ephemeralopen with a temporary isolated storage profile
--driver <id>launch through a specific driver (electron and playwright support profiles)
--headlesspass 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-describeskip the automatic describe snapshot that prints right after open finishes (useful when scripting and you only want open’s own output)
--hotforce metro HMR on (sets hot=true on the bundle URL). default for interactive opens; edits hot-apply through sootsim’s HmrClient
--no-hmrforce 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

sootsim open 8081
sootsim open --new 8085
sootsim open 8081 --profile qa
sootsim open 8081 --profile qa --driver playwright
sootsim open http://localhost:8082
sootsim open /settings
sootsim open myapp://settings/profile
sootsim open 8081 --driver playwright --headless
sootsim open 8081 --new --driver playwright --browser webkit --device iphone-16
sootsim open 8089 --new --driver playwright --cdp-port 9222
sootsim open 8081 --no-describe
sootsim open 8081 --no-hmr
sootsim open 8081 --driver playwright --hot
sootsim open https://sootsim.com/preview/<id>

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.

Ready to build?

Run your React Native app in the browser. No simulators, no native toolchain, no waiting.

curl -fsSL https://sootsim.com/install.sh | sh