Hi
Please bear in mind that while reading your comments we can’t determine your intentions or tone, so your words might seem hurtful towards people who are working hard to improve the React Native environment. So it might be better to ask questions about how to do certain things (e.g. how to do face detection or motion detection) using the Expo managed workflow, or the Bare workflow or maybe just React Native or something else entirely instead.
I think it would probably help your understanding to read the following from the Expo docs:
How do I add custom native code to my Expo project?
Managed Expo projects don’t support custom native code, including third-party libraries which require custom native components. In a managed project, you only write JavaScript.
In our SDK, we give you a large set of commonly desired, high-quality native modules. We recommend doing as much in JavaScript as possible, since it can immediately deploy to all your users and work across both platforms, and will always continue to benefit from Expo SDK updates.
However, if you need something custom that isn’t possible with the native modules provided in the SDK, like on-the-fly video processing or low-level control over the Bluetooth radio to do a firmware update and other features requested here, you can run expo eject
and have full control over the underlying native projects.
Also there’s a lot more info on the menu under Managed Workflow
And here’s a list of reasons why you might not want to use Expo:
https://docs.expo.io/versions/v36.0.0/introduction/why-not-expo/
There are a few things that Expo’s managed workflow provides that are not yet available in the Bare workflow. The Expo team has been working hard over the last several SDK versions to reduce this number. The next SDK version (37) will have extracted the OTA updates module to a Unimodule so that it can be used in the Bare workflow. The OTA updates is one of the main ones that would be painful to lose when ejecting.
So at the moment if you eject to the Bare workflow you will lose access to some of Expo’s functionality. The reason for this is purely because Expo has not yet had the time to make everything available in the Bare workflow. And as I said, they have been actively working to fix this.
Your comment is full of confusion, though. I hope the info pointed to above helps. Yes, if you have only been exposed to all of this for two weeks it can be very confusing, but it will get better! Try not to get too frustrated. This ranting just makes it sound like you’re trying to bad mouth Expo and/or React Native for no apparent reason.
This comment doesn’t really make sense. Expo is built on top of React Native. So Expo has to be compatible with React Native. I think what you mean is that you can’t just install some random React Native module in an Expo managed workflow app. However many React Native modules are written in pure JavaScript and do not need any native code which means they should work just as well in Expo as they do in a plain React Native app. Even some JavaScript code that is not written specifically for React Native will work in React Native or Expo (as long as it does not depend on things like the DOM or other certain things that are only available in a browser or a NodeJS environment.)
I don’t understand what you mean by this.
What do you mean by this? The React Native team did no such thing. There is no requirement to use Expo when developing a React Native app and Expo is making it easier with each new SDK to use parts of Expo in otherwise plain React Native apps.