Right Ho, Agent
Bertie Wooster never once worked out what to do next, which was fine, because Jeeves always had.
Coding agents poking at Expo apps have been Bertie for a while: booting the wrong simulator, rebuilding when a reload would do, then asking us what went wrong.
Kudo Chien (@kudochien) and Vojtech Novak (@vonovak) just introduced @expo/agent-cli, an experimental CLI "built by agents and designed for agents".
What does it do that npx expo doesn't?
Every command returns an exit code, optional JSON and the next command worth running, so the agent never has to guess.
status works like git status for the native side, telling us whether Expo Go can run the project and whether a change needs a rebuild or just a reload, without launching anything.
dev --ios then picks Expo Go or a development build (our own debug app with the native code baked in), and --plan previews the steps first.
# wire up AGENTS.md and the Expo skills
npx @expo/agent-cli agents:setup
# what changed, and do we need a rebuild?
npx @expo/agent-cli status
# preview the launch, then run it
npx @expo/agent-cli dev --ios --plan
npx @expo/agent-cli dev --ios
# prove the app actually boots
npx @expo/agent-cli smoke --ios
We ran status on a fresh SDK 58 app, and it came back with the next command already written out.

Real terminal output of npx @expo/agent-cli status on a fresh Expo SDK 58 app
Anything else in the pantry?
navigate and runtime:reload drive the running app, and each git worktree gets its own simulator, so parallel agents stop fighting over one iPhone.
It builds on Expo CLI, EAS CLI and expo-doctor rather than replacing them.
Cloud builds are opt-in with --eas, which means no surprise EAS credits.
From SDK 58, installing a package through the CLI also links the agent skills it ships, building on Anthony Fu's (@antfu7) skills-npm.
It's still experimental, so expect the odd change of suit, but our agents finally have a Jeeves, and we get to stay Bertie.
π @expo/agent-cli

Ka-Chow, React Native Hits the Desktop
Lightning McQueen spent a whole film learning that being fast means nothing if you never get off the track.
React Native on desktop has had the same problem: the engine existed, but nobody turned up with a pit crew.
Jay Meistrich (@jmeistrich) just launched Legend Spark, a framework for building real desktop apps with React Native.
What's under the bonnet?
Spark sits on Expo Desktop, an independent project from Jamie Birch (@birch_js) that wires Expo into react-native-macos and react-native-windows.
Screens use React Native's native renderer and JavaScript runs in Hermes (Meta's JavaScript engine built for React Native), so there's no browser hiding inside the app.
On top, Spark adds the desktop parts we'd normally write in Swift: windows, menus, dialogs, files, a tray icon, SQLite and Sparkle (the standard macOS auto-update framework).
import {
openWindow,
showWindow,
} from '@legendapp/spark/windows';
await openWindow({
id: 'inspector',
component: 'Inspector',
title: 'Inspector',
size: { width: 480, height: 640 },
show: false,
});
await showWindow('inspector', { focus: true });
Each window is just a component registered with AppRegistry, opened from JavaScript like a modal that escaped the phone.
Do we need Xcode for the warm-up lap?
No.
npm create @legendapp/spark@next MyApp followed by npm run macos launches Spark Runner (a prebuilt dev app that loads our JavaScript from Metro), with Fast Refresh and no native compile.
Adding a native dependency means a custom dev build, and npm run package signs and notarizes the finished app.
Is it race-ready?
Jay's own Legend apps now run on it, including Diff, Code, Music and Photos.

Legend Diff, a macOS app built on Legend Spark, showing a side-by-side code diff
The docs are honest about the rest: version 0.0.1 targets Expo SDK 54 and React Native 0.81, needs macOS 14 on Apple Silicon, and is "not ready for production".
Windows and Intel Macs are in progress, and Linux isn't supported.
The car is quick and the pit crew has finally arrived, but this is still a practice lap, not the Piston Cup.
π Legend Spark

π¦ React Native 0.88.1
Release builds on iOS now compile with -O2 instead of -Os, so iOS finally gets the same speed-over-size treatment Android has enjoyed all along.
Swift Package Manager users also get a generated xcconfig, which means a version bump no longer scribbles all over your project.pbxproj.
π¦ Unistyles 3.7
Unistyles now gets its own track in the React Native DevTools performance panel, so you can finally see exactly why that theme switch felt sluggish.
It also understands the new 0.88 style props, like the object form of fontVariationSettings, though watch out for one small breaking change to UnistylesRuntime.themeName.
π¦ React Native ExecuTorch 0.11
On-device LLMs get a sampler borrowed from llama.cpp's playbook, constrained decoding and context windows up to 16k tokens.
The phone can now also guess depth, paint over the bits of a photo you'd rather forget, and run a little vector store without ever calling home.
π¦ NativeWind 5 RC 1
The second v5 release candidate lands for Expo 57, with Metro build warnings and a pile of fixes in its CSS engine.
The latest tag still points at v4, so nobody gets upgraded by surprise.
π¦ EAS CLI 27.2
The new eas observe:traces and eas observe:trace commands draw your app's request traces as a span tree right in the terminal.
No more squinting at a dashboard to work out which request ate your startup time.
π¦ Legend List 3.7
scrollToIndex and friends now resolve their promises when the scroll actually lands, instead of resolving early or ghosting you entirely.
There's also a new scrollToKey for jumping to an item by key, even after new rows get prepended above it.
π¦ Maestro 2.12
Xcode 27 ships without Simulator.app, and Maestro now boots simulators anyway, which is a sentence none of us expected to read this year.
It also spots iOS crashes even when the system can't be bothered to write a crash report.
π React Native 0.88 Is Not Enough for iOS 27
Upgrading to 0.88 gives you the SceneDelegate APIs, but your existing app stays on its old AppDelegate until you move it yourself.
Muhittin ΓamdalΔ± walks through the switch and the sneaky black-screen failure, and his sdkbump CLI tells you whether your app will even launch on the iOS 27 SDK.


