Answers · Mobile

How do I set the app icon and name for a Hotwire Native shell?

The icon is an asset catalog entry in the shell project and the display name is a value in its configuration, both under mobile/ios or mobile/android. Unlike your screens, these are compiled in, so changing either needs a new build and a new submission. Set them before your first upload.

Where they live

open mobile/ios

On iOS the icon goes in the asset catalog under mobile/ios and the display name is the bundle display name. On Android the icon is a mipmap resource set under mobile/android and the name is a string resource. Both projects ship with placeholders, which is what you will accidentally submit if you do not change them.

Sizes

Modern Xcode accepts a single 1024 by 1024 PNG and generates the rest. Android wants an adaptive icon with separate foreground and background layers, so a single flat square will look wrong on launchers that mask it.

Two rules that catch people: no transparency on the iOS icon, and no rounded corners drawn in. The platform applies the mask, and an icon with corners already drawn gets them clipped twice.

Keep it consistent with the web

The app's identity on the web comes from config/initializers/app_identity.rb, which feeds the title, the meta tags, the PWA manifest and the emails. The native shells cannot read that file, so the store name and icon are a second place the same brand is expressed.

Worth writing down that they need to move together, because a rebrand updates the initializer, every view and every email automatically, and silently leaves the two app icons alone.

Regenerate the social cards while you are at it

bin/rails og:pages

A rebrand touches the share cards too, and those are committed PNGs that nothing regenerates for you.

What still does not need a build

Everything else. Screens, copy, navigation rules and features all come from your server. The icon and the name are two of the small number of things on the other side of that line, which is why it is worth getting them right once rather than discovering a typo after submission.

Related questions

Do I need a Mac to build and submit an iOS app?

Practically, yes. Xcode runs only on macOS and it is what archives, signs and uploads an iOS build. Cloud macOS runners and rented Macs work and add cost and latency. Android has no equivalent constraint: the Android shell builds on Linux, macOS or Windows.

How do I test a Hotwire Native app against a local dev server?

Change the URL in the shell to your machine's LAN address, such as http://192.168.1.20:3000. An iOS simulator can reach localhost but a physical device cannot, because localhost on the phone is the phone. Both platforms also block plain HTTP by default, so development needs an explicit exception.

Can I put a Rails app in the App Store and Play Store?

Yes. Hotwire Native wraps your existing web views in a native shell, so the screens you already built are the screens in the app. One Shot ships both shells in mobile/ios and mobile/android. The rule you cannot route around is that digital subscriptions have to use the platform's in-app purchase, not Stripe.