All Articles
When "{n} items" Breaks Across Languages — Designing Quantity Strings with CLDR Plural Categories and Intl.PluralRules
The assumption that one is singular and everything else is plural falls apart in Russian and Arabic. Here is how to hold the CLDR plural categories as a map and render quantities correctly with Intl.PluralRules and i18next, drawn from localizing an indie wallpaper app into sixteen languages.
Losing HealthKit Data on Incremental Sync — Designing HKQueryAnchor Persistence
When step or sleep data double-counts or goes missing on incremental HealthKit sync, the root cause is usually HKQueryAnchor persistence. Here is a working Swift design that handles newAnchor and deletedObjects correctly and stays consistent across reinstalls and background updates.
Where Rork Max Still Falls Short — A Realistic Line Around Native Generation
An honest line between what Rork Max's native Swift generation does well and what still needs human hands, drawn from real solo-dev experience. Not hype, not dismissal — just where it genuinely fits today.
Why Shipping Several Similar Apps Triggers App Store Guideline 4.3 — Differentiation for Indie Developers
Ship a few similar Rork apps and you may run into App Store review Guideline 4.3 (Spam). Here is why it happens more with AI-generated apps, how to differentiate before you submit, and how to respond if you have already been rejected — from an indie developer's point of view.
A symbolEffect Field Memo: Making Icons Move Nicely in Your Rork Max App
Animate SF Symbols in a Swift app generated by Rork Max using bounce, pulse, variableColor, and contentTransition, with working code, OS-version gating, and the mistakes I made from over-animating.
Lower Store Fees by Their Structure, Not Their Rate — Apple SBP and Google Play's June 2026 Pricing
A working breakdown of Apple's Small Business Program and Google Play's new fee model that started June 30, 2026, framed as fee design for indie developers, with code to compute your effective rate and a break-even table.
Undo That Jumps to the Wrong Place — Designing Edit History You Can Trust
Snapshotting the whole state on every edit crushes memory after a few dozen steps. Here's an undo/redo built on command history plus snapshots, with coalescing, a depth cap, and cross-session persistence, in working TypeScript.
Implementing App Clips with Rork Max — delivering the core of your app the moment someone scans a code
Building on the native Swift that Rork Max produces, this note walks through the 15 MB App Clip budget, receiving the launch URL, and handing state off to the full app.
The Device Clock Can Be Moved — Protecting Daily Features and Trial Logic from Time Tampering
Advancing the device clock by one day was enough to claim tomorrow's daily wallpaper today. Starting from that log entry, this article lays out a three-layer time model — wall clock, monotonic clock, server time — and shows how to build daily-reward and trial logic that survives clock rollbacks.
When Sentry Burned Through Its Event Quota in Days — Trimming Noise Before It Ships
A Sentry quota that empties early in the month is almost always a noise problem, not an error surge. Here is how to shrink event volume before it ships — with beforeSend, sampling, and grouping — while keeping the errors that actually matter inside the quota.
Will Your Real Name Appear on the App Store? Deciding on a Developer Identity Before You Publish
What Apple and Google actually publish about you as an indie developer — seller names, address disclosure, EU trader rules — and practical ways to limit exposure before you ship.
Verifying StoreKit 2 Signed Transactions in a Cloudflare Worker
If you trust whatever the device says about its purchase state, a tampered entitlement walks right through. This walks through verifying StoreKit 2 signed transactions (JWS) in a Cloudflare Worker so you grant entitlements without trusting the client, with working code.