All Articles
Building a Segmented Control With a Sliding Indicator in Reanimated
The stock segmented control looks out of place on Android. Here is a custom Reanimated component that measures each segment and slides the indicator, with complete code plus UI-thread rendering, accessibility, and RTL handling from real shipping notes.
Working Around Rork Max's 20-Geofence Wall with Dynamic Re-registration
In a native Swift app generated by Rork Max, geofences you registered quietly stop firing past a certain count — and it's almost always iOS's silent limit of 20 monitored regions per app. Here's a dynamic re-registration design that keeps only the nearest 20 live, plus a Swift implementation you can drop in.
When the Device Runs Out of Space, What Should Your App Protect?
Design Expo/React Native apps that assume writes can fail. Free-space budgets, LRU reclaim, data-protection tiers, and telemetry that surfaces silent failures — drawn from running six wallpaper apps.
Answering the New App Store Age Ratings — Field Notes From Updating Several Live Apps
Notes from re-answering the updated App Store age rating questions across live apps, covering the new 13+/16+/18+ tiers, the four new question categories, setting a higher minimum age, and what it means for apps you ship with Rork.
Laying Out Variable-Height Images in Two Columns: A Masonry Wallpaper Gallery in a Rork Expo App
From why numColumns cannot pack variable-aspect images cleanly, to a dependency-free column-balancing algorithm, to keeping virtualization with FlashList masonry and a pragmatic no-dependency fallback, building a wallpaper gallery with real code.
The App Icon Badge Still Says 3 — Rebuilding Expo Badge Counts Around a Single Source of Truth
Why an Expo app's icon badge drifts out of sync with real unread counts and refuses to clear — and how to rebuild it around a single source of truth, with working recompute-and-sync code and the production pitfalls that bite you.
When In-App Review Prompts Fire but Your Ratings Never Move — Field Notes on Measuring Display Opportunities and Timing
You wired expo-store-review into your Rork app, yet the star count won't grow. The OS silently suppresses the dialog, so calling it doesn't mean it shows. These are field notes on measuring display opportunities and redesigning timing.
Which Generation Introduced This Bug? Building Provenance Into Rork Apps
When you regenerate the same screen again and again with an AI builder, a bug that shows up one day becomes impossible to trace to a specific generation. This is a design for keeping generation provenance across three layers—build stamp, ledger, and telemetry—so you can narrow a regression down to a single generation in minutes.
Migrating Rork Max SwiftUI to @Observable: Narrowing the Re-renders ObservableObject Was Spreading
Rork Max tends to generate SwiftUI apps built on ObservableObject and @Published, where a single state change re-evaluates every subscribing view. Moving to the Observation framework's @Observable narrows invalidation to the property level. Here is the migration path, plus the view-body execution counts I measured in Instruments before and after.
Opening Your Rork Max App to Apple Intelligence — Designing App Intents Assistant Schemas and Handling What Doesn't Fit
How to make actions in a Rork Max-generated Swift app callable from Apple Intelligence using App Intents Assistant Schemas — mapping to the fixed schemas, routing what doesn't fit, availability fallbacks, and on-device testing.
Cloud-Synced Folders Break App Builds — Excluding Build Artifacts From Sync to Fix It for Good
A project living in Dropbox or iCloud Drive stopped building one morning. The cause was sync creating conflicted copies inside build artifacts. Here is how I excluded node_modules and Pods from sync to stop the recurrence, told as an indie developer's field notes.
Shipping a Rork App to a Real Device Without a Mac: What the Browser Simulator Covers, and Its Pitfalls
Rork's in-browser simulator lets you try an app without a Mac, but some bugs only appear on real hardware. Separate what the simulator can and cannot verify, and get past the real-device wall before you submit.