
We gave AI agents a mobile dev environment
Shopify built Remote Dev to move iOS and Android builds, simulators and verification off laptops, so River agents can run mobile work in parallel; River's share of merged mobile PRs rose from 6% to 61%.
Shopify built Remote Dev because its AI-agent workflows for mobile engineering were hitting a physical limit: not model quality, but the developer laptop. Three or four parallel workflows could saturate a Mac as compilers, simulators, and emulators competed for the same CPU, memory, and GPU. The team also had to keep the laptop awake; a closed lid could stop the work.
Shopify’s internal Slack agent, River, had already given web and backend engineers a way to delegate work without tying up their own machines. But River ran on Linux, so it could edit Swift while still being unable to build and test the iOS app. In other words, the team’s ability to assign work to agents had outgrown its ability to run that work. Remote Dev is the infrastructure layer built to close that gap.
What Shopify built
One session, many agents
Remote Dev gives each River session its own mobile development environment. That turns mobile engineering into a parallel workflow: one agent can debug an Android issue, another can implement an iOS feature, and a third can exercise a pull request, each in its own environment. Engineers start these sessions from Slack and no longer need Xcode or Android Studio running locally.
The workflow can run in the background
River’s environment can carry much more of the development loop than a code editor. It can implement changes, build the app, run tests, drive simulators, collect screenshots, and open a pull request. When a build or test fails, it can inspect logs, patch the failure, and retry.
The team delegates the interruptions that used to fragment an engineer’s day: rebasing branches, resolving merge conflicts, checking CI failures, responding to PR feedback, triaging crashes, and reviewing code. Some automated workflows run overnight. They pick up bugs, implement fixes, test them, and create PRs so engineers can review the work the next morning.
The result has to be proved
Shopify treats “it compiles” as too weak a claim. Remote Dev lets River navigate the app, interact with controls, and capture screenshots or recordings on both iOS and Android. For a bug fix, it can reproduce the original problem, record the broken behavior, apply the fix, and repeat the same steps to show before and after.
River can also generate explainer videos from those recordings. The videos show the app inside 3D phone renders, with animations and narration, and are produced automatically. That makes the evidence easier to review than a diff alone.
People who do not have a mobile setup can contribute
A web engineer can fix a bug, a designer can iterate on UI, and a product manager can test a feature from Slack. The remaining gap was hands-on verification: screenshots do not let you try the product yourself.
Shopify’s answer is Live Preview. The iOS Simulator and Android Emulator stream from River’s Remote Dev environment to a Quick website over WebSockets. The browser sends interactions back to the remote device, so a link opens the real running app. Every Remote Dev session gets a Live Preview for both platforms, and sessions are shareable for collaboration.
Shopify also added deep linking and live streaming of the mobile CLI, which makes it easier to jump to a specific screen and inspect what is happening underneath the UI. No local setup, no build installation, and not even a Mac is required for the reviewer.
How the infrastructure works
The iOS side is a fleet of remote Macs prepared with the development environment and iOS simulators. Agents connect to them over SSH. Android is the harder half: its emulator relies on hardware virtualization, and running it inside a cloud VM would require nested virtualization that macOS does not support out of the box. Shopify instead connects the Mac session to an Android emulator on a separate Linux VM with nested virtualization enabled. In one SSH session, an agent can build for iOS and Android and test on either platform.
Each agent claims a ready Mac with an attached Android emulator. Shopify destroys the Mac when the session ends, prepares a replacement, and periodically rotates idle machines. The rotation is staggered so the pool stays available without interrupting active sessions.
The warm-pool problem
Initial checkout and app compilation originally took more than 30 minutes. Requesting a machine only after work arrived would have made every delegation start with that tax. Shopify therefore keeps a pool of warm Macs with main already checked out, tools installed, apps built, and caches warm.
An agent claims a warm Mac, synchronizes its branch, and starts a prebuilt Android VM instance. Its checkout can live locally or in the cloud; changes are synchronized to the Mac, where builds and scripts run. Requesting a machine and inspecting the resulting change on a running device takes a few minutes instead of more than 30.
| Problem | Remote Dev response |
|---|---|
| Laptops saturate after a few parallel mobile builds. | Each agent gets its own remote environment from a managed pool. |
| Linux can edit Swift but cannot build or test iOS. | Agents SSH into remote Macs with iOS simulators. |
| macOS lacks native nested virtualization for Android cloud emulators. | Android emulators run on a separate Linux VM and attach to the Mac session. |
| Cold checkout and compilation cost more than 30 minutes. | Warm Macs have main, tools, builds, and caches prepared in advance. |
| Reviewers need local installs and a Mac to try the app. | Live Preview streams the running app to a browser link. |
Teaching River to use the infrastructure
The infrastructure alone did not change River’s behavior. River still said that an iOS build could not run on Linux, so it could write code without verifying it. Shopify created a skill to teach agents how to test changes and prove the result. Getting there required several iterations: River sometimes forgot the remote Mac existed, stayed silent while remote communication happened, or disappeared for long stretches before returning to the user.
Two changes mattered most. A CLI hid the complexity of SSH flags behind a simpler interface. And instead of sleeping or setting timers around long-running Mac tasks, Shopify used tmux panes that River could observe in real time. The agent’s behavior then became continuous with the remote workflow rather than a one-shot command followed by a blind wait.
Making the change stick
The technical switch also had to overcome habit. Mobile developers were accustomed to local simulators and hands-on testing, and earlier versions of River had left some with the impression that builds were slow or unreliable. Shopify’s internal rollout used storytelling and internal ads, including a parody of the classic Mac versus PC campaign, to show that the new workflow had changed.
The measurable shift was substantial: River initially created only 6% of merged mobile pull requests. That share rose to 61% as local mobile development reversed. The number is not just adoption; it indicates that agent-created mobile changes were reaching a state where humans were willing to merge them.
Building in public inside the company
River is multiplayer by default, so Shopify can learn from how different people use the same agent. The team can see where people stall, where guidance sends them in the wrong direction, and where tool access is rejected.
To make that feedback loop systematic, Shopify used Jev, a fast and inexpensive classifier model. Jev observes mobile River conversations, tags them with several questions, and answers each message. Shopify categorizes conversations by outcome quality and feeds failures to an LLM to find improvements. River then improves itself for future sessions.
What comes next
Remote Dev began as a way to give River a mobile development environment, but it changed three things at once: who can contribute, how teams collaborate, and how much work can be safely delegated. Shopify is now adding workflows that monitor app health in real time and open PRs for crash fixes, ready for quick review. It is also using multiple agents for parallel bug bashes, simulating different merchants across devices, languages, and user flows.
The lesson is that an agent is not merely a model attached to a chat window. It needs an environment with enough isolation to run safely in parallel, enough platform support to build and test real targets, and enough evidence-generating capability to show that the result actually works.
Source: We gave AI agents a mobile dev environment, Shopify Engineering, Oct. 22, 2026.
Source:Shopify Engineeringhttps://shopify.engineering/remote-dev


