RN at MS Office, Offline Apple AI, MCP at Home, Rock×S3, Metro MF, New Testing Framework

Authors
Michał Pierzchala
Principal Engineer
@
Callstack

Hey,

It’s Michał. Welcome to the May episode of our newsletter! Last month was rich with both experimentation and shipping new, sometimes long-awaited functionalities to projects in Callstack Incubator.

And speaking of shipping new stuff, we gave our website—and this newsletter—a fresh coat of paint. New look, same mission: helping you ship faster and scale with confidence using React & React Native, across every platform. How do you like it?

But back to the subject matter. We’ll talk about frameworks, microfrontends, new testing frameworks, and a bunch of news from the React and React Native communities. Let’s go!

Community highlights

  • React Native runs in Microsoft Office: Chiara Mooney goes through how Microsoft uses React Native to implement Copilot—and 40 other experiences—across their Office suite, reaching over 600 million users.
  • React Native Skia v2: macOS support, wide gamut colors by default on iOS, and bug fixes; requires React 19 and React Native 0.78. The team is also working on upgrading Skia to Graphite backend and WebGPU support, with 2-4x performance improvement potential.
  • RN ExecuTorch 0.4.0: Another approach to running ML models and LLMs on-device; this release comes with tool calling, more LLMs available, text embeddings, multilingual speech-to-text and OCR, and image segmentation.
  • React Native 0.80 RC: The next version is in the Release Candidate phase, coming with next-gen TypeScript API, support of radial gradient, React 19.1, redesigned community app template, warnings when the app runs in legacy architecture which is now frozen, and much more.
  • React Router RSC: Preview support for React Server Components comes to React Router, integrating with loaders and actions, Server Component Routes, Server Functions (with "use server"), and client components (with "use client"). It will become stable as soon as RSC support lands in Vite.

Callstack Incubator highlights

React Native AI and MCP

The AI squad at Callstack Incubator was busy sharing knowledge on how the technology that powers on-device LLMs—MLC—works, how you can use MCP to control your friend’s home with Claude (if they let you), and how it compares to USB-C.

And right off the press, they’re cooking early support for the new Foundation Models API introduced at WWDC for iOS 26—as always, using the familiar AI SDK by Vercel.

New FoundationModels API for running on-device AI by  is working with react-native-ai and @aisdk 🔥🔥 pic.twitter.com/5Rq8kOSb3z

— Szymon Rybczak (@SzymonRybczak) June 10, 2025

Mobile microfrontends and Metro and Re.Pack

Last month, we introduced you to a pretty exciting project that Jakub, the maintainer of Re.Pack, has been recently working on: support for Module Federation in Metro. And he’s not slowing down, delivering more and more functionality, such as code-splitting for remotes (yes, not only in development) or shared dependencies, so that Metro MF can reach feature parity with Re.Pack at the end of June.

Module Federation in Metro update:

Code-splitting of remotes & shared dependencies achieved 🎉

💡 Both confetti and button are exposed remote modules while lodash is a shared dependency with eager set to false - meaning it is not placed in the container (mini.js)✨ pic.twitter.com/GXycskgH8J

— Jakub Romańczyk (@_jbroma) May 16, 2025

And while contributing to Metro, he also delivered Re.Pack 5.1 with a powerful runtime hooks system, persistent cache, preloading remotes, and more.

✨ Re.Pack 5.1 is out! @repack_rn ✨

Here’s what’s new:
◆ Preload Module Federation 2 remotes
◆ Runtime hooks system
◆ Experimental persistent cache
◆ Package Exports/Imports support
...and more!

We’ve prepared a full blog post to walk you through it all 👇 pic.twitter.com/6TW85td5lJ

— Jakub Romańczyk (@_jbroma) May 14, 2025

Rock

We promised and delivered: storing APK and IPA binaries on S3 is now generally available for all Rock users. And since Cloudflare’s R2 is largely compatible with S3, we support that as well with the same API. We also released caching of local builds, so the next time you build the same project locally and change JS only, it will be pulled from the disk cache.

Finally @rnef_dev is off the GitHub artifacts leash. Next week we're shipping S3 remote cache provider 🫡

You can store your APK, AAB, APP, and IPA binaries on your favorite storage, seamlessly integrated with RNEF CLI pic.twitter.com/sNVapTpFyL

— Michał Pierzchała (@thymikee) May 23, 2025

