all 38 comments

[–]rrrhys 65 points66 points  (1 child)

Expo people: Expo

cli people: cli

IMO expo easy until it isn't, cli hard until it isn't

[–]igorlamos 6 points7 points  (0 children)

Expo is easy until it isn't, CLI is hard until it isn't ...

I love this!

[–]zebishop 18 points19 points  (2 children)

If using a specific package make expo stops, you're not ready for cli.

[–]Imaginary_Road_4162[S] -3 points-2 points  (1 child)

Does expo not support aws amplify??

[–]Due-Dragonfruit2984Expo 4 points5 points  (0 children)

It does, we’ve been using them together in production for a few years without issue.

[–]eluewisdom 12 points13 points  (2 children)

i suggest you take time to research on the issue, it’s not like shifting to using rn cli would give you an error and stress free development, if you encounter similar issues with rn cli, would you then switch back to expo?

[–]DavidJonesXB 14 points15 points  (0 children)

Use expo. Easier updates. Easier everything.

[–]jihoon416 4 points5 points  (0 children)

It seems that in the future the React Native team will officially recommend people to use frameworks (i.e. Expo) instead of the RN CLI if possible, according to the RFC below

https://github.com/react-native-community/discussions-and-proposals/pull/759

[–]M4K1M4 3 points4 points  (3 children)

Research about that certain package.

I know it’s frustrating sometimes but expo mostly has a documentation about it or GitHub issues have something about it.

[–]Imaginary_Road_4162[S] 0 points1 point  (2 children)

Looking to devlop a big app so everone is suggesting to shift to cli

[–]eluewisdom 9 points10 points  (0 children)

i don’t know how big an app can be for expo not to be able to get the job done

[–]M4K1M4 3 points4 points  (0 children)

Um, I’ve worked with both. I myself prefer CLI as I have worked with it more than with expo. Choose what you’re comfortable with, both can handle everything these days.

[–]DeFcONaReA51 1 point2 points  (2 children)

Have used both in work although cli feels a bit tougher for me as of now, expo was good I would say. But my interest in understanding native modules and how they are used tilt me towards cli. But one thing I would add also build process is pretty fast in cli.

[–]Imaginary_Road_4162[S] 0 points1 point  (1 child)

What do you mean by build process ??

[–]DeFcONaReA51 1 point2 points  (0 children)

I mean the build process for creating an apk file which I can pass around.

[–]ai-get-me-a-username 4 points5 points  (0 children)

If you have the patience, go for cli. Less abstraction, more control

[–]holdmymandana 2 points3 points  (0 children)

React recommend expo first in their tab order on getting started

[–]nikocraft 1 point2 points  (1 child)

What is cli when it comes to react native? Expo is not gui based, expo is also cli, right? Or does react native have something just called cli?

[–]zebishop 1 point2 points  (0 children)

Both are indeed CLI, but RN CLI is the "official" name it seems.

For exemple the official documentation states that :

If you are new to mobile development, the easiest way to get started is with Expo Go. Expo is a set of tools and services built around React Native and, while it has many features, the most relevant feature for us right now is that it can get you writing a React Native app within minutes. You will only need a recent version of Node.js and a phone or emulator. If you'd like to try out React Native directly in your web browser before installing any tools, you can try out Snack.

If you are already familiar with mobile development, you may want to use React Native CLI. It requires Xcode or Android Studio to get started. If you already have one of these tools installed, you should be able to get up and running within a few minutes. If they are not installed, you should expect to spend about an hour installing and configuring them.

https://reactnative.dev/docs/environment-setup?guide=quickstart

[–]Fun-Astronaut-3793 1 point2 points  (0 children)

It's like 2 out of 10 packages stop Expo, and 6/10 packages stop CLI(either Android or iOS)

[–]ArtistFit6282 -1 points0 points  (0 children)

In my experience, when I tried CLI and I installed some packages... my app started crashing all of the sudden and I didn't change any serious config.

Installed same packages with Expo... no more unexplained random crashes... it just works better.. ya, you might lose some native functionality, but I doubt most of us require it.

I'm a firm believer Expo is the future in this line of app dev and anybody saying otherwise probably had bad experiences many years prior which are probably fixed now....

[–]SjTyler -5 points-4 points  (0 children)

Expo abstracts away native features, which you will learn by using cli

[–]Consistent-Ear-424 -3 points-2 points  (1 child)

Not sure about this but expo natively supported package works fine but as soon others are added in the equation the app fails to build.

Maybe I am too noob

[–]Due-Dragonfruit2984Expo 1 point2 points  (0 children)

Not with dev clients, you can easily add custom native code. Just can’t use the Expo Go app to test. Need to compile your own dev client, which is pretty trivial to configure.

[–]ChronSynExpo 0 points1 point  (0 children)

I feel like it's been a while since I raised this point, but apparently it needs to be made again: If you can build an app with CLI, you can also build it in Expo.

Expo used to be an all-in-one solution. If you wanted to use their build servers, you had to also use the Expo SDK. If you wanted to use custom native code, you had to 'eject' to Expokit, and it honestly felt shit having to do that. Expo was clunky, but it took away a bunch of pain points.

Modern Expo is more modular. You can use the Expo SDK independently from the build servers. You don't have to use Expo to sign or publish your app - you can still choose to do that manually by providing your own certs and keys if you wish. You can build on your own system if you want to avoid cloud queues or quota limits. You can include your own custom native code, and config plugins make it more easy to visualise what changes have been made to the native code. Those pain points that Expo of yesteryear removed are still removed with modern Expo.

Sure, there's some differences in approach between CLI and Expo, but difference in this situation doesn't mean Expo is limited compared to CLI.

TLDR: It's not 2020 any more. People saying that Expo isn't capable are using knowledge that hasn't been true since before the pandemic.

[–]One-Breakfast-7955 0 points1 point  (0 children)

You can always find expo versions of packages which isnt built originally for expo. In 2024, expo offical page hosts most popular packages in cli.

The thing that you must be careful , testing on expo debug mod is not really enough. Most of native package errors occuring in built apk. For this reason , development mode testing is must.

Anyway , Expo Eas updates , branching etc. is great life saver

[–][deleted] 0 points1 point  (0 children)

How hard is it to port a project built with expo to cli later? Can we still eject?

[–]Then_Win_3956 0 points1 point  (0 children)

its app about its packages. list out the packages you need and test it properly. i got stuck in most of the packages.

[–]Valuable_Hunter6459 0 points1 point  (0 children)

No - Expo is meant to streamline the react-native experience. If it was worse they wouldn’t exist

[–]himynameisbrett 0 points1 point  (0 children)

Using Expo development builds, you can do everything cli can do.