Keeping Expo Push Tokens from Slipping Through the Cracks in Production
After adding re-engagement push to a Rork-generated Expo app, the delivered count came in well below the active install count. The cause was missed token updates and stale tokens left to pile up. Here is the lifecycle I settled on, with code: registration, refresh, server storage, and pruning.
Keeping Login Alive in a Rork-Built Expo App — Preventing Token-Refresh Races with Single-Flight
Add login to the Expo app Rork generates and it works at first, but in production the 'I got logged out on my own' reports creep in. Most are token-refresh races. This covers a reliability design that single-flights refresh, stores tokens safely, and handles expiry correctly.
Designing Apps That Keep Working When the Signal Drops — Optimistic Updates and Resolving Conflicts on Reconnect
Make the Expo apps you build with Rork keep responding even when the signal drops in a subway or elevator. We assemble optimistic updates that move the screen first, and conflict resolution that reconciles when the connection returns, in working code.
Running a Neon + Drizzle Backend for Your Rork App in Production — Notes on Edge Connections, Zero-Downtime Migrations, and Type-Safe Queries
After wiring Neon Serverless Postgres and Drizzle ORM into a Rork app's backend, the friction shows up in production. These are implementation notes on choosing an edge connection model, migrating without locking tables, and designing type-safe queries that don't balloon into N+1.
Stopping the Slow Drift of Colors and Spacing on Every Regeneration with a Single Source of Design Tokens
Every time Rork regenerates a screen, button colors and spacing shift a little. Here is a design that freezes your tokens in one place and steers generated output to always reference them.
Rork's Growth Story: From a Viral Tweet to a16z Backing and the Birth of Rork Max
Rork went from a viral tweet to $2.8M from a16z, then on to a $15M seed. From an indie developer's view, here's what that growth actually means for the apps we ship and maintain.
Drawing the Line Between Rork Max's Swift Output and the Expo Build
Rork Max now generates native Swift, while the standard Rork keeps producing Expo (React Native) apps. Here is how to split responsibilities between the two engines inside a single app business, viewed from real maintenance cost.
Putting a Working Button in a Rork App's Widget — Implementing App Intents So a Tap Acts Without Opening the App
How to put a button in a Rork-generated Expo app's widget that changes state without launching the app. We wire App Intents and WidgetKit together through an App Group, all the way to reloadTimelines — including the two places I lost real time.
The Day a Third Reason to Hide Ads Appeared — Folding Rork App Ad-Free Logic Into One Place
Ads show only on one screen for paying users, or ads never show for free users. The usual cause is that the condition for hiding ads is scattered across the code. Here is how I fold three reasons — subscription, lifetime purchase, and a timed reward unlock — into a single state and route every ad through one hook, written as an implementation note from running six apps as an indie developer.
Review Count Is Decided by When You Ask, Not the Wording — Rating Design for Rork Apps
When a Rork-built app's review count stalls, the cause is usually not the request wording but the moment you choose to ask. Here is the expo-store-review frequency limit, how iOS and Android differ, and working implementation code.
Validating StoreKit 2 Subscriptions Server-Side: Granting Access Without Trusting the Device
To stop 'I paid but the feature won't unlock' and 'still usable after canceling,' you need a design that does not trust the device's verdict and settles entitlements on the server. Covers StoreKit 2 signed transactions, verification with the App Store Server API, and state sync via App Store Server Notifications V2, from real indie monetization.
Making Rork App API Calls Survive Failure — Timeouts, Exponential Backoff, and Circuit Breakers That Actually Hold
A hands-on implementation log for hardening the API layer of a Rork-generated app. Add timeouts, exponential backoff, and a circuit breaker step by step so your app keeps working even when a dependency goes wobbly.