Updates · v0.19 · October 28, 2026
We fixed the iOS bug Apple hasn't owned up to
Joe Masilotti
Founder, Ruby Native
Some bugs you'll never hear about until your users do. Apple ships an iOS change, a store behaves differently than its docs say, and the first sign is a one-star review. Ruby Native catches these so you don't have to, and that's mostly what this release is about.
#Review prompts limited to three per year
Apple quietly introduced a bug in iOS 26 that affects Ruby Native developers using native_review_tag to prompt the user for a review in the App Store. According to the docs:
The system automatically limits the display of the prompt to three occurrences per app within a 365-day period.
In practice, one Ruby Native customer heard from their users that the prompt showed up many more times than that, sometimes all on the same day.
Ruby Native now counts every native_review_tag request on the device and stops at three in any 365 days, on both iOS and Android, so both platforms follow the same rule. Put the tag wherever it makes sense in your app, like before.
The rest of this post rounds up everything since the last update. It shipped in 0.18.1 and 0.18.2 or went live on rubynative.com, so you may already have it.
#Your listing goes to your store's own language
If your app was created in App Store Connect in, say, English (Australia), publishing your listing now writes there. Before, it could add a second English (US) listing next to yours, and Apple refused it when your name was already taken in the US store. Google Play screenshots follow your app's default language the same way.
#Clean screenshots and a clear TestFlight step
A fresh iOS simulator pops up a "Ready for Apple Intelligence" banner about 20 seconds after it boots, right on top of your first screenshots. Ruby Native now dismisses it before capturing.
And if Apple won't set up TestFlight because there's an agreement waiting for you in App Store Connect, the dashboard now tells you to go sign it, instead of leaving you stuck.
#New Your app's language, not just the phone's
If your Rails app lets people pick a language, add <%= native_locale_tag %> to your layout. The tab bar and the error screen switch to that language right away, no restart needed. It works on both platforms and in both modes. See the localization docs for details.
#New A guide for every common rejection
App Review rejections now have their own section in the docs. There's one page per guideline that Rails apps run into most, from 4.2 (minimum functionality) to 5.1.1 (account deletion). Each one has Apple's wording, what it actually means for your app, the fix, and a reply you can send when the reviewer gets it wrong.
#Fixes
- Deploys that use an asset helper like
image_urlinconfig/ruby_native.ymlno longer 500 on every page. It happened whenassets:precompileruns on its own, like in a Kamal or Cloud Run Dockerfile. - A mistake in
config/ruby_native.ymlnow shows up on the first request instead of stopping your app from booting. - Android navbar segments switch when you tap them and show their full labels.
- Android keeps your tab and its back history after a rotation, a dark mode switch, or a crashed page.
#Upgrading
There are no breaking changes. Update the gem, then deploy:
bundle update ruby_native
bundle exec ruby_native deploy
See your Rails app on your phone
Try the demo app on your phone, then point it at your own Rails app. It takes a few minutes.
Try Ruby Native on your phoneQuestions, or want help getting to the app stores? Email me at [email protected].