Expo or Community CLI

Expo or the Community CLI: Choosing an Approach

Expo 6,418 is a framework on top of React Native 36,878 : a project template, a CLI (npx expo ...), a standard library of native modules, file-based routing with Expo Router 6,418 , and optional cloud services (EAS 6,418 ) for building and updating apps. The Community CLI (@react-native-community/cli) is the plain template the React Native team maintains: your JavaScript plus hand-maintained android/ and ios/ projects. React Native's own documentation now says, "if you're building a new app with React Native, we recommend using a Framework", and names Expo. The old objection, that Expo locks you out of native code, no longer holds: an Expo project can use any native library and your own Kotlin or Swift modules.

The two ways to create a React Native app
Question Expo (create-expo-app) Community CLI (init)
React Native version today 0.86.3 (pinned by SDK 57) 0.87.1 (latest)
Native folders Generated by expo prebuild Committed, edited by hand
Native configuration app.json and config plugins build.gradle, Info.plist
Cloud builds and updates EAS Build 6,418 , EAS Update 6,418 (optional) Your own CI, no update service
Licence MIT; EAS is paid with a free tier MIT

Pick the Community CLI to add React Native to an existing native app or to run a React Native release the week it ships (Expo SDKs trail by about one minor version). Pick Expo for everything else, which is what BookNest does. Infinite Red's Ignite 19,943 (https://github.com/infinitered/ignite 19,943 ) (about 20k GitHub 29 stars) is a popular third-party boilerplate that builds on Expo.