0

I'm about to start developing a React Native app. However, for iOS, my company is unable to provide me a physical Mac device for building/publishing the app.

So I'm planning to use Expo. But can Expo replace a physical Mac for building the app (I mean, getting the app ready for the App Store) ? Or is Expo only used to test the app on an iPhone (by flashing the QR code) ? I'm a bit confused.

tR4x
  • 65
  • 2
  • 8
  • Possible duplicate of [React Native expo create iOS app without mac?](https://stackoverflow.com/questions/46670088/react-native-expo-create-ios-app-without-mac). If you ever need to eject your app you will need a Mac. – Steven B. Dec 20 '18 at 17:58

1 Answers1

-2

Short answer: Yes, with a curve.

Long answer: Before your app is released, react native needs to transpile your javascript to exo-native code (not sure of the real term for that). And this process may not run unless you 'eject' your code. This produces the android and ios folders that would be almost production ready except that you now have to build to generate apk in the case of Android or app in the case of iOS.

Now if you have added third party plugins, that have native codes, that expo does not already have a unimodule for, these won't work in expo because they need to really be compiled into native codes before being bundled into your app.

Edit: Expos has evolved during these years and the former short answer I gave as No, no longer is as valid. You can now build without a Mac; expo does that for you.

Peter
  • 6,509
  • 4
  • 30
  • 34
  • So, if I understand correctly: Expo is able to build a production-ready version of the app by "ejecting" it, but this is not possible if I'm using native code or plugins ? Also, it doesn't sound very reliable for production apps... Am I right ? – tR4x Dec 21 '18 at 10:29
  • I'm not sure expo can do the "eject" part. Expo is not reliable for production apps, Yes. – Peter Dec 21 '18 at 10:36
  • Thank you for your help – tR4x Dec 21 '18 at 11:45
  • 5
    This is almost entirely incorrect. The transpilation is done from ES6 with all the extra bells and whistles to (I think) ES5. The native code is run by the expo client on your device. Your code never becomes native - it runs in a JS engine. Expo runs build servers that allow you to package your code into an .IPA suitable for app store/testflight submission, meaning you never need a mac so long as you don't eject. Ejecting is not necessary unless you need to use a native module that Expo doesn't already provide a wrapper for. – Adam Barnes Jul 22 '19 at 12:35