u/KiRiK1234

▲ 53 r/expo+1 crossposts

GPU accelerated trading charts for React Native

Hi everyone,

For the past four years, I've been working on financial and trading apps built with React Native.

One of the most important parts of these apps is displaying OHLC market data. Most charting solutions currently use one of two approaches: rendering inside a WebView or using something based on Skia.

Both approaches have tradeoffs, especially when you're working with real-time data and want smooth performance without using too much CPU or memory.

That's why I decided to build my own charting library. It uses a shared C++ core engine and renders directly on the GPU using Metal on iOS and OpenGL ES on Android.

I deliberately avoided third-party rendering dependencies to reduce overhead and keep the library compatible with React Native 0.80 and newer.

The first release supports:

  • Candlestick, bar, line, and area charts
  • Volume and RSI indicators
  • Multiple styling options
  • Zoom and gesture handling

I tested it on an iPhone XS and a Samsung A025F. At 60 FPS, I saw no hangs or dropped frames, and CPU usage stayed below 15% during fast scrolling while live data was coming in over WebSocket.

I'll share more detailed performance results in a follow-up post.

I'd really appreciate your feedback. Which features would be most useful to you? Bug reports are very welcome too.

https://github.com/kirill3333/react-native-trading-charts

u/KiRiK1234 — 2 months ago
▲ 15 r/expo+1 crossposts

We cut React Native OTA payloads from 18 MB to ~100–600 KB using binary diffs

Revopush Diff Updates now work with React Native 0.83+ and Expo SDK 55.

I wanted to share a production case from a customer that moved to the new Diff Updates SDK on June 7.

Before the migration, they were shipping fewer OTA updates, but still had days with around 1–2 TB of egress.

After the migration, egress went down, downloads went up, and they started shipping OTA releases more often.

A few recent releases from the same app:

Full OTA package: 18.7 MiB

Generated JS patches for this release:

  • 117.26 KiB
  • 586.94 KiB
  • 611.49 KiB

That download count matters. A 100 KB patch reaches users much more reliably than a 19 MB bundle, especially on slow or unstable mobile networks.

The first OTA on top of a native release already comes as a diff. So teams moving from a CodePush-style setup do not need to push one full OTA baseline first and only get diffs later.

The workflow stays close to what teams already know. Devices just download a much smaller payload.

Curious what other React Native teams are seeing in production. How large are your OTA payloads today?

u/KiRiK1234 — 4 months ago