Mobile app using react-native-cli or expo-cli? - react-native

I'm going to make my first app in React Native. I have windows, but I want to make this app cross-platform. I want to use camera for making short videos (like tiktok) on this app.
Can I make this app using windows? and what I need to use? expo or react-native-cli?
Thank you!

I think that is a question about an opinion. To use the camera you'll need native modules, idk if expo allows that, some time ago didnt allow but idk what is status of expo now. Beyond that, IMHO you could begin with rn cli directly because this is the most used in "the real life" and no has a big difference with expo.

Related

Use Expo Metro Bundler instead of react-native start

currently I'm migrating my react native app to expo bare workflow. Everything it's been fine so far, except for the following.
This may seem like a noob mistake, but I'm unable to use the Metro Bundler from Expo when I run my app from Xcode. Before, I could run from Xcode and the simulator would appear in the Metro Bundler with all it's logs, that was very useful.
I've been searching this for a couple days and the closest thing I've found to what I want, is using expo build:ios. The problem, it pops up a warning saying that if I'm not sure what I'm doing it's best to leave it as it is. It's a big application so I'm worried it might lead to errors, therefore I didn't do it.
If anyone knows for sure if this command is what I'm looking for, or has a better suggestion, it would be much appreciated. Thank you.
[EDIT]
To be more specific, I don't mean using the Expo Go app. I mean a standalone app (I'm not sure if this is the correct term for it). Thank you!!
expo build:ios is used for building an app bundle for your application. This is used when you want to publish your application on the store and that is why it asks for credentials of developer account on the iOS.
If you just want to run your app and check then you should use expo start. This will start the Metro Bundler for you and then you can run your application on your device scanning the QR code that would appear there.

How to connect to an SSID from an app built with Expo and React Native?

I want my app to be able to connect to a Wifi network whose SSID and password are already gonna be hardcoded in the app. Hope there is a way to do this in expo. I know I could use something like https://www.npmjs.com/package/react-native-wifi-reborn but probably do not want to eject out of expo.
Answering my own question here for anyone who's facing the same problem.
With the latest Expo updates now we can add react-native packages to the managed expo workflow without ever ejecting. What that means is we can install https://www.npmjs.com/package/react-native-wifi-reborn to our Expo project.
We'll just be needing to install expo-dev-client to our project and then use EAS build. Consider reading this guide to follow the exact steps needed https://docs.expo.dev/development/getting-started/
Here is a little blog post I wrote discussing about the same.
https://blog.chiragsrvstv.dev/install-native-modules-with-expo

Should I use Expo for expo audio library or React-native-track-player?

I have my project which I initialised with 'react-native init' . I am thinking of using expo audio library because of it's robust functionalities . But , I have read Expo isn't the solution. It increases the app size. You've to eject it in the end. So can anyone suggest me which woulod be a better solution in this case?
Some of the shortcomings of Expo:
Does not play nicely with Hot reloading
Linking with third party library can be cumbersome sometimes.(Expo include the facebook sdk which is a overhead.)
Poor notification service.
I had a project first made with expo , then after few time , got to realize the limitations. I would surely say expo is only for learning react native. You should never use expo for production. Here are the few things ive observed which i would like to share :
Expo app size is huge and app becomes very laggy .
You cant use libraries where linking is required and thats a big no no.
You dont have hold over app size bundling , specially in android as you can use a few tweaks like hermes etc to make your app more faster.
And you can always use expo libraries in react native by using https://github.com/unimodules/react-native-unimodules
I would suggest you should use bare react native rather than expo.
Hope it helps . feel free for doubts

Using Exp development workflow with a pure react-native application

Might be a duplicate, didn't find one tho.
I started a new application with the react-native-cli.
I want to use expo for development purpose:
Running on devices through Expo.
Publishing through Expo.
Is such a thing possible?
Copy pasting your 2 questions in Google and the first result...
1.
https://docs.expo.io/versions/latest/guides/testing-on-devices/
2.
https://docs.expo.io/versions/latest/workflow/publishing/
any questions left???
No, its not possible, in the docs its explicitly mentioned you can choose either the expo path or bare react native path. And if you choose expo you can eject from it to pure react native but cant go vice versa because the expo wrapper cant be implemented on the bare app.
so you have to again build an app with expo-cli to use expo publishing facilities etc.
but if you want to use expo modules in bare react native app you can do by using react-native-unimodules .
rn-unimodules
hope it helps. feel free for doubts
If anyone is ever looking for the answer it is stated here:
https://docs.expo.io/versions/v35.0.0/introduction/managed-vs-bare/#bare-workflow
It clearly states that in "bare" workflow you cant use the build services of Expo.

React Native vs CRNA [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Closed 2 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
I want to start with React Native app development and need help to decide on which path I should go.
The main question is: should I go with React Native or create react native app?
From what I understand, CRNA really is react native using the expo client and tools, with a more comfortable use (no dev account required, etc)
I can see the advantages with using CRNA over react native (no being no need to set up dependencies, faster time to start with developing, no need for iPhone dev account or xcode+android combi, etc.)
However, as not all native libraries are included, I see myself in the need to export my app at a later point anyway and continue to work with xcode and Android Studio just like before.
So, if CRNA is just a nice way to get started with everything, then I would go for vanilla react native right away as I see no point in a temporary solution at all.
Also, and maybe you can correct me on this, I do not like the idea to have just another wrapper on top of my app, unless there are some more crucial advantages which I missed out.
So could you please share your experience on this? If you have developed apps with react native in the past, which path did you go and which path will you go in the future? React Native, CRNA or React Native and expo environment?
Hi I will also share some of my experience on the topic.
Since I have a front end background and was not familiar with XCode or Android Studio I've decided to start my native app developement from CRNA.
Indeed with just a text editor, purely with javascript and utilizing built-in expo SDK components I was quickly able to implement and publish to Play Store a fairly simple app.
That I find truly amazing :)
However after publishing the app I realized there are some pitfalls that unable it to compete with similar rival Java apps:
The biggest IMO is the size of the apk generated with exp
service.
For the app with just 3 screens and not a lot business logic, 25 mb and about 60mb after install is really a lot.
According to expo devs more complex apps will be approximately the same size or only slighty larger due to the bulk of the size being the native dependencies, and not actual javascript side.
But this still is a big problem and I will probably have to anyway eject the app to optimze the build size
So in general CRNA is a great and fast way to start and have something working but still before publishing the app to the users you'll not avoid seting up your custom build and all the dependencies like Android Studio
I think create-react-native-app is a good way to start so that you can focus on the React part of react native, especially if you are not familiar with React. And when you are ready to do things with native you can simply eject with npm run eject
When I started a new project with react native late last year, there was no create-react-native-app and I evaluated expo first. I didn’t like it as there were no easy native integration unless you eject when I know for sure we will need native integration. Therefore I went with vanilla react native. Also I already had experience with React on the web and iOS and Android native development.
TLDR
if you create project by create_react_native_app myproject
then it contains expo setting (not recomended )
if you create project by react-native myproject
then its plain react-native (recommended for small ,medium,large to projects )
Note : to use react-native command in terminal use this link
I would like to share my experience of app development . As I was new with react I started with CRNA and it went smoothly . Expo really provides many features like push notification , animations (recommended Lottie by Airbnb) and peace of mind that you can eject your app anytime you want to use native libraries with app . Best part is you don't have to rewrite any code and all expo exclusive features will work as well .
Therefore CRNA(use as much you can)+eject(when you need native libraries) = sweet spot .