Custom SwiftUI Modifier with Expo UI

Beto, April 2026

Expo UI just unlocked something React Native developers have been waiting on for years.

You can now extend Expo UI with your own custom SwiftUI views and modifiers.

A view modifier is a method you chain onto a SwiftUI view that returns a new, modified version of that view (for example, .padding() or .foregroundColor(.red)). Think of them as reusable custom styles and animations.

Until now, you were stuck with whatever views and modifiers Expo shipped. That ceiling is gone. If SwiftUI can do it, your React Native app can do it.

I tested it on Inkigo, my AI tattoo app doing ~$650/mo MRR, by building a reusable rotatingBorder modifier. Drop it on any Expo UI view, chain it like any other modifier, get an animated gradient border.

New to local Expo modules? Start with Extending Expo UI with SwiftUI, then come back.

The modifier

This is a standard SwiftUI ViewModifier with one extra thing: it conforms to Record, and its props are declared with @Field. That's what lets Expo UI pass JS values into Swift.

After registering and exporting the modifier, you can use it on any Expo UI view like you would any other modifier:

import { rotatingBorder } from "@/modules/animated-input";
 
// ... rest of the view
 
<VStack
  modifiers={[
    rotatingBorder({
      isActive: true,
      tint: Color.ios.systemOrange,
      lineWidth: 1,
    }),
  ]}
/>;

What about Android?

I asked Nishan on the Expo UI team about parity. He confirmed he's working on the equivalent for Jetpack Compose, so you'll be able to extend Compose views the same way you extend SwiftUI ones today. It's still a work in progress, but Android is getting the same treatment.

A heads up before you ship this

Expo UI is still in beta and changes are landing aggressively. APIs will move. Don't put custom modifiers in production yet, but absolutely play with them on a side project so you're ready when the stable release lands.

Want to go deeper?

Once Expo UI stabilizes, I'm adding a full Expo UI section to the React Native course. Pro Members get it the moment it ships, plus full access to production codebases like Inkigo where you can already see these patterns in context.

In the meantime, the React Native course has a complete lesson on building native modules from scratch: registering custom views, writing graceful Android fallbacks, and shipping platform-specific code the right way.

LessonCreate a Native View

Want weekly tips on building mobile apps with AI? Join the newsletter. 15k+ developers already reading.

Let's connect!