You need to have an Apple developer account. Then you need to submit your app to Apple for review. Then you need to comply with a list of sometimes arbitrary corrections/requirements that they send back (there is a document that specifies what you need to do, but it is not uniformly enforced in my experience). Then, eventually, you can list your app on the app store.
It’s not super onerous, but it is much more annoying than the theoretical alternative of allowing people to install software of their choosing on their hardware (i.e. download the binary and run it)
For example the iOS app failed first time as I accidentally used "Free" in the app name, and the app declared support for UIBackgroundModes but they were "unable to locate any features that require persistent audio". The dictation keyboard switched you to the app, then if you left would keep recording... fairly basic and obvious stuff. I could have either gone back and argued the case, or simply rip it out which I opted for.
It's now failed again because: The keyboard extension does not provide any functionality when the "Full Access" setting is toggled off.
Well no, hardly my fault you've locked down the usefulness of third-party keyboards, but now I've added a full keyboard in there so it's a bit more useful without that access. I don't expect any users to ever see this. Admittedly this was more frustrating when that would be a couple days work, not just a quick prompt, to fix.
Good luck with your app. Don't worry too much, you can generally work through their issues... but it can be a slow process. Make sure you leave plenty of time between your submission and when you want to launch!
Do you want to release it to the general public or just a circle of friends and family? TestFlight lets you have up to a hundred users forever without ever truly releasing. I have a couple of home-relevant apps I am managing that way.
I think that's a fair question. For this app I didn't see the harm in releasing it. You have to pay for the account etc. to get it onto TestFlight anyway, so I might as well just put it out there. And avoids me having to resubmit every 90 days. There also wasn't a lot of custom "me" stuff in this one, but I could see going that route for other apps in the future.
It’s not super onerous, but it is much more annoying than the theoretical alternative of allowing people to install software of their choosing on their hardware (i.e. download the binary and run it)