Plain White Tees in React Native, Meta’s Muse Code, and Making It to the Pub by 6 PM on a Friday

Issue #5210 August 20265 Minutes
0.sell-me-this-pen-agent-meme-square.jpeg

(Wolf of Wall Street - Sell Me This Pen)

Hey There Delilah, What's It Like at Sixty Frames?

It’s been a PLAIN week for React Native.

August always is.

People are too distracted by the sun and suspicious parents

What was the other thing?

Anyways…

On this plain week, a new plain text component has come to React Native.

React Native Plain Text by Maciej Jastrzębski (@mdj_dev) is a faster, lower-memory alternative to React Native's <Text> for simple, single-style text, so most of the text in your app. Unless it’s some sort of new-age cyberpunk hook-up app…

But for NORMAL apps, most of your text will be single-style text.

1.rn-plan-text-hello-world.jpg

So you may ask why use plain text and add another dependency to my application…

When I can just use the text which comes with React Native?

Well... the answer to that, my dear friend, is…

Money.

Sweet, untraceable, sponsor money.

No, we are joking; it’s Performance.

Plain Text mostly matters when you are trying to optimise large lists of text; say you had a list of 100s of items, you may be at a point where you are trying to squeeze every possible performance gain like squeezing into a middle seat on a Ryanair flight.

Here are a few benchmarks on rendering A LOT of text.

2.rn-plain-text-performance.jpg

Of course you don’t get performance improvements without tradeoffs, my friends.

Currently, React Native Plain Text only supports a subset of styling properties and props.

But that is kinda the point, isn’t it?

Like a plain white-tee, it’s probably not going to get you a date.

But at least it’s fucking consistent.

👉 React Native Plain Text


3.codemagic-advertisement.jpg

Win a Year of Unlimited CI/CD Build Minutes ($3,990 Value)

For years, CodePush was how React Native shipped OTA updates.

Then Microsoft retired App Centre in March 2025, and CodePush went read-only with it.

The Codemagic team ran a fork for 18 months. Then they rewrote the whole thing.

Codemagic Patch is what CodePush should have been:

➡️ CDN-first delivery ➡️ Binary diffs ➡️ Native fingerprinting ➡️ An actual dashboard (Did you say Dashboard!?) ➡️ Easy to self-host, source on GitHub

Patch comes from Codemagic, the CI/CD platform built for mobile teams.

And to celebrate the launch, they're giving away a year of unlimited builds on M2 Macs (their Annual plan, worth $3,990).

To enter, just join the Codemagic Discord. The team is in there and happy to walk you through it, answer questions, and help you figure out if it fits your setup.

👉 Join the Discord before September 14th.

Winner drawn September 15th.


4.the-agent-cat.jpeg

Zuck Wants To Be In Your Terminal

The race for the best terminal-based coding agent continues…

With a new terminal agent hitting the block called Muse Code.

And… before you get ahead of yourself.

Muse Code is not a coding agent released by Alternative Rock Band Muse

Although in 2026, I'd say that would actually be a solid play.

It's a coding agent released by Meta.

Installation is one line of curl piped straight into bash, which is the new standard for consent.

Captura de pantalla 2026-08-10 a las 17.39.46.png

It runs on Muse Spark 1.2, their newest model.

How good is it?

Second place, mostly.

5.muse-benchmarks.jpg

The part worth understanding is what it does with subagents.

Most harnesses (the program wrapped around the model: the terminal app, the tools, the loop that feeds results back in) spawn a subagent, it does one task, it dies, and the next one starts by reading the same files all over again.

Muse Code keeps a set of background agents alive for the entire session instead.

They carry out next steps and pick their own moment to report back, so nothing has to rediscover your folder structure every twenty minutes.

Underneath that sits a local event log.

Every model call, tool run, approval and edit gets appended to it, which makes a run replay-exact (the whole sequence can be reconstructed step by step) and restart-safe.

Kill the process, and it resumes precisely where it stopped, rather than cheerfully starting your task again.

Most agents can already pick a session back up.

The difference Meta is claiming is recovery mid-tool-call rather than mid-conversation.

It also ships with a few built-in commands.

/plan turns a task into an approval-gated plan, /goal keeps it pointed at the objective, and /grill cooks you a steak and delivers it to your door stress-tests that plan until it holds up.

It's beta for macOS and Linux.

Muse Spark 1.2 is available inside Muse Code and through the Meta Model API.

Still…

A framework you build apps in and the agent now writing it come from the same building.

The band remains uninvolved.

👉 Muse Code


6.friday-evening-ota-meme.jpeg

Patch, A Developer’s Best Friend

And it is not your 101st Dalmatian puppy.

It’s Friday, at 17:30 pm.

You were about to wrap up and go out to meet some friends.

Then, an annoying sound…

Slack message.

It’s HR in the general channel.

A dog-in-a-burning-house meme later…

Every user who taps Save is getting a red toast that says:

[object Object]

Nothing is actually broken.

The save works, but you handed the whole error object to a template string instead of error.message.

You wave your fist in the air and blame Claude.

Now I need to compile, upload, wait, and submit to the app sto…

Then you remember!

You don’t need a new binary for this. A binary is the compiled app itself. That is what OTA updates are for: shipping new JavaScript code and assets straight to an app people have already installed.

CodePush did exactly this from 2015. It became the standard React Native OTA workflow, and then Microsoft retired it along with App Centre in March 2025.

Which brings us to Patch, from Codemagic.

It is one Docker Compose file.

You run it on whatever box you are already paying for.

Codemagic load-tested theirs on a single DigitalOcean droplet, which gives you a rough idea of how much infrastructure it needs.

So you fix the error message.

You send the update to 10% of users first because it is Friday.

7.ota-dashboard.gif

Ten minutes go by, nothing catches fire, and you roll it out to everyone.

If the new bundle does not boot, Patch restores the previous one automatically the next time the app launches.

The setup is straightforward, and the readme is THOROUGH.

You can even give it to your best friend Claude to read.

We added it to Jameet, our jam-session app, in an evening.

Install it, add a block to app.json, call sync() somewhere near the top, and prebuild.

You will need Docker and a reasonably recent version of Node.

After that, releasing an update is one command:

cmpatch release-react --app jameet-ios --deployment Staging --platform ios

The interesting part is how Patch handles update checks.

Say your app has one million users, and 100,000 of them open it around the same time after you announce an update.

That means 100,000 phones asking, “Is there a new version for me?”

A traditional setup may send each question to a server, which then checks a database before answering. Patch puts the answer in a small JSON file on a CDN instead, so every phone reads the same cached file without involving the server or database.

Codemagic tested both approaches at 1,000 requests per second. Patch handled all 6,331 requests in the test. The database-backed alternative completed 564, while the other 5,767 remained queued.

8.hotupdater-ezgif.com-optimize.gif

Patch did that while running on a single DigitalOcean droplet.

It will not save you from everything.

Change anything native, and you still need a normal store release.

Patch also has to be included in a build people have already installed, so the first release is still a real build.

Anyway.

It’s Friday.

Get to the Pub already!

👉 Codemagic Patch

This section was sponsored by Codemagic.

SeeYaGoodbyeGIFbyWorkingTitle1-ezgif.com-optimize.gif
Gift box

Join 1,500+ React Native developers. Plus perks like free conference tickets, discounts, and other surprises.