Update from 09/2017
It is possible to develop iOS (and Android at the same time) application using React Native + Expo without owning a mac. You will also be able to run your iOS application within iOS Expo app while developing it. (You can even publish it for other people to access, but it will only run within Expo app). Here is page from Expo on how to generate standalone app.
Steps from that page:
One: Install exp
by running npm install -g exp
Two: Configure app.json (somewhere along these lines):
{
"expo": {
"name": "Your App Name",
"icon": "./path/to/your/app-icon.png",
"version": "1.0.0",
"slug": "your-app-slug",
"sdkVersion": "17.0.0",
"ios": {
"bundleIdentifier": "com.yourcompany.yourappname"
},
"android": {
"package": "com.yourcompany.yourappname"
}
}
}
Three: Start exp
packeger with exp start
Four: run exp build:android
or exp build:ios
.
You will be prompted for some input. For android you can choose 1) Let Expo handle the process!
if you don't have keystore (or if you don't know what it is). For iOS you will have to enter your Apple developer credentials. Then you can provide distribution certificate or let expo handle it.
Five: Once in a while you will have to come back and run exp build:status
command to check whether your build was complete. If complete you will be provided a direct link to .apk
or .ipa
file.
The only drawback to this approach is that it won't be as native as writing iOS app in Swift, and you will have to put up with parade of issues you may run into while developing with weakly typed js, npm, and it's dependency-on-particular-version-of-some-other-library issues, and other stuff.