We wrote a small piece on our blog about the react-native-legal project, which we announced a while back. What’s more exciting is that the project itself grows with new functionality and packages. Now, you can experimentally run the license-kit CLI to list licenses and check for usage of copyleft libraries in your code. It’s super easy to integrate with your CI actions, and we start to run these checks for every commit in some of our OSS projects.

ICYMI: we’ve automated generating OSS license acknowledgements so you don’t have to.

Check `react-native-legal`, a zero-config library that handles that for iOS, Android, and TV platforms 👇 pic.twitter.com/ba5zi01agg

— Michał Pierzchała (@thymikee) May 13, 2025

New E2E testing framework

Szymon, our new team member, is working on something quite exciting (as a former Jest maintainer, I’m pretty biased here): a new end-to-end testing framework for React Native that allows you to run and preview your components in a real environment—no more mocking of native packages. You’ll be able to test your apps and libraries with this tool.

I’ve lost count of how many times I wished I could render a single component in a native environment - just to test a runtime behavior or grab a screenshot for snapshot comparison.

Time to finally make that possible 👀 pic.twitter.com/PMnv0wuGko

— Szymon Chmal (@ChmalSzymon) May 14, 2025

In addition to all of that, we released the following content pieces last month:

Blog

  • Multithreading Isn’t Free: Performance Pitfalls Visualized by Mariusz Pasiński: This post demystifies multithreaded perf issues in C++ using Tracy. But even if you don’t write C++, the patterns and gotchas apply across the board.
  • Meet react-native-ai: LLMs Running on Mobile, for Real by Szymon Rybczak & Kewin Wereszczyński: react-native-ai brings on-device AI to React Native apps. Built on MLC and the Vercel AI SDK, it offers a web-like dev experience—with native performance.
  • New in Re.Pack 5.1 by Jakub Romańczyk & Szymon Rybczak: Module Federation preloading, runtime hooks, persistent caching, and more. This post covers everything new in Re.Pack 5.1, plus some major performance wins.

Podcast and videos

  • React Universe On Air Coffee Talk #27 You Don’t Need a Rewrite, You Need React Native Brownfield: Burak Güner and Oskar Kwaśniewski explain how modern React Native Brownfield integration enables cross-platform power in native apps, without rewriting from scratch.
  • React Native Optimization in Practice Episode 1: Auto Memoization with React Compiler: Ever wished you could skip writing all those React.memo() wrappers? In this episode, yours truly breaks down how React Compiler brings auto memoization to React Native—reducing re-renders and improving performance, without you having to lift a finger.
  • React Native Optimization in Practice Episode 2: Why You Should Use Dedicated SDKs: In the second episode, we break down a common (and costly) mistake: using familiar web libraries in React Native apps. While generic-purpose JS libraries might be quick to integrate, they’re not built with mobile performance, UX, or reliability in mind.

Webinars and live streams

Talks

Where we’re heading

We’ve concluded a planning session for Q3 and, boy, we’re excited! Expect more AI tools that support developers, rethinking client-side observability, new approaches to test React Native libraries and apps (we mentioned it in Incubator Highlights), playing with navigation paradigms, and much more.

Upcoming events

  • Mike at React Summit Amsterdam on June 13: our CTO takes the stage at React Summit Amsterdam to share insights on Building Cross-Platform Federated Modules with React, React Native, and Re.Pack. Come by if you're in town!
  • React Universe Meetup: New York on June 24: We’re bringing React Universe Meetup to NYC! Expect talks on scaling full-stack mobile apps, modern brownfield integration, and observability at scale. RSVP here—we’d love to see you!
  • Vercel Ship: After the NYC meetup, we’re heading straight to Vercel Ship. If you're attending, DM us—we're always up for a coffee or code chat.

React Universe Conf: 3 months to go!

We're full steam ahead prepping for React Universe Conf this September in Wrocław—and the lineup is already looking hot!

  • New speakers: Zackary Chapple (Zephyr Cloud) and Adam Mruk (Klarna) will share hard-won lessons from scaling React Native in complex environments. Check their talks.
  • Applications for Diversity & Volunteer programs close in June. Apply now if you haven’t yet!
  • Workshops are coming soon—stay tuned for the full announcement.
  • Special offer for you: Use code CK15 at checkout for 15% off tickets—exclusive to our newsletter readers. Valid through June only!

That’s it for May! Hope you found something useful, inspiring, or at least mildly entertaining.

Until next time—cheers!

Michał

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.