App Dev
React Native, Expo, mobile architecture
Placing Native Ads in a Masonry Wallpaper Grid: Designing the Lifetime of an Ad Cell
One native ad in a masonry gallery pushed memory from 180 MB to 420 MB over twenty minutes of scrolling. Here is why cell recycling and ad object lifetime never line up, the pool-based implementation that fixed it, and how I picked the insertion interval from measured numbers.
Long-Press Context Menus for a Gallery Item in a Rork Expo App
Long-pressing a wallpaper card does nothing, yet iOS users expect a preview and a menu. From why Pressable alone falls short, to a native context menu with zeego, resolving the scroll-vs-long-press conflict, wiring up save and share, and a custom overlay fallback for Android — all with working code.
You Only Need to Capture the 6.9-inch iPhone for App Store Screenshots
App Store Connect only requires two screenshot sizes: the 6.9-inch iPhone and the 13-inch iPad. Building on Apple auto-downscaling for smaller devices, here is how I use fastlane snapshot and frameit to cut the screenshot count for a multi-language app.
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.
Building a One-Time Code Field in Expo — SMS Autofill and Segmented Display Together
A six-digit verification screen looks trivial, but once you account for SMS autofill, pasting, and deleting one digit at a time, it needs real care. Here is how to nail the iOS and Android autofill first, then build a segmented look on top of a single TextInput that does not break.
Rork Max (Swift) or the Standard Version (React Native): How to Decide as a Solo Developer
Stuck between Rork Max's native Swift and the standard React Native version? Here is a practical decision framework built from a solo developer's perspective, weighing cost, feature boundaries, and how easy each path is to migrate later.
Making Your Rork Max App Resilient to Dropped and Restored Connections: Offline Detection and Retry with NWPathMonitor
Build networking that survives a lost signal in your Rork Max native Swift app with NWPathMonitor. Detect offline states, respect Low Data Mode and cellular, and auto-resend queued work on reconnect — all with working Swift code.
Adding Read-Aloud to a Rork Max App: AVSpeechSynthesizer Voice Selection and Live Word Highlighting
An implementation memo on adding read-aloud to a native Swift app generated by Rork Max — covering AVSpeechSynthesizer voice selection, highlighting the word being spoken, audio session design, and the pitfalls that bite specifically with Japanese text.
Adding PDF Viewing and Export to a Rork Max App — When to Use PDFKit vs. ImageRenderer
Implement PDF viewing, search, and export in Rork Max's native Swift with PDFKit. Covers UIGraphicsPDFRenderer vs. ImageRenderer trade-offs, password protection, and share sheet integration.
Keeping Downloads Alive After Your Rork Max App Is Killed: Background URLSession Design and Relaunch Handling
How to design downloads in a Rork Max native Swift app so transfers continue in the OS daemon even after the app is suspended or terminated. Covers relaunch wiring, resumeData recovery, and measured isDiscretionary behavior with working code.
Adding Events to the User's Calendar from a Rork Max App: EventKit's Three-Tier Permissions and Write-Only Access
Since iOS 17, EventKit offers three access tiers: a permission-free UI, write-only, and full access. Here is how to ship calendar and reminders integration in a Rork Max app without tanking your opt-in rate.
Adding Game Center to a Rork Max Game: Authentication, Leaderboards, Achievements, and Living with Score Tampering
How to add Game Center to a Rork Max iOS game — working Swift code for authentication, leaderboards, and achievements, plus a realistic approach to score tampering.
Building a Place-Search Map in Rork Max with MapKit: MKLocalSearch, Pin Clustering, and Location Permissions
A hands-on guide to building a place-search map screen with Rork Max native Swift: nearby search with MKLocalSearch, when to switch from SwiftUI Map to MKMapView for pin clustering, and location permission design that survives App Review.
Logins Without Stored Passwords: Adding Passkey Authentication to a Rork Max App
How to add passkey authentication to a Swift app generated by Rork Max: Associated Domains setup, WebAuthn server verification with working code, and the device-testing pitfalls that cost me half a day.
Using MusicKit in Rork Max Native Swift — Apple Music Authorization, Search, and Playback in a Minimal Setup
Bringing MusicKit into a Rork Max Swift app: MusicAuthorization, catalog search with MusicCatalogSearchRequest, choosing between ApplicationMusicPlayer and SystemMusicPlayer, and handling non-subscribers with previews and offers.
Building SharePlay in Rork Max's Native Swift — Keeping Two Screens in the Same State
Implementation notes on building SharePlay with GroupActivities in Rork Max's native Swift — moving two screens through the same state over FaceTime. Covers declaring the GroupActivity, joining a GroupSession, syncing state with GroupSessionMessenger, handling latency and conflicts, catching up late joiners, and the boundary for bridging from React Native, with the pitfalls I actually hit.
Building a Song-Recognition App with ShazamKit in Rork Max's Native Swift
Implementation notes on building a song-recognition app with SHManagedSession in Rork Max's native Swift. Covers the difference from hand-rolling AVAudioEngine, designing the idle / prerecording / matching states, using prerecording to improve initial accuracy, and the boundary design for bridging from Expo — with the pitfalls I actually hit.
Making the Block Screen Feel Like Your Own App — ShieldConfiguration and Button Handling in Rork Max
Replace the plain gray shield that screen-time apps show with something that speaks in your app's voice. This walks through swapping the UI with a ShieldConfiguration extension and controlling the buttons with ShieldAction, wired into a Rork Max native setup.
Building an AlarmKit Timer in Rork Max's Native Swift — Alerts That Cut Through Silent Mode and Focus
Implementation notes on solving the 'local notifications stay silent in Silent Mode and Focus' problem with iOS 26's AlarmKit. Covers authorization, scheduling a countdown, the Live Activity for the Lock Screen and Dynamic Island, and listing active timers in Swift — plus the boundary design for Rork Max native code and bridging from Expo, with the pitfalls I actually hit.
Building a Native Bluetooth Pairing Sheet with AccessorySetupKit
iOS 18's AccessorySetupKit lets you pair a single, specific device through a system sheet without the broad Bluetooth permission prompt. Assuming the native Swift that Rork Max generates, here is the path from declaration to picker to connection, with working code.
Screening Images On Device Before They Appear — Notes on SensitiveContentAnalysis
Implementation notes on blocking inappropriate images before they render, right on the device, for apps that handle AI-generated or user-submitted photos. Covers calling Apple's SensitiveContentAnalysis framework from Swift and wiring it into Rork Max native code or an Expo native module, with the pitfalls I actually hit.
Previewing Files In-App in Rork — calling Quick Look safely from Expo
How to preview PDFs, images, and Office documents in place without sending users out of your app, using Quick Look (QLPreviewController) from Rork (Expo). Covers pre-downloading remote files, the local-URL requirement, the Android FileProvider alternative, and handling the share button.
Clipboard UX in Expo apps — copy and paste without flooding users with iOS's paste banner
When you wire up copy and paste with expo-clipboard, iOS's paste permission banner can fire constantly and quietly erode trust. Here's exactly when the banner appears, and how hasStringAsync lets you gate a Paste button without ever reading the contents.
Respecting Metered Connections and Low Data Mode in an Image-Heavy Rork App
In an image-heavy Rork (Expo) app, hold back prefetching on metered connections and Low Data Mode. Read the connection's character from NetInfo details, drop image quality, and defer prefetch with an adaptive policy layer, all with working code.
Design On-Device Core ML So Cold Start and Heat Don't Break It
Put on-device Core ML in the native Swift that Rork Max generates and you hit two walls before accuracy: the first inference is slow, and the device heats up and slows down. Here is a design built around cold start and a thermal budget, with working Swift.
Building a Live Barcode and Text Scanner in Rork Max with VisionKit's DataScanner
Add a live barcode and text scanner to your Rork Max native Swift app using VisionKit's DataScanner. Covers the SwiftUI bridge, availability handling, throttling repeated detections, and on-device verification with working code.
Before You Ask 'Are You Sure?' — Consider an Undoable Delete
Showing a confirmation dialog every time someone removes a list item trains them to tap OK without reading. Here is how to build an undoable delete in a Rork (Expo) app, and where confirmation dialogs still belong.
Show the In-App 'What's New' Once, Without Nagging — Version Gating and Seen State
An in-app 'What's New' screen that fires on fresh installs or shows every launch gets users annoyed. Here is a version-gated, seen-state design that delivers it exactly once to people who updated — in real Rork (Expo) code, plus a shape you reuse across multiple apps.
When a User Rewinds the Clock, Today's Card Shouldn't Break — Day Boundaries and Streak Integrity in a Daily-Content App
Daily 'card of the day' content breaks under timezone travel and manual clock changes, showing duplicates, gaps, or lost streaks. Here is a deterministic day-key and monotonic-clock design, in real Rork (Expo) code, that keeps it solid.
Your Animation Keeps Running After You Leave the Screen — Focus-Aware Battery Savings in a Rork (Expo) App
In a Rork-generated Expo app, a gradient or breathing animation can keep running after you push another screen or background the app, quietly draining the battery without ever surfacing as jank. The cause is that Reanimated's withRepeat lives on the UI thread and the navigation stack keeps screens mounted. This shows a lifecycle design — useIsFocused plus AppState — that reliably stops off-screen and background loops, with working code.
Your Arabic Users See an Unmirrored Layout — RTL in a Rork (Expo) App and the Reload Trap
You added Arabic to a Rork-generated Expo app, but the screen never flips and the back button stays on the wrong side. The cause is that I18nManager.forceRTL requires a relaunch. This walks through detecting direction with expo-localization, applying it reliably with Updates.reloadAsync, swapping to marginStart, and mirroring only the arrows — all with working code.
Building Production-Ready iOS Apps with Rork
Rork generates Expo / React Native apps. A practical look at architecture, surfacing crashes in production, list performance, the eas submit workflow, and the iOS review pitfalls to clear — learned from real review round-trips.
Why Reinstalling Users Don't Return to 'First Run' — A First-Launch and State-Persistence Design for Rork (Expo) Apps
How to fix broken first-launch detection, onboarding, and free-trial state on reinstall in a Rork-generated Expo app, by treating it as an asymmetry in storage persistence. Covers what survives uninstall on iOS vs Android, separating install and version axes, and server-authoritative entitlements, with implementation.
Why Untranslated Strings Leak to Production Every Time You Add a Language — A Catalog and Gap-Detection Design for Rork (Expo) Apps
A design for stopping untranslated strings from leaking into production after you localize a Rork-generated Expo app. Covers a single source-of-truth catalog, CI-based missing/extra key detection, explicit fallback chains, plurals, and pseudolocalization for layout — with implementation.
The App Privacy Section That Grows the Moment You Add Ads and Subscriptions — Notes on What I Actually Checked
How I filled out App Store Connect's App Privacy section for a Rork (Expo) app with AdMob, RevenueCat, and Crashlytics — including the tracking-to-ATT chain, written up as field notes from running six apps.
Crashes Only in the Release Build — Rescuing Classes R8 Stripped in Expo (Android)
I turned on R8 code shrinking to slim down an AAB, and one screen started crashing only in production. Here is how I traced the stripped class through mapping.txt and added keep rules via expo-build-properties.
Three Builds on One iPhone: Environment Separation for Rork (Expo) Apps
Split a Rork-generated Expo app into dev, staging, and production builds that live side by side on one device. A hands-on walkthrough of dynamic app.config.ts, eas.json profiles, and isolating notifications, analytics, and billing per environment.
Three Implementations You Always Face with Next.js and Supabase — RLS, State, and Real-Time
Past building the foundation of a web app lie three things you always get stuck on — DB access control (RLS), screen state management, and real-time updates — explained at the implementation level with Next.js and Supabase code. Down to production pitfalls like memory leaks from forgotten unsubscribes and how auth ties into RLS.
A Map for Programmers Shipping Their First Web App — The Big Picture with Next.js and Supabase
You can write algorithms, yet you stall on the difference between frontend and backend, or on what a React component even is. For programmers in that spot, here is the big picture of a web app as a single map, using Next.js and Supabase — down to the line between server-run and browser-run code.
Why Wallpapers Look Dull on Device: Taming Display P3 in the Delivery Pipeline
The same wallpaper looked dull once set on device. The culprit was a mix-up between wide-gamut Display P3 and sRGB. Beyond embedding profiles, here is how to tell whether the pixels are truly wide-gamut, a pre-delivery gate script, and the Android wide-color story, across six wallpaper apps.
Your List Jumps Back to the Top — Restoring Scroll Position Across Back Navigation and Process Death
How I rebuilt scroll restoration for a wallpaper grid by splitting it into two unrelated problems — back navigation and process death — covering getItemLayout, save timing, and killing the restore flicker.
Building an Ambient Display App for Apple TV with Rork Max
Use the native Swift that Rork Max generates as a foundation for an Apple TV app that quietly plays on a loop. We cover Top Shelf, the focus engine, and seamless video loops, with the practical lessons that only surface in real operation.
Adding an Apple Wallet Stamp Card to a Rork Max App — Signing and Updates
You want a shop stamp card in Apple Wallet. When you issue a PassKit pass from a Swift app generated by Rork Max, the hard parts are not design — they are signing and remote updates. Here are the implementation essentials.
Staging Wallpaper Packs Before the First Launch: Where Rork Max and Background Assets Fit
Content-heavy apps tend to greet new users with an empty grid. Background Assets downloads content out-of-band, ahead of the first launch. Here is how I implement it in Rork Max's native Swift, a domain Rork (Expo) cannot reach easily, plus how I decide when it is worth it.
Building an iMessage Extension with Rork Max to Bring Your App's World into Messages — Notes on Distribution as Code
A walkthrough of adding an iMessage extension to the native Swift project Rork Max generates, sharing your app's assets right inside Messages. Covers compact/expanded presentation, sending messages, and diagnosing why the extension won't appear in the drawer — from an indie developer's distribution lens.
Building a WeatherKit App with Rork Max — The Auth and Attribution Pitfalls
When you add WeatherKit to a native Swift app generated by Rork Max, the first walls are authentication and attribution. Here is the workflow I confirmed: token handling, rate limits, and the mandatory data-source display.
Adding NFC Tag Reading to a Rork Max App with Core NFC
How to add Core NFC to a Swift app generated by Rork Max and read NDEF tags, covering the entitlement and Info.plist setup through the production gotchas, with real code.
Designing WidgetKit Timelines Around the Refresh Budget: Why My Wallpaper Widgets Stopped
Why does a home screen widget stop updating after the evening? A clear look at WidgetKit timeline design through three lenses: the refresh budget, the reload policy, and entry density. With a working TimelineProvider, an entry design that does not burn through the budget, and relevance-based prioritization, drawn from running six wallpaper apps solo.
Shipping Wallpaper Packs Without an App Review — Versioning and Delta Delivery for Remote Assets Across Six Apps
Re-submitting your app every time you add ten wallpapers grinds operations to a halt. Here is a manifest-based versioning scheme with delta downloads, cache invalidation, and rollback — with the implementation and measured transfer savings from running six apps in parallel.
When and How to Remove Features Nobody Uses — Auditing and Safely Retiring Functionality in Rork-Built Apps
Unused features quietly make an app harder to maintain. A field-tested playbook from running six wallpaper apps in parallel — how to measure feature usage, decide what to retire, and remove functionality in three safe stages with Remote Config.
Keeping a wallpaper app's binary small: moving images out of the bundle
Wallpaper apps bloat every time you add images. Here is where I draw the line between bundled and remote assets, how I keep first paint fast with prefetching, and the format work that cut transfer size to a third — with real numbers.
expo start --offline Says 'forbidden'? Corporate Proxy (403) vs Dependency Validation
Two different failures make 'expo start --offline' or EXPO_OFFLINE=1 die with 'forbidden': an HTTP 403 from a corporate proxy, and Expo CLI validateDependenciesVersions guard. How to tell them apart, when to set HTTP_PROXY to route through the proxy, and when to go fully offline with pre-generated caches instead.
How I Localized My Play Store Screenshots into 16 Languages — Swapping PSD Text with Python and Standardizing on Noto Fonts
An implementation log of localizing an Android wallpaper app's store screenshots into 16 languages: swapping PSD text layers per language with Python, auto-shrinking overflow, and assigning the right font per script — with the actual code and a font cheat sheet.
Unifying Onboarding Across Six Wallpaper Apps: What One Month of First-Day Retention Showed Me
I folded the onboarding flows of six wallpaper apps scaffolded with Rork into a single config-driven component and watched first-day retention and push opt-in for a month. Here is an honest, operational note on what moved and what didn't.
Fixing the 'Signed With the Wrong Key' Error When Uploading a Rork App to Google Play
Your Rork app builds fine but Google Play rejects the upload with 'signed with the wrong key'? Here's how to tell which signing key is involved and the exact steps to fix it for each build setup.
Retuning AdMob Mediation Priorities: Notes From Trying to Lift My eCPM
A running log of how I manually revisited the network priorities in my AdMob mediation setup to lift eCPM on an indie wallpaper app, what changed compared to leaving it on auto-optimization, and what I noticed along the way.
Getting Users All the Way to 'Set as Wallpaper' on iOS — Save-to-Photos Permissions and Shortcuts
iOS apps cannot set the wallpaper directly. Here is how I handle add-only photo permissions, Live Photo saving, guiding users to Settings, and Shortcuts automation, with real numbers from running six wallpaper apps.
Killing Thumbnail Scroll Jank in an iOS Wallpaper App — Notes on ImageIO Downsampling
Lay out a lot of thumbnails and scrolling stutters while memory balloons. The culprit was full-size image decoding on the main thread. Here is how ImageIO downsampling and prefetching cut measured memory dramatically.
Two Weeks of Maintenance After v2.1.0 — Running Crashlytics Triage Through Claude in Chrome
Notes from operating Beautiful 4K/HDR Wallpapers v2.1.0 and Ukiyo-e Wallpapers v1.8.0 through phased rollout. Defensive RecyclerView copies, Glide desugaring, drawable-nodpi placement, and what I now hand off to Claude in Chrome every morning.
Three Weeks of Syncing Release Notes Across Six Wallpaper Apps
Notes from three weeks of writing What's New entries for six wallpaper apps in the same week, with the same tone, using Rork as the source of truth.
Adding Slideshow and Page Jump to My Android Wallpaper Apps
Implementation notes from adding slideshow, a page-jump slider, and an ad-free option to the Android editions of Beautiful 4K/HDR Wallpapers and Ukiyo-e Wallpapers.
Supporting iPhone Air and 17 Pro Max New Resolutions Across Six Apps in Parallel
How I added iPhone Air (420×912), 17 Pro (402×874), and 17 Pro Max (440×956) support across six apps in parallel — 29 ternary branches, a 6-app diff script, and a phased rollout that landed at zero resolution-related crashes in 14 days.
Bolting WidgetKit onto a Rork iOS App: Implementation Notes from Rolling It Out to Six Wallpaper Apps Simultaneously
A hands-on note on adding a WidgetKit Extension to a Rork-generated iOS app, with operational lessons from rolling out widgets to six wallpaper apps at once — App Group plumbing, Timeline Provider choices, memory ceilings, and ASO side effects.
Adding AppLovin MAX to a Rork-Generated iOS Project — A Field Note on Init Order, ATT Consent, and eCPM A/B Testing
A field note from an indie developer on layering AppLovin MAX on top of a Rork-generated iOS app: SDK initialization order, ATT and MAX consent flag sync, and a minimal A/B setup to compare eCPM against AdMob-only.
Slow Images in My Rork Wallpaper App: Switching to expo-image and What Actually Changed
A hands-on account of switching from React Native's default Image component to expo-image in a Rork-generated wallpaper app — with code examples, blur hash setup, and observable performance improvements.
What '16 Person-Days in 2 Hours' Actually Teaches About AI App Development
A widely-shared case study compressed 16 person-days of development into 2 hours. The key wasn't the AI — it was a design doc thorough enough that the AI never had to stop and think. Here's what that means for app development.
Designing Subscription Apps with Rork — From Revenue Model to App Store Approval
How to add a subscription revenue model to apps built with Rork — covering pricing design, StoreKit integration, and the specific issues that cause App Store rejections.
Building a Native iOS App with Rork — From SwiftUI Generation to TestFlight, Step by Step
Trying to ship a native iOS app with Rork but unsure how SwiftUI gets generated and built behind the scenes? Here's the actual workflow I run, end to end, with concrete examples.
Comparing the Five Leading AI App-Building Tools — Rork, Bolt, v0, Replit Agent, Cursor
'Build apps with AI' is a crowded claim. Here is a hands-on comparison of Rork, Bolt, v0, Replit Agent, and Cursor — what each one is for, where each one earns its price, and how they fit together.
Getting Started with No-Code AI App Development — The Three Decisions That Actually Determine Whether You Ship
Building an app is easier than ever. Shipping one is still hard for most beginners. The fix isn't choosing the right tool — it's three design decisions you should make before touching the builder.
Building a Wallpaper App with Rork and Getting It on the App Store — A Full Account
A complete record of building a wallpaper app with Rork from zero to the App Store — the iOS wallpaper API limitation, WebP optimization, and how to structure revenue without breaking the experience.
Gemma 4 for App Development: On-Device AI on the Cutting Edge
Learn how to integrate Google's Gemma 4 E2B and E4B models into iOS and Android apps for on-device AI. Covers privacy, offline capability, low latency, and practical code for real app use cases.
Fix Rork Android Build Errors: Gradle & SDK Troubleshooting Guide
Struggling with Android build errors in your Rork app? This guide covers the most common Gradle errors, SDK version mismatches, and memory issues — with step-by-step solutions for each.
Build an AI Personal Trainer App With Rork: Workouts, Nutrition, and Daily Coaching
A step-by-step guide to building an AI-powered fitness coaching app with Rork. Covers workout logging, food photo analysis, AI daily advice, progress charts, and push notifications — all without writing code.
Rork App AdMob Ads Not Showing — How to Fix Missing Ads and Revenue Issues
Fix AdMob ads not displaying in your Rork app and troubleshoot revenue not reflecting. Covers test ID mistakes, app-ads.txt setup, policy violations, and step-by-step solutions.
Rork App Monetization Complete Strategy: Building Revenue from Zero with AdMob, Subscriptions, and In-App Purchases
A complete guide to monetizing apps built with Rork. Covers AdMob ad design, subscription setup, and in-app purchases — with practical insights from an indie developer generating over ¥1M/month. Full content, free.
Rork Max × Foldable iPhone 2026 — App Design Strategy for the Folding Screen Era
Multiple supply chain sources indicate a foldable iPhone is coming in late 2026. Here's how to use Rork Max and SwiftUI adaptive layouts to get your app ready now — before the device ships.
Beta Testing Your Rork App with TestFlight: from Internal Testers to Public Launch
A complete walkthrough for distributing your Rork or Rork Max app through TestFlight. Covers App Store Connect setup, provisioning profiles, internal and external tester management, feedback collection, and a pre-launch checklist.
The Complete App Store Visual Strategy — Icons, Screenshots, and Preview Videos
Comprehensive guide to all app store visual assets: icons, screenshots, feature graphics, and preview videos. Master ASO strategy, A/B testing, and the complete workflow from design to store launch.
Figma vs Stitch vs Canva — The Ultimate App Screenshot Tool Comparison
Comprehensive comparison of Figma, Stitch, and Canva for app screenshot creation. Evaluate ease of use, templates, customization, device frames, speed, and output quality to choose your perfect tool.
How to Create App Store Screenshots with Figma for iOS and Android
Master app store screenshot design for both App Store and Google Play. Learn Figma workflows, device mockups, export settings, and multi-language strategies from concept to publish-ready assets.
Production AI Companion Apps: Streaming, Voice & Monetization
Build a production-grade AI companion with streaming responses, voice I/O, mood tracking, offline support, and subscription monetization. App Store submission guidelines included.