A 120fps game in React Native, where the JS thread never touches a frame
Overbloom runs its simulation and its rendering entirely in UI-thread worklets. Here is the architecture, and what you give up to get there.
Notes on mobile engineering. React Native, Expo, SwiftUI, and the small details that make an app feel considered.
Overbloom runs its simulation and its rendering entirely in UI-thread worklets. Here is the architecture, and what you give up to get there.
428 lines of canvas in a single file answered the only question that mattered, and the port that followed was mechanical because of it.
The same render.ts that ships on device also runs in a Next.js app on CanvasKit. It powers a level editor, an obstacle lab and the App Store screenshots.
Every pixel in the store listing comes from the real engine running on CanvasKit, posed and composited in a browser tool. No mockups, and no drift.
A memory leak that took twenty minutes of continuous play to kill the app, why every test I had missed it, and the headless soak test that finally caught it.
A tracking prompt iOS silently dropped, StoreKit hanging forever, purchases that worked offline until they did not, and other things no simulator will show you.
A game frame can fire a dozen discrete events. Packing them into a bitmask turned a pile of thread hops into a single call, and fixed a sound bug on the way.