Fast-Forwarding Past the 9 A.M. Reminder, Bob Ross Paints Straight to the GPU, and a README That Confesses Its Own Bugs

Issue #6327 October 20264 min read
Fast-Forwarding Past the 9 A.M. Reminder, Bob Ross Paints Straight to the GPU, and a README That Confesses Its Own Bugs

Get the next issue first

Subscribe to the weekly newsletter and the 5-day guide covering the story of React Native, where it is now, and what that means for our future.

Great Scott, Your App Has a Time Machine

Doc Brown needed a DeLorean and 1.21 gigawatts to jump forward in time.

Our QA agents just need to test a reminder that fires at 9 a.m., and right now they sit and wait for it like the rest of us.

Szymon Chmal and Callstack launched Appduct on October 20 to fix exactly that.

What does it actually do?

Appduct turns your running app into an MCP server (the protocol agents use to call outside tools).

You register functions like advance_time, seed_cart or set_feature_flag, and the agent calls them instead of tapping through six screens.

The handlers run your app's own code, so a test starts on the screen it cares about rather than the login page.

Call advance_time with 60 seconds, and the 9 a.m. reminder fires without anyone staring at a clock.

import { useAppductTool } from "@appduct/react-native";
import { z } from "zod";

export function AppductTools() {
  useAppductTool({
    name: "seed_cart",
    description: "Fill the cart with test items.",
    inputSchema: z.object({ items: z.number() }),
    handler: async ({ items }) => ({ added: items }),
  });
  return null;
}

Mount that near the root, and any agent that speaks MCP can call it.

The same tool works in Swift, Kotlin, Flutter and on the web.

Release builds leave it out unless you opt in.

How does the agent know the app is ready?

Instead of sleep(3000) and a prayer, the app posts an event like checkout_completed, and the agent waits for it.

The connection runs through a small daemon on your machine and an encrypted WebSocket, paired with a single-use link (or a QR code on a real device).

For the taps that still need tapping, it pairs with Callstack's agent-device.

Does it work in normal tests?

A day later came @appduct/e2e, which wraps the e2e tests you already have.

One call fills the cart, and the test runner's AI agent gets the same tools.

The same test runs on web, iOS and Android.

1.appduct-e2e-seed-cart.gif

Where our tests are going, they don't need login screens.

πŸ‘‰ Appduct


2.ancient-aliens-proguard-meme.jpg

Happy Little Frames

Bob Ross could turn a blank canvas into a mountain range in half an hour.

React Native video editing usually takes longer, plus a native SDK and a lot of bridge code.

Sebastien Hecart published the first beta of react-native-skia-webgpu-video on October 19.

What is it?

It plays, composes and exports video on top of React Native Skia 3 and William Candillon's React Native WebGPU (the GPU API that Skia 3 now draws through).

Every video frame lands on a Skia canvas, so we can paint text, shapes and filters straight on top.

Frames travel from the phone's decoder to the encoder on the GPU, without a detour through JavaScript.

The trick is that one worklet (a small function that runs off the JS thread) draws both the live preview and the exported file.

const drawFrame: FrameDrawer = (props) => {
  'worklet';
  const { canvas, frames, width, height } = props;
  const frame = frames.clip;
  if (frame) {
    drawVideoFrame(canvas, frame,
      { x: 0, y: 0, width, height }, { fit: 'contain' });
  }
  // Draw your Skia text, shapes, or overlays here.
};

await exportVideoComposition({
  videoComposition: composition, drawFrame, outPath,
  width: 1280, height: 720, frameRate: 30, bitRate: 5_000_000,
});

It picks up where the older Skia Video left off, rewritten from scratch for Skia 3.

Is anyone using it yet?

Giulio Amato has already moved his video editor off Media3 (Android's native media library) and onto it.

Because the same code draws the preview and the export, what we see on the timeline is exactly what lands in the file.

3.skia-video-editor-giulio.gif

What's the catch?

It's a beta, tested on an iPhone 15 Pro and a Pixel 8a.

HDR isn't qualified yet.

It pins exact Skia and WebGPU versions and needs the New Architecture and a native rebuild.

So Expo Go is out.

The README lists its known bugs with refreshing honesty, which is more than most of our side projects manage.

Beta 3 on October 22 already cut a 4K frame on iOS from 33 MB to 12 MB.

There are no mistakes, just happy little dropped frames.

πŸ‘‰ react-native-skia-webgpu-video


4.andy-afraid-to-ask-pod-install-meme.jpg

πŸ“¦ Nitro V1 alpha

Marc Rousavy (@mrousavy) has opened the doors on the first Nitro V1 alpha, so library authors can grab the alpha-nightly tag and start poking at the future.

The same week, his fbjni PR made every call into Java and Kotlin 14% faster, which is a lot of speed for one merged pull request.

πŸ“¦ Radon IDE 1.20

The iPhone Duo simulator now folds right inside your editor, and Radon warns you before you launch an app that iOS 27 is about to crash for skipping the UIScene lifecycle.

πŸ“ Supporting iPhone Duo with Expo

Apple's first foldable landed on Friday, and Expo's guide explains why insets.top is suddenly zero and your tab bar has moved into a rail on the side.

πŸ“¦ React Native Windows 0.85

The legacy architecture has finally been shown the door, so it's New Architecture only from here, and you'll need Visual Studio 2026 to get in.

πŸ“¦ React Native Firebase 27

CocoaPods is out and Swift Package Manager is in on iOS, and the ML package has been laid to rest now that Google has discontinued it.

πŸ“¦ Unistyles 3.6

A new experimental Metro integration lets you ditch the Babel plugin, and plain views now re-render in half the time.

πŸ“¦ Hot Updater 1.1

Over-the-air updates now reach brownfield apps too, and bumping your version number no longer locks you out of shipping a quick fix.

πŸ“¦ React Native Bottom Tabs 1.5

Swift Package Manager support has arrived, along with a new prominent tab role for the one tab on iOS 27 that deserves to stand out from the crowd.

πŸ“¦ create-react-native-library 0.64

Satyajit Sahoo (@satya164) has taken the C++ template out of experimental, so your next native module can be written in C++ without feeling like a science project.

πŸ“¦ React Native Better PDF 1.1

Hand it three PDFs and it stitches them into one document with a single page count and search, which is exactly the trick react-native-pdf can't pull off.

5.bye63.gif

Join 1,700+ React Native developers

Subscribe to the weekly newsletter and the 5-day guide covering the story of React Native, where it is now, and what that means for our future.