Hot reload using EAS - react-native

About a year ago, when I was using Expo to build react native apps, there were :-
hot reload
hosting to Expo build site, from where testers could download by scanning the QR code
run time errors display on emulator or connected device
When I revisited the app after a break of 1 year, I see that Expo is migrating to EAS (Expo Application Services). So, I ejected from Expo, and use 'eas build' .
Now I build using 'preview' profile, download the '.apk' from the EAS build site, drag it onto Android Emulator to test.
However, I don't see the above facilities of 'hot reload' and 'uploading to an Expo site for testers to download', or 'run time errors display on connected device'.
What is the alternative ? Should I go back to using react-native build ?

It a little easier to answer your question if there is only one question 🙂
However, I don't see the above facilities of 'hot reload' ..
Shaking the device should show a fast refresh option
..and 'uploading to an Expo site for testers to download'
You can use EAS updates together with the dev-client
eas update --branch testers --message "Feature A"
Shake device
"Go home"
Extensions
sign in (to an expo user that is connected to an organisation)
pick the updates to try out
or 'run time errors display on connected device'.
It should display the errors (it does that for me with the dev-client)
What is the alternative ? Should I go back to using react-native build ?
There aren't many great alternative to expo - perhaps "vanilla" React Native with some firebase features or Microsoft app center?
Hope this answer your question(s).

Related

Impossible to update expo project inside Expo Go after switching to EAS Build

I have the need to run a project from Expo Go without being connected to PC. We are developing an app that require GPS and needs to be tested in open field.
Before EAS became the standard to create projects i used
expo build:android
ad this created not only the apk, but uploaded the project to my account and i was able to start it from Expo Go projects section just like the app was installed on phisical device. That worked also fo iOS and was a great testing feature.
After i moved to EAS Build
eas build -p android --profile preview --clear-cache
my project inside Expo Go does not update anymore and its stucked at sdk 44 even if now i'm working (and creating builds) with sdk 46.
I went through the official documentation many times but i don't get how to make the app start from Expo Go (project sction) as i did before. Maybe i'm missing some configuration.
Thank you all for any kind reply.
Have a good day.
EDIT
I found the solution to this problem and now my builds are working and uploading to Expo Go.
Check out this information: https://github.com/expo/fyi/blob/main/eas-build-archive.md
Basically EAS Updates will not bundle anything inside your .gitignore, in my case it needed specific config files. Did a quick test by taking them off the .gitignore and now it's working. Will move to GitHub SECRETS in the future.
Hope that helps.

Expo Push Notification

I am using Expo Push Notification. I proceeded according to the instructions on the Expo site expo-push-notifications, but I realized that in order to receive the Expo Push Token, we must have an Expo account, and before running the project, we must log in to our account using the Expo Login command and then run the project.My question is, when the build project is taken out and put into production mode, do these services still work properly or do we have to apply certain settings and the Expo site tips are only for the development phase? I am a beginner in developing React Native programs and I have no special experience in this field. Please share your experiences with Expo Push Notification with me. Thanks.
When you build your app on Expo servers for example by expo build:ios command, it is handled by Expo services, but if you decided to build your app through, for example, Github Actions, you have to deliver APN keys to Expo by your own through expo credentials:manager. On your Expo account are stored credential files to use by Expo PUSH Broadcaster, so this connection between the app and your account is required.
Here you can find more details about signing your applications:
https://docs.expo.io/distribution/app-signing/#push-notification-keys

Switching between Expo Apps Running on Android Emulator

I am sorry for the trivial question!
While testing an Expo (react-native) app on Android Emulator, I need to switch to other apps, e.g. to the Contacts Manager to add a contact. Then, I need to go back to the Expo app to test something. How can I do that?
I tried the following.
Start the Expo app and play with it
Press the Home button
Start Contacts Manager
I could NOT find a way to start the Expo app again. I found an Expo icon in the list of apps. When I clicked on it, a screen with everything disabled, except "Open from Clipboard" appeared. The "Open from Clipboard" option seems to be for switching between different Expo apps. Anyway, when I clicked on it, I got the following error message.
Something went wrong. Could not load exp://switching/%20between%20Expo%20apps%20running%20on%20Android%20Emulator.
Environment:
Expo: 32.0.0
Android Emulator: API: 25 - Android 7.1.1 x86 - Nexus S
Thank you for your effort and time to help...
Are you using a connection localhost? if yes, on the terminal, try to press 'a'.

React Native application deployment

I have already developed a React native application on my mac book, this is myfirst application. I want to deploy it to iPhone so that I can test it. I don't want to put it on appstore yet. I am not sure how to compile the application and get it ready to put it on iPhone. I tried this web site
https://www.diawi.com/, but not sure which .ipa or a.pk file, I need to upload. I can also try using expo, but not sure how to use it. Can anyone give me step by step instruction on how to upload this application on iPhone.
any help will be greatly appreciated.
For iPhone
For react-native-init you will probably need Apple developer account to test your app on your phone
Since you are using react-native-init, You should checkout this article by Facebook
https://facebook.github.io/react-native/docs/running-on-device
In the second point, it says Register for an Apple developer account if you don't have one yet
For create-react-native-app you need to do following
Download expo client from App store
Scan the QR code expo generate when you run your app using terminal (npm run start in terminal )
Note: Both Laptop and your phone should be on the same network
According to this thread, You can't use expo with react-native-init but alternatively you can create an expo project using create-react-native-app and then copy, paste files from your init project
For Android
For running your App on Android, You can directly generate/build an apk, send it to your device and just open it to see how it works (In Android you don't need a console or developer account to run your app)
Again, Open this link https://facebook.github.io/react-native/docs/running-on-device
And click on Android Tab to see how you can generate an Apk

Can I not use Expo (cloud service) at all using React Native

I have build an app using react native(detached) but the thing is I would want to completely get rid of Expo. The reason is, what if one day EXPO service get shut down or no more supported.
So in this case I would not want the app to be affected.
Currently I need to publish my app thru ExpoKit to see the latest changes, how would I build my android app so it would not have any reference to Expo but still be able to work properly
Currently this is how I understand how the react native and expo works: first u build ur app using react native code and then a bundle.js is generated somewhere on cloud(EXPO) using publish command so the app communicate with that bundle.js.
Note I am not using any feature from Expo so why would I need Expo in this case?
Edited: If I am detaching my app from expo, I mean why would I still need Expo? Can't I just build the app and run the app without expo at all?
You can build your whole application without using expo, just follow the steps from facebook documentation in "Building Projects with Native Code" tab.
or
you can run "npm run eject" in your project root directory folder.
After this, you can build your appliaction using react-native cli commands, like
react-native run-android.
edited :--
For building apk for production, you can follow steps given in facebook documentation as generating signed apk and for released IPA for iOS yo can follow building your app for production for IOS.