1 00:00:02,140 --> 00:00:06,450 Throughout this course, we built React Native apps and I really want to emphasize this, 2 00:00:06,490 --> 00:00:12,480 we built React Native apps but we built them with a tool called expo and as you saw throughout this 3 00:00:12,490 --> 00:00:17,530 course, expo mostly get out of our way but it made building these apps way simpler. 4 00:00:17,530 --> 00:00:23,530 The setup process is simple, you can test it on your real device without any special configuration neither, 5 00:00:23,530 --> 00:00:31,060 you can easily add native modules and you have a huge catalog of built-in native modules and so on. So developing 6 00:00:31,060 --> 00:00:36,970 React Native apps with the help of expo is really easy and therefore my recommended way of doing it. Now 7 00:00:36,980 --> 00:00:41,090 there can be reasons why you might want to build an app without expo, 8 00:00:41,260 --> 00:00:47,530 for one you must not forget that expo of course works such that you have the expo client on your real 9 00:00:47,530 --> 00:00:52,480 device or also on the simulator of course, there we also in the end installed the expo client, so this 10 00:00:52,570 --> 00:00:59,890 app on the device and your app kind of gets loaded into that client. Now you still will be able to publish 11 00:00:59,890 --> 00:01:05,260 a standalone app as you learned, so you can still publish an app which you upload to the app stores where 12 00:01:05,260 --> 00:01:10,780 people don't need to install the client but this published app will in the end kind of include that app 13 00:01:10,780 --> 00:01:17,500 wrapper, so it will be a standalone app where people don't need to install the expo client app but the 14 00:01:17,500 --> 00:01:19,980 expo client app is part of your app you could say, 15 00:01:19,990 --> 00:01:23,270 so people indirectly install it if that makes sense. 16 00:01:23,320 --> 00:01:27,880 So you always have this wrapper and therefore one reason for not using expo but could be that you want 17 00:01:27,880 --> 00:01:32,980 to get rid of that wrapper because as you might imagine, this wrapper whilst still giving you a native 18 00:01:32,980 --> 00:01:38,230 app and whilst still giving you the benefits of your views being compiled to native views, whilst 19 00:01:38,230 --> 00:01:44,060 all of that is the case, this wrapper of course adds a little bit of size to your app, your app gets bigger. 20 00:01:44,110 --> 00:01:47,460 It probably also gets a bit slower because of that extra wrapper, though 21 00:01:47,500 --> 00:01:50,620 I still want to emphasize you get a native compiled app, right? 22 00:01:50,620 --> 00:01:54,710 Your views still are compiled to native code so you don't lose that, 23 00:01:54,730 --> 00:02:00,300 it's not like Ionic where Ionic use a native app as a wrapper for a web app, 24 00:02:00,310 --> 00:02:01,950 that's not what's happening here, 25 00:02:01,960 --> 00:02:03,450 still you have that overhead. 26 00:02:03,460 --> 00:02:10,240 So one reason for not using expo might be that you want to get rid of that extra wrapper, another reason 27 00:02:10,240 --> 00:02:16,000 could be that you need some native device functionality outside of what we used in the native feature 28 00:02:16,000 --> 00:02:18,580 module that isn't included in expo, 29 00:02:18,580 --> 00:02:24,580 so some feature which you just can't add with the help of expo and then you're stuck. If you need 30 00:02:24,580 --> 00:02:28,210 some feature that's not part of expo's of which you can't find here, 31 00:02:28,330 --> 00:02:33,580 then you can't add it to a React Native app built with expo, there's no way for that. You can't write 32 00:02:33,580 --> 00:02:39,070 your own native code and connect it and you can't bring other third-party packages which tap into native 33 00:02:39,070 --> 00:02:41,680 device features, that's not supported in expo. 34 00:02:41,770 --> 00:02:46,420 So these could be two reasons for why you want to switch away - you want to get rid of that wrapper because 35 00:02:46,480 --> 00:02:53,350 every millisecond of performance matters to you and every kilobytes of size matters to you or because of 36 00:02:53,710 --> 00:02:55,420 a native feature that's missing. 37 00:02:55,420 --> 00:03:01,120 Now I will emphasize for most apps, both reasons probably don't apply because we're not talking about 38 00:03:01,120 --> 00:03:03,070 a huge performance hit, 39 00:03:03,070 --> 00:03:09,700 we're not talking about a super huge app which you would be getting, indeed it's very lean but still that 40 00:03:09,700 --> 00:03:11,250 might be a thing for some apps 41 00:03:11,290 --> 00:03:15,850 and the thing with the native modules which might be missing, there is so many included, 42 00:03:15,880 --> 00:03:21,580 chances are that you can built the app you want to build with what's included. But in case something 43 00:03:21,580 --> 00:03:26,440 is missing, you can of course also build a React Native app and we can find that on the official docs 44 00:03:26,440 --> 00:03:28,210 too without expo. 45 00:03:28,210 --> 00:03:30,120 Now let me dive into the alternatives you have.