Grzegorz Otto · Senior React Native engineer · mobile + web
Poland · compiled from src/
I ship production React Native apps that hold the frame budget.
Senior React Native engineer. I architected and ship Poland's national radio app (~60k daily users): a custom cross-platform playback engine with CarPlay, Android Auto, and Chromecast, on custom Swift + Kotlin native modules.
In parallel I build Flare, a 36-package real-time 2D engine for React Native and Web, and Pan Tvardowski, a vertical shoot-'em-up themed on Polish folklore that doubles as its hardest stress-test.
I run an AI-directed agent loop - local LLMs, custom skills, and instruction files - to ship monorepo-scale output at team velocity. Architecture-minded (Clean Architecture · DDD · ECS · TDD) and rule-minded (SOLID · KISS · DRY · YAGNI), as tools, not dogma.
static-exported · zero runtime DB reads
Flare — a 36-package React Native + Web 2D engine (in development). Showcase: Pan Tvardowski.
50% complete
- posts
- 8
- flare packages
- 36
- engine tests
- 2564
- engine packages exercised
- 33/35
Featured projects
- PINNED2026
Polskie Radio — national broadcaster app
Poland's national public broadcaster needed a single mobile app covering live radio (4 national + 17 regional stations), on-demand podcasts, offline downloads, and handoff to car head units and Chromecast. The previous stack was fragmented across platforms, and playback state drifted between the UI, lock screen, CarPlay/Android Auto and cast targets. The app had to keep playing reliably through network drops, app backgrounding, OS process death, and transitions between local audio, cast, and car surfaces — without the UI and the native media session ever disagreeing about what is playing.
React NativeExpo SDK 55TypeScriptKotlinSwiftExpo ModulesTanStack QueryMMKVUnistyles 3CarPlayAndroid AutoChromecastFirebase AnalyticsGemiusSentry - PINNED2026
Pan Tvardowski — Polish-folklore vertical shmup
Flare engine needed a production-grade showcase — one that exercises every layer, tells a coherent story, and is genuinely shippable. The genre (vertical shmup) is mechanically rich but small enough for a solo author. The setting (16th-century Polish folklore: Pan Twardowski, the Devil's bargain, exile to the Moon) is underused in games and culturally specific enough to stand out. The game also needed to answer a hard question for the engine: does Flare hold up across all 36 packages, including tier-2 platform services, IAP entitlements, i18n, a11y, and store-ready bundles?
TypeScriptReact Native@shopify/react-native-skiaFlare engine (36 packages)MMKVEASICU pluralsreact-native-gesture-handlerreact-native-audio-apiPolyForm Noncommercial 1.0.0 - PINNED2026
Flare engine — React Native game engine
React Native has no real 2D game engine. `react-native-game-engine` is dead (last published 6 years ago, ~2 235 downloads/week) and renders through RN Views; Phaser/Pixi/Excalibur don't run on RN at all. Sprite sheets, tilemaps, particles, game audio, ECS — none exist as published RN libraries. Teams roll the stack from scratch every time.
TypeScriptReact Native@shopify/react-native-skiaCanvasKitplanck.jsbitmask ECSBunTurborepotsupBiomeChangesetsMMKVreact-native-audio-apireact-native-gesture-handler
Latest posts
- I built generator coroutines for my game engine, then didn't use them6min
- What CanvasKit gives a React Native game engine on the web (and what it doesn't)5min
- Archetype ECS in TypeScript: why I didn't use bitECS or miniplex7min
- Skia Atlas in React Native: batching 2,000 sprites into one draw call per texture8min
- Zero-alloc game loops in TypeScript - how I hit 60 fps on a mid-range Android10min