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.