I am confused. Is this ejected or not?

Please provide the following:

  1. SDK Version: 43.02
  2. Platforms(Android/iOS/web/all): ios
  3. Add the appropriate “Tag” based on what Expo library you have a question on.

My Steps.

  1. expo init my-project && cd my-project
  2. run expo run:ios
  3. I can see that now it generates ios folder and runs the app via classic metro. Not expo go
  4. Add some native stuff that requires pod install or etc. For example, react-native-fast-image or expo iap

At this point, am I ejected or not? Can I still use managed workflow features?

  1. app.json or app.config.js
  2. expo go => I have learned that this will work if I use expo-dev-client
  3. install expo sdk libs WITHOUT bareflow additional commands.
  4. OTA with expo-updates or EAS build or more that i will miss?

If All Yes, Great! Then My question will be changed.
expo run:ios and expo run:android will generated ios and android folder.
Now I can add natives stuff without Ejecting.
Why should I eject? The only purpose of ejecting is to install native stuff. But I can install native stuff without ejecting?

I am Confused~~ Help mee~~~~

Hmm interesting…Before using EAS. It smelled like the app was inside managed flow. I didn’t need to add additional commands when installing expo libs.

However, after i excute eas build. Something happened and now it have turned to barework flow automatically.

So my question’s conclustion will be Yes it is same as ejected. But I want to hear more details if I am missing something

project is bare/ejected if there is android and/or ios folder, it can happen if you run eject/prebuild/run:ios/run:android.

If you want to use run:ios and run:android but still keep your project as managed with eas build you need to add android and ios directory to gitignore (if they already exist delete them or remove them from git state with git rm command).

Hi @devhyunjae

See this info on “cleaning up” after running expo run:* or expo prebuild:


Basically, running one of those commands effectively ejects the app.

With EAS Build you can use native stuff without ejecting. But you might need to write a config plugin for it to work. This is because EAS Build and config plugins are still pretty new, so the authors of most native React Native modules will not have written config plugins for them yet.

If you need some native React Native module it might still make sense to eject for now, depending on how hard it is to write the config plugin. Fortunately, with EAS Build you can still build a Bare app on Expo’s build farm and you can still use OTA updates and you can still use expo-dev-client. Also, if you are the authors of the module that you need write a config plugin for it in future, you can basically “uneject” the app back to the managed workflow at that time.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.