Detaching from Expo without pain - reactjs

We are building an Expo / React Native app and we need to detach to add Intercom native library. We really like the workflow we currently have with Expo / Expo client and are a bit frightened to detach.
Let's imagine we are a team of 3 developers:
1 has some native mobile knowledge
1 is a good react/redux developer, mostly managing app state and architecture
1 is a "react native integrator", mostly handling styles and render functions
Is it possible that only the developer with native knowledge manages the ejected app (like, on another git branch?), and that the 2 other developers keep the same productivity that we have with Expo client?
Is it possible to deploy Expo JS updates (not through stores) without having XCode or Android Studio setup locally?
Is there any way to make sure that our "react native integrator" does not have to install XCode / Android Studio / RN just to be able to change some colors and font sizes of the app?

Is it possible to deploy Expo JS updates (not through stores) without having XCode or Android Studio setup locally?
Expo is really cool because even after you detach you can still do exp publish and then your native app will read from that new bundle on Expo.
This is like CodePush but built in! Dev 2, and dev 3 can continue to build an Expo app without ever touching native code. Meanwhile dev 1 can implement native modules for them to use... 😁
Side Note
You may also be prime candidates for Expo release channels, made by the talented Quin Jung!
Here is a quote from the doc: "Consider a situation where you have a Staging stack for testing on Expo Client, and a Production stack for pushing through TestFlight, then promoting to the AppStore..."

Related

React Native PWA with react-native-view-pager

I'm developing a React Native application with Expo, after a few weeks of development I wanted to check my app on the browser by running: expo start --web
The Expo project is starting without any issues, however when I navigate to the local address where the app is being served I get a nasty error:
This is my first React Native app and I'm not sure if the react-native-pager-view simply cannot be run in the browser or I just need to add some webpack configuration for it to succeed.
Any help would be much appreciated.
React native is not meant to work as PWA.
PWA is just a web application that depends on chrome features to look and feel as mobile app. But they are not such smoothly experience as with a react-native or android/ios app.
If you are trying to test this on the web, be sure that you are following the steps in the official docs of react native. And check the example app from react-native-pager-view that works, you could start from there

watching courses react native expo and react-native cli

I have knowledge about react native with cli, while in most of the courses they used react native with expo, my question is that , can i follow a course while i am using react native with cli? are there big differences between them ?
For beginners, I would recommend going with Expo since it will take a lot of your headache away, and later, when you are more familiar with the React environment, you can always eject from Expo to Bareflow, which works similar to the React-Native CLI but comes under Expo.
In my opinion, React-Native CLI gives you more freedom, liberty, and control to express and experiment over your code whereas, Expo binds you in a shell where you rely more on Expo dependencies. The choice is yours depending on your level of the React expertise.
hope you got your answer

How do I run expo apps on android studio without ejecting?

I followed expo documentation, but I can't figure out how to run it on an emulator without ejecting. I've heard ejecting is risky and I can't keep making changes to the app if I eject. When I click run, it gives me Error: Module not specified, but there is no module from the dropdown list.
You can run your app on android emulator with expo app on this emulator or make expo build:android and select apk option. Then just download and install apk on any device. You don't able to run expo app in android studio like native app without ejecting. I recommend you not to use Expo at all and have a look on fast line, pure react native app is more flexible and with fast line has almost the same benefits like expo app. Development without expo is not a big deal.

I have already installed react and create-react-app globally. But when i try to start a new react app it starts installing react again

I am using Ubuntu 18.04. I have isntalled react-dom as well. Why do I have to reinstall all these again?
Because React is a dependency of your project, not in your environment.
When your site is a live, you can't tell the clients: If you're looking for the React part, don't worry, it's on my machine.. It has to bundled with the rest of your code.
Also, if you have 2 projects with different React's version how it should be managed?
Unlike create-react-app which is used only to generate the project. Once the project been created, it's not connected to the tool (create-react-app) in any way.
Think of it like a car. No one cares if the car made in one country or another (create-react-app / manually / forked from OpenSource) as long as it has engine (React).

React Native installation: Diff between create-react-native-app and react-native-cli

I am a newbie to React Native and I have just started leaning it. During its installation, came across the following commands
npm install -g create-react-native-app
npm install -g react-native-cli
It says that the first one is the easiest way to start building a new React Native application, where as the second is from older mode of installation. How these two ways differ from each other? Which one should be selected especially as a beginner like me to learn React Native? Which one is the best way to install React Native?
The create-react-native-app package is a community-driven package that gives you a basic template for React Native so you can start right away instead of having to set up Babel, Expo (which allows for cross-platform development), etc. It's a great way to start with React Native without having to set up any boilerplate or have an Apple machine for iOS projects. It's a CLI that generates a project for you to start without any hassle.
But create-react-native-app has its limitations. The tradeoff is out-of-box ease for less customizability. That's where react-native-cli comes in. This is the CLI that is used to create new pure React Native projects, run them, etc. This does not include Expo which does not allow for the ease with CRNA nor cross-platform development (you'll have to use an Apple machine for iOS). But with a pure React Native project, you can add native libraries and APIs for your project, which is not possible with CRNA. You can achieve a pure React Native project from a CRNA project by ejecting down the line.
I would suggest CRNA as a starting point because it allows you to use Expo to demo your apps on devices quickly and has support for both Android & iOS, regardless if you have Xcode or not -- without any configuration hassle. But it comes with limitations which you can alleviate with ejecting (but will lose other capabilities).

Resources