> For the complete documentation index, see [llms.txt](https://twins-bamboo.gitbook.io/react-native-note/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://twins-bamboo.gitbook.io/react-native-note/other/expo-vs-rn-cli.md).

# Expo vs RN CLI

* **Expo**
  * pros:
    * Build projects easily.
      * No need to handle native errors.
      * Don’t have to worry much about the build procedure as Expo handles it themselves.
      * No need to have MacOS for building the iOS build.
    * Easily install the library if the library is supported by Expo itself
    * Easily shared the app to use.
  * cons:
    * Build project
      * generally builds application(apk) file is large  than built from RN CLI
      * when you are very late to the queue and the build might take upto 3\~4 hours to complete
    * Hard time to do addition of native code. Even need to eject the expo, go back to RN CLI.
    * Need to handle Expo problem.
    * Install the library not easily if the library is not supported by Expo
  * others:
    * Default has deeplink, **exp\://**
* **RN CLI**
  * pros:
    * Do addition of native modules easily
    * Build project > generally builds application(apk) file is smaller than builds by Expo
    * Most installation libraries are easier than Expo
  * cons:
    * Need to handle native build problems.
  * others:
    * Want to demo or give someone download can use some platform. Eg. Fastlane, AppHost..
    * Need to add listener in our app by ourselves. Use custom app scheme like **myapp\://**

Ex.

Seems we don’t have special features in Frontend(APP), means fewer chances we need to use native(android/ios) libraries.\
And Expo helps deal with many things about building and deploying.\
So keep using Expo is better.\
And authentication for iOS development and builds is a big pain.

2022.03.02
