Agent Device, React Native 0.85, Expo UI, Skillgym, and React Native Evals

Authors
Michał Pierzchala
Principal Engineer
@
Callstack

Hey,

It’s Michał shipping this newsletter from Miami 🌴 as our team travelled for AI Engineer and React Miami conferences, hence a little delay, but hey, it’s here and you’re reading it! 

As always, we have a bunch of updates from the React Native community and Callstack Incubator in March and mid April.

As we produce more code with Codex and Claude, we naturally gravitate toward writing more about AI tooling that we build, hope you enjoy it (if you do, star the projects on GitHub. Our friends and yours truly will appreciate it).

‍

Community highlights 

  • React Native 0.85: this version brings the new Shared Animation Backend into core, unlocks animating layout props with the native driver, allows multiple simultaneous CDP connections for DevTools, VS Code, and AI agents, and adds Metro TLS for secure local development.‍
  • Reanimated 4.3 and Worklets 0.8: add CSS-style SVG animations, including path morphing, and reworks Shared Values to use a new worklets primitive: Shareable. That means we can finally use Shared Values from other Worklet Runtimes than just the UI Runtime.‍
  • Expo UI for Android in SDK 55: following the iOS support, Expo UI now also supports Jetpack Compose (promoted to beta) and aligns with Apple’s naming and conventions you know from Swift UI. Now, who’s building a component library that renders these two under the hood?‍
  • Agent React DevTools: giving agents access to the live React component tree, profiling data, commits, and render hotspots, all in a token-efficient manner is becoming more important than ever, now that agents write and debug more code for us. And now they can access all of that in a single CLI + skills.‍
  • React Native Ease: a new animation library that skips the usual shared values / worklets setup and maps prop changes straight to native animation systems on iOS and Android. It features: fades, transforms, colors, border radius, enter/exit transitions, all with very little code and no JS thread involvement once the animation starts. It’s not trying to replace Reanimated for gestures or complex choreography, but it could replace a surprising amount of animation code people write today.‍
  • Skia Graphite Preview: Shopify started exposing Skia’s next-generation GPU backend, Graphite. This is still highly experimental, but this is where a lot of future graphics work is heading: modern GPU abstractions, alignment with Metal/Vulkan/WebGPU, and even faster 2D and 3D rendering in React Native, which is pretty quick already with Skia.

Callstack Incubator highlights  

 

Agent Device

 

The CLI for agents to control mobile iOS and Android devices got quite a few upgrades over the last few weeks. We’ve added new targets to explore and control with agents: AndroidTV, Apple tvOS, and also desktop support with macOS and Linux. All built on the same original idea that powers agent-device on mobile: accessibility snapshots that agents can easily reason from.

agent-device can now control your macOS apps

» npm i -g agent-device@0.10.0 pic.twitter.com/6QD1dFZNBb

— Michał Pierzchała (@thymikee) March 23, 2026

Thanks to a community contribution from our own Danny Williams, we’ve added screenshot diffing functionality, which at first seemed like a nice feature for humans to quickly get an idea on how a reference image is different from the current app screenshot.

But based on Mike’s exploration in automating brownfield migrations, we noticed an opportunity for the diff command to be helpful in iterating over getting from design to code, while having the percentage difference as a guideline for agent whether they are moving in the right direction.

While helpful at first, the visual information was too hard for agents to reason about texts, font size, icons, etc. We’ve revamped the diff screenshot command to provide extra hints to agents that can be inferred from the source images, such as regions of interest or text labels, imagery, and for some cases even how many pixels they’re off from the original.

This extra information is provided as structured text and helps agents avoid extra unnecessary iterations to nail the design in a pixel-perfect manner.

New in agent-device: image diffs are now visual + machine-readable.

Agents can tell:
→ where the change happened
→ text movement vs visual change
→ which part of the screen changed

From “close enough” to “Wi-Fi moved 17px”.

This cuts design→code iterations by 40–60%. pic.twitter.com/iCtLfEkub1

— Michał Pierzchała (@thymikee) April 12, 2026

Oh and remember that you can efficiently debug performance of any native and React Native app with agent-device. Use the latest v0.14.2 for the best results as we ship and update this project frequently!

Last week this session took 9 minutes and 150k tokens on Opus 4.6.

Complex app navigation, network debugging, perf profiling on a production app. Justified, right?

Not really. Same session today: 69k tokens. 6 minutes. Less than half.

Here's how 🧵 pic.twitter.com/RkZPYNZQvS

