I'm going to install Android studio and run react native on it But will it give me iOS apk still!? I have heard that we don't need to rewrite react native code for iOS .
2 Answers
React Native IS cross-platform, building the apps for production on different platforms, however, requires a different procedure. What makes it cross platform is that you write the source codes including all of the components (Well most of them) one time, and it automatically generates the native codes for Android and IOS.
Expo helps in testing the app on both android and ios without the need of a Mac (it has some other cool features too!). So if you want to release to apple store, you'll definitely need to use XCode on a mac (or a virtual machine running MacOS like VMWare)
In order to generate the release apk for android: Android Release APK
and for IOS: IOS

- 1,139
- 3
- 14
- 30
There are two flavours of React Native. Expo and react-native init
This SO answer explains the main differences between them. What is the difference between Expo and React Native?
tl;dr
Expo (it is a set of tools around react native) will make crossplatform applications without requiring you to edit native code. It can make both iOS and Android apps on Windows PCs and Macs. Expo builds the apk and the ipa on their own servers.
react-native init
(actual react native) it will also create cross platform apps. It may require you to work with native code. You can only develop iOS apps on a Mac. But it is much more flexible in what you can do and what dependencies you can use. You have to build the apk and ipa on your own machine.
You best bet is to check out the documentation, all the answers are there. You just have to read through them. https://facebook.github.io/react-native/docs/getting-started https://docs.expo.io/versions/latest/