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.
What the Mac is actually for
Three things: opening the project in mobile/ios, producing a signed archive, and uploading it to
App Store Connect. Everything before that, which is most of the work, is Rails.
bin/dev
open mobile/ios
The ways around it, honestly assessed
A cloud macOS CI runner. GitHub Actions and several others offer macOS runners. This works, and it is the sensible answer if you already have CI. The cost is minutes billed at a higher rate and a slower loop when signing goes wrong, which it will the first time.
A rented Mac. Reliable, monthly, and it is a real machine you can debug on.
Neither. Ship Android first. The Play Console has no macOS requirement anywhere in the path, so you can have an app in a store while you decide whether iOS is worth the tooling.
Android is genuinely unconstrained
open mobile/android
Android Studio runs on all three desktop platforms and produces a signed App Bundle on any of them. If the goal is to have a mobile app at all rather than specifically an iOS one, this is the shorter path.
What a Mac does not save you
The 99 dollar Apple Developer Program membership, which is separate. And the review, which is the same regardless of what built the binary.
Plan the order
Web first, because that is where the screens come from and they work in both shells. Then whichever
store your users are actually in. The shells in mobile/ios and mobile/android both point at the
same Rails app, so shipping one does not commit you to the other or duplicate any work.