— Michał Pierzchała (@thymikee) April 2, 2026

In the latest version of agent-device: the iOS Simulator no longer steals focus from your current window.

No need to watch your agent work while you're busy with other stuff pic.twitter.com/Ewv34oN8Aw

— Michał Pierzchała (@thymikee) March 30, 2026

New in agent-device: image diffs are now visual + machine-readable.

Agents can tell:
→ where the change happened
→ text movement vs visual change
→ which part of the screen changed

From “close enough” to “Wi-Fi moved 17px”.

This cuts design→code iterations by 40–60%. pic.twitter.com/iCtLfEkub1

— Michał Pierzchała (@thymikee) April 12, 2026

Last but not least, you can run agent-device not only locally, but in the cloud as well. Here are two options available today:

  • on CI machines with virtualization, such as Expo EAS Workflows (guest blog post) or GitHub Actions.
  • on any Linux VM when connected to a hosted instance on a macOS machine - contact us if you’d like to learn more.

React Native Evals

Our suite of evaluations for coding React Native apps got quite popular after Composer 2 model from Cursor nailing it with 96% score and gaining the first place.

Since then, the team was hard at work to add 2 new categories, 4 new models, and a bunch of automations so we can add new models quickly, like we did with Opus 4.7 providing a benchmark for it one day after the public release. We consider this project only the beginning, and would love to make it the most comprehensive benchmark for agents generating React Native code. It’s open source and we encourage you to add more, and more complex, cases that you see agents often fail to accomplish up to the latest standards.

We evaluated Composer 2 in our React Native evals, and I'll say this: the @cursor_ai team is cooking 🧑‍🍳 pic.twitter.com/uSF7pAxnwW

— Mike (@grabbou) March 24, 2026

React Navigation

Satya spent a lot of effort on getting the native navigation to work well on iPads. And he’s experimenting with convenience methods to retain the screen state between transitions.

Native iOS split view is coming to React Navigation 🔜
Powered by React Native Screens 🫶

Let us know your use cases so we can test and ensure that the API is suitable for a wide range of usage 👇 pic.twitter.com/J1rsRhLqko

— React Navigation (@reactnavigation) March 31, 2026

Also, remember about using Static API where possible with React Navigation 8 for better type safety, deep links, and less boilerplate. The new Static API is very different from the one in v4. It's built on the dynamic core that React Navigation 5 brought, so it has a lot of dynamism built-in.

If you are building a new app or boilerplate in 2026 and use React Navigation, please use the Static API.

We have done a lot of work to reduce boilerplate further and improve TypeSafety in React Navigation 8.

Unless you really need to build the list of screens dynamically at… pic.twitter.com/nvh4JR6mVl

— React Navigation (@reactnavigation) March 25, 2026

React Native Brownfield

The brownfield team is not slowing down. Since the last newsletter in v3.5 they shipped stable Android support for Brownie: a bi-directional type-safe state management library to share data between native and React Native, a crucial part of any long-lasting brownfield migration. With that, Brownie became a stable part of the React Native Brownfield project family, which gives you the best tools available for incrementally adding React Native to existing apps.

Type-safe shared state for React Native brownfield apps: now across iOS and Android (with Kotlin support).

Less glue code, fewer mismatches. Take a look 👀

Link to the full article below 👇 pic.twitter.com/qhmmFvNwIl

— Callstack Engineers (@callstackio) March 31, 2026

Since a lot of our clients choose Expo as their go-to framework and want to have a stable OTA updates solution, we’re improving the integration released in v3 of the library. I’m super excited that internally we’ve achieved Expo Updates support, which is the most popular OTA service out there, and working together with Expo to make it first-class without any workarounds (which we temporarily need to make).

Dropping 🔜

Expo Updates in Isolated brownfield 👨‍🍳 pic.twitter.com/xOER7Qc1Lk

— Hur Ali (@hurali97) April 10, 2026

Voltra

Szymon keeps on releasing new functionality for his live activity and widgets library. Most notably, Android now supports rich notifications similar to iOS, together with server-driven over-the-air updates and we’ve seen users already utilizing these in their apps. At this point, Voltra is getting closer to a complete project that will likely soon be promoted to the Callstack org on GitHub.

Voltra is getting support for rich notifications on Android, along with over-the-air updates - just like on iOS today 🤖 pic.twitter.com/Q0cmuosSJF

— Szymon Chmal (@ChmalSzymon) April 7, 2026

