Short answer
Stop stacking proxies to fake geography when what you need is to move the actual browser. Steel Cloud already lets you pin every session to lax, ord, or iad with the region parameter, so the browser code runs next to your target property before any proxy hops get involved. That cut alone shaves the usual 200+ ms cross-country lag and keeps cookies, storage, and residency requirements aligned with where the work happens.
Use proxies for network egress only. Keep the region flag as the source of truth for compute placement, then add Steel-managed or BYO proxies when you specifically need a different IP surface than the data center you chose. This “region first, proxy second” pattern keeps telemetry legible and prevents the cargo-cult proxy chains that make debugging impossible.
Region vs proxy at a glance
| Question | Region parameter | Proxy settings |
|---|---|---|
| What does it change? | Where Steel boots the browser VM (lax, ord, iad) | Which IP the browser uses for outbound requests |
| When to use it | Latency, residency, data locality, bringing the browser closer to the app | Geo-restricted endpoints, anti-bot evasion, IP diversification |
| Default behavior | Auto-selects the data center nearest your API caller | Disabled; Steel routes through its own datacenter IP |
| Failure if misused | Cookies and storage pinned to the wrong coast; replay shows 300 ms RTT | Proxy drift hides the real location, IP bans when reused too fast |
| How they combine | Pick the compute region once, then optionally add useProxy | Optional overlay; can be Steel-managed (US today) or BYO for any locale |
The failure patterns this solves
| Symptom | Why it happens | Region-first fix |
|---|---|---|
| West coast session automates an east coast banking portal and times out | Default session landed in LAX because the orchestrator runs there | Set region: "iad" so the browser executes near the target property before you think about proxies |
| Compliance run needs data residency in Chicago but devs keep flipping proxy providers | Teams tried to move the IP instead of the VM | Anchor the session in ord, then only add BYO proxy if you also need a non-Chicago IP |
| Debug traces show 400 ms variance between staging and prod | Sessions silently bounced between regions because auto-pick eyed the orchestrator | Log and enforce the region parameter in your session factory and treat proxies as optional |
| Residential proxy invoices spike while latency never improves | Proxy churn tried to compensate for cross-country compute | Reduce proxy churn by setting the correct region first; keep managed proxies for sites that still need residential IPs |
Instead of gambling on proxy rotation to simulate proximity, set the region once and let proxies solve the narrow problem of IP trust.
Implementation path
- Decide the compute side by latency or residency. Map each workflow to
lax,ord, oriadtoday. Keep this in config so you can prove to auditors where the browser ran. - Create the session with an explicit region flag.
Steel still auto-selects for you if you omit the flag, but writing it down removes drift between orchestrators.import Steel from "steel-sdk"; const client = new Steel({ steelAPIKey: process.env.STEEL_API_KEY }); const session = await client.sessions.create({ region: "iad", label: "billing-audits", }); - Add proxies only when the IP must differ from the compute region.
Steel-managed proxies currently operate out of US pools; if you need another locale today, pass your own proxy server string instead of hoping region routing will spoof it.const session = await client.sessions.create({ region: "ord", useProxy: { geolocation: { country: "US", state: "IL" }, }, }); - Log both decisions for observability. Store
session.regionandsession.proxy(oruseProxypayload) alongside your run artifacts so replay explains which combination produced the trace. - Fallback intelligently. If a region is unavailable, retry once in the next best option and flag it. Do not silently flip to proxies-only mode, because the compute location is usually what you cared about.
Checklist: enforce region, then layer network controls
- Session factory: require a
regionstring for every workflow, even if it matches auto-pick. - Proxy policy: default to off, enable only when the site forces specific IP ranges, and document whether you used Steel-managed or BYO.
- Monitoring: alert when a run executes outside its expected region or when proxy retries exceed your threshold; that usually signals misuse.
- Docs sync: keep your operator runbook aligned with multi-region session docs so engineers know the current region codes and rollout status.
Trade-offs and limits
- Steel Cloud currently offers three US regions. If you need EU or APAC compute, file a request or run Steel Browser in your own region while you wait.
- Steel-managed residential proxies are US based today; for other locales, provide a BYO proxy server until global pools land.
- Region routing controls compute placement only; traffic still flows through your chosen proxy or Steel’s default IP pool, so plan residency narratives accordingly.
- Multi-region is a Steel Cloud feature. Self-hosted clusters can match the pattern, but you own provisioning, health checks, and rotation.
Next steps
- Ship a config check that refuses to start sessions without an explicit
region. - Add a regression test that replays the same workflow twice—once with
regionpinned, once without—to show the latency difference to your team. - Read the proxy guide to decide when managed vs BYO proxies actually add value after region control is set.
Humans use Chrome. Agents use Steel.