Note that running on device requires Apple Developer account and provisioning your iPhone. This guide covers only React Native specific topic.
You can iterate quickly on device using development server. To do that, your laptop and your phone have to be on the same wifi network.
AwesomeApp/ios/AwesomeApp/AppDelegate.m
localhost
to your laptop's IP. On Mac, you can find the IP address in System Preferences / Network.Hint
Shake the device to open development menu (reload, debug, etc.)
You can also pack all the JavaScript code within the app itself. This way you can test it without development server running and submit the app to the AppStore.
AwesomeApp/ios/AwesomeApp/AppDelegate.m
jsCodeLocation = [[NSBundle mainBundle] ...
react-native bundle
command in terminal from the root directory of your appThe bundle script supports a couple of flags:
--dev
- a boolean with a default value of true
. With the --dev true
flag, the bundled JavaScript code turns on useful development warnings and limits performance optimizations. For production it is recommended to pass --dev false
. Also for production, be sure to have your native build configuration set to Release
(e.g., Xcode's Release configuration for iOS and gradle's assembleRelease
task for Android) in order to disable things like the shake-to-show developer menu.--minify
- pipe the JS code through UglifyJS.Note that on 0.14 we'll change the API of react-native bundle
. The major changes are:
entry-file <path>
based instead of url based.--platform <ios|android>
.--out
has been renamed for --bundle-output
.--sourcemap-output <path>
When building your app for production, your app's scheme should be set to Release
as detailed in the debugging documentation in order to disable the in-app developer menu.
If curl
command fails make sure the packager is running. Also try adding --ipv4
flag to the end of it.
If you started your project a while ago, main.jsbundle
might not be included into Xcode project. To add it, right click on your project directory and click "Add Files to ..." - choose the main.jsbundle
file that you generated.