Charts and Server-driven widgets for Voltra!https://t.co/zBKoRsbKsw

Together with @ChmalSzymon recently we merged a bunch of PRs that introduces Charts to both Android & iOS. On iOS we use Apple's native SwiftUI Charts framework, but on Android, since Jetpack Glance has no… pic.twitter.com/Yp32S5oaRS

— Dorian Mazur (@dorian__mazur) March 19, 2026

Harness

VisionCamera V5 is tested using React Native Harness on AWS Device Farm, it’s pretty cool. Call us if you need similar setup necessary for your e2e tests running on real devices 🤙

This release is also special for another reason: it is most likely the first React Native library ever tested with React Native Harness on AWS Device Farm. It took us some time to smooth out the rough edges, but in the end, it came together really nicely 🎉 https://t.co/LrOwRzPty8

— Szymon Chmal (@ChmalSzymon) April 16, 2026

Skillgym

Skills are becoming a universal way for teaching agents about how to use tools, projects, or best practices efficiently. If you’ve ever created a skill and changed it over time, you probably had this thought: did this change really improve the outcomes of agents, and which agents, or not? There’s no standardized way of testing skills, but we don’t see it as an excuse not to build one.

We've launched Skillgym.

It lets you test agent skills to see if they load at the right moment and whether they guide the agent the way you intended during a session.

Check it out ⬇️ pic.twitter.com/feDDVlpcYC

— Mike (@grabbou) April 20, 2026

And for that reason, Szymon created skillgym - a testing framework for testing skills. You write a prompt, include expectations about the output of an LLM, and check if it got it as you intended (e.g. it loaded a particular CLI command with correct flags). What’s equally important, you can test it using various agent harnesses and models, to figure out whether e.g. GPT mini or haiku will be able to attend to the instructions better or worse.

Try skillgym on your skills and let us know what you think! It already powers over 60 skill tests in agent-device and allowed us to improve results dramatically for cheap models such as GPT Mini or Claude Haiku.

testing skills like a boss now thanks to @ChmalSzymon

new project dropping 🔜 pic.twitter.com/IKXD4J4mli

— Michał Pierzchała (@thymikee) April 9, 2026

React Native core contributions

Kamil is getting closer to finalize CSS calc support in React Native. A few smaller PRs landed in both Yoga and React Native, and there are a few more to go. Apart from basic calc support for width, height, etc, it now composes into more CSS properties, animations, and transitions. It’s both an exciting and humbling contribution as getting a small functionality like this may take many months to ship in the React Native core.

Another update on calc() support in React Native:

Not only for layouts, you can use calc() wherever you'd normally use a number or dimension value. pic.twitter.com/4P6EK5M1RL

— Kamil Paradowski (@_ikswodarap) April 8, 2026

Blog

  • How We Optimized Agent Device for Mobile App Automation by Michał Pierzchała: AI agents are powerful tools for mobile automation, but running them can get expensive and slow if they consume too many tokens. In this post, we break down how we optimized Agent Device to cut LLM token usage in half and speed up execution by 33%.
  • Agents Commander: A Lightweight Interface for Multi-Agent CLI Workflows by Lech Kalinowski: Agents Commander introduces a practical way to manage multi-agent environments directly in the CLI. With a minimal communication protocol, it enables agents to collaborate without complex infrastructure or rigid APIs.
  • Brownie: A Type-Safe Shared-State Workflow for Brownfield React Native by Hur Ali: For teams embedding React Native into existing native apps, Brownie reduces state-management glue code at the integration boundary. One TypeScript schema drives shared state across React Native, iOS, and Android with a workflow built for production use.
  • Announcing Codex Plugins for React Native Development by Mike Grabowski: Skills work well in isolation, but most React Native work spans multiple concerns at once. This post covers how plugins bundle related skills into a single installable package, and walks through two we're releasing today: one for React Native development, one for testing with device automation.
  • RAG Is Dead. Long Live Context Engineering for LLM Systems by Lech Kalinowski: Not every LLM system needs a full RAG stack. This article shows when structured context injection can replace retrieval pipelines, reducing complexity, latency, and operational overhead.
  • From Brownfield Complexity to AI-Supported React Native Migration by Hur Ali: Brownfield migrations often fail due to ordering and integration gaps, not framework limits. This article explains how an AI-supported workflow helps enforce correct sequencing across packaging, startup, and runtime validation.
  • A Practical Guide to LLM Model Naming Conventions by Lech Kalinowski: The same LLM can appear in many variants because different hardware environments require different numerical precision. This article breaks down quantization, explains model naming conventions, and shows how deployment constraints shape model formats. Explore how quantization impacts performance and infrastructure costs.

Talks, Webinars & Live Streams

‍

  • AI-Assisted Migrations to React Native: From Months to Days recording

  • Expo UI with SwiftUI and Jetpack Compose in Practice recording

  • Agent Device, AI workflows, and Mobile Testing in Practice recording

  • React Native 0.85: Animation Backend and Key Updates recording

  • ‍ by Artur Morys-Magiera

‍
Upcoming Events

React Universe Summit NYC

‍

A quick reminder: React Universe Summit lands in New York City on June 23, 2026. It will bring together 200+ engineering leaders focused on how AI is reshaping React Native in production.

Since our last update, the first speakers have been confirmed, so if you have been wondering what this day will be about in practice, here is who you’re going to see:

Seth Webster, Executive Director of the React Foundation, led React through the concurrent rendering era and the shift to Server Components, helping establish it as critical infrastructure.

Chris Trag, Head of Evangelism at Amazon, builds global developer ecosystems and platforms, working with teams creating apps and games across Alexa+, Fire TV, Ring, and Echo.

Keith Kurak, Developer Success Engineering Manager at Expo, works directly with teams building and scaling React Native apps, focused on what it takes to ship and operate in production.

Sandra Jurek, Senior Lead Software Engineer (VP) at JPMorgan Chase & Co., leads the mobile platform and front-end architecture of the Chase app and drives the React Native chapter.

Michael Khirallah, Senior Director of Engineering at DirecTV, leads multi-platform React Native streaming applications across TV, mobile, tablet, and web, with a focus on performance and architecture at scale.

Together, they reflect the spectrum of decisions teams are making today, from architecture and platforms to developer experience and delivery at scale. Book your spot now to join the conversation or reach out to us to discover Partnership Opportunities.

 KLJS x React Universe Meetup

KLJS x React Universe Meetup is coming to Kuala Lumpur on May 5th at 7:30 PM, hosted at Ryt Bank.

This in-person session focuses on how React Native performs in real production environments. Expect practical insights from teams working on live systems.

Thim Yun Lee (Senior Engineer at Ryt Bank) will share what it takes to build and run a digital bank on React Native.

Hur Ali (Callstack) will walk through migrating native apps using AI-assisted workflows. Follow us for the third speaker announcement.

Join us for an evening of focused talks and open conversations with engineers working hands-on with React Native.

Save your seat.

Agent Conf

Our second big event takes place in Warsaw on September 17–18, 2026. It brings together engineers, founders, and product teams working with AI agents in real-world systems.

Since our last update, the first speakers have been confirmed. Here is who’s joining us in Warsaw:

Tejas Kumar who has spent over 20 years building for the web, from Spotify to Vercel to Xata, while helping teams understand how developers think, learn, and build.

Kent C. Dodds who is a full-time educator focused on helping developers build quality software, with years of experience across workshops, open source, and teaching core JavaScript and React concepts.

Kitze, who is known for building, shipping, and sharing the process openly, including what works, what doesn’t, and what’s worth trying.

Levan Kvirkvelia, who has spent years building products for real users, from scaling a product to 2 million users to co-founding Rork.

Nader Dabit who has worked across cloud, AI, web, blockchain, and mobile, with a focus on helping developers understand how to apply these technologies in practice.

David Mokos who is a YC alum who built SteerCode, the first mobile AI app builder on the App Store, later acquired by Expo. Now he works on agentic products within Expo.

Book your ticket here: https://www.agent.sh/

‍

Insights

Your next read or watch starts here

Building a Software Factory: Write Specs an Agent Can Build From — cover

Nov 6Article

Building a Software Factory: Write Specs an Agent Can Build From

Learn how to research requirements, resolve open decisions, and write testable specs that AI coding agents can implement without the planning conversation.

 Large-Scale Migrations With Coding Agents: Planning, Verification, and Rollback — cover

Nov 4Article

Large-Scale Migrations With Coding Agents: Planning, Verification, and Rollback

Plan codebase migrations with coding agents using reviewable requirements, verification checks, staged rollouts, and defined rollback criteria.

Conversational Banking: From Customer Questions to Authorized Actions — cover

Nov 2Article

Conversational Banking: From Customer Questions to Authorized Actions

Explore conversational banking architecture through a card-dispute example, covering tool access, authorization, execution, observability, and human handoff.

How AI Agents Can Cut Manual QA by 30% — cover

Oct 30Article

How AI Agents Can Cut Manual QA by 30%

Explore an agentic QA workflow targeting 30% less manual effort across mobile, web, and TV, with test selection, failure triage, and validation.

Building a Software Factory: The Night My Agents Waited for Me — cover

Oct 28Article

Building a Software Factory: The Night My Agents Waited for Me

Learn how permissions, review limits, and missing product decisions stalled two overnight coding agent runs, and how their maintainer revised the workflow.

Your AI Coding Agent Still Needs an Architecture — cover

Oct 22Article

Your AI Coding Agent Still Needs an Architecture

Use explicit contracts, behavior tests, and dependency checks to guide AI coding agents and review their changes through a TypeScript favorites example.

cover

Oct 15Live Stream

Who Left the Agents Running? React Native Software Factories

Join Kewin Wereszczyński and Szymon Chmal to explore what can go wrong in a React Native software factory overnight and the controls that keep agents on track.

cover

Oct 14Podcast

When Coding Gets Faster, What Breaks Next?

Matt Hargett explains how AI moves bottlenecks across testing, deployment, infrastructure, support, and the rest of software delivery.

cover

Oct 13Podcast

MCP and Supervisor Agents in eBay's Monitoring Workflow With Leonel Candido da Silva

Leonel Candido da Silva explains eBay's agentic monitoring workflow: specialized agents, MCP, PagerDuty reports, and plans to learn from past incidents.

cover

Oct 12Podcast

AI Agent Observability With Ivana Huckova and Sven Großmann

Grafana's Ivana Huckova and Sven Großmann discuss AI agent observability, coding-agent costs, PR analytics, secret redaction, and local guardrails.

cover

Oct 7Talk

Automating Mobile QA with Cloud Agents

Michał Pierzchała shows how cloud-based QA agents can test real iOS and Android user flows and bring screenshots, recordings, and logs into pull requests.

cover

Oct 1Live Stream

Can Jev Make AI Agent Decisions Faster?

Explore Jev with Kewin Wereszczyński and Szymon Chmal: how it works, its approach to faster agent decisions, and possible local alternatives.

cover

Mar 19Tutorial

The Hard Way vs. The React Native AI SDK Way: Stop Writing Custom Modules for Every Model

Learn how React Native AI uses a unified provider model to switch between cloud and on-device LLMs without rewriting application logic, enabling reliable AI experiences online and offline.

cover

Mar 12Tutorial

Build Smarter Apps: Tool Calling & AI Orchestration Explained

Learn how on-device models in React Native can call tools, interact with external APIs, and return structured outputs you can use directly in application logic.

cover

Mar 5Tutorial

MLC LLM + React Native: On-Device AI Without the Pain

Learn how to run third-party on-device LLMs in React Native using MLC LLM. Choose your models, run them efficiently across platforms, and keep a unified JavaScript API with React Native AI.

cover

Feb 24Tutorial

Intelligent Fallbacks with Apple Intelligence in React Native

Learn how to use Apple’s built-in Foundation Models in React Native apps, reduce memory usage, and enable fast, fully on-device AI with React Native AI Apple.

cover

Feb 10Tutorial

What Is the React Native AI SDK? A Complete Intro & Quickstart

Learn why on-device AI matters for React Native apps, how local LLMs behave offline, and what problems React Native AI is designed to solve from day one.

cover

Jan 29Tutorial

Implementing an Android TurboModule with Kotlin

Learn how to implement a React Native TurboModule on Android, from the TypeScript spec and Codegen to the Kotlin implementation and package registration.

cover

Jan 19Tutorial

Working with Different Threads in Swift TurboModules

Learn how JavaScript, native module, background, and main threads interact in React Native TurboModules, and how to use GCD queues to run async work safely in Swift.

cover

Jan 9Tutorial

How to Add Type-Safe Constants to Swift TurboModules

Learn how to expose typed, immutable constants from a Swift TurboModule using Codegen, and get full end-to-end type safety between native and JavaScript.

cover

Dec 30Tutorial

Adding Event Emitters to Your TurboModule in Swift

Learn how to emit native events from a Swift TurboModule and subscribe to them in JavaScript, including proper memory management and Codegen integration.

cover

Dec 22Tutorial

Writing Your First TurboModule in Swift

Learn how to build a fully working TurboModule in Swift, integrate it with Codegen, and bridge it through Objective‑C inside an Expo app.