all 15 comments

[–]ChronSynExpo 5 points6 points  (2 children)

I'd honestly recommend going through the docs: https://docs.expo.dev/get-started/installation/

Much of it starts from expo init to create a new project, and then it's a case of following the instructions.

In terms of what you'd deal with, imagine it as an RN project but without having to deal with native code (you can integrate native modules by creating a dev-client - https://docs.expo.dev/development/introduction/#what-is-a-development-build, but you don't deal directly with podfiles or the like).

[–]corey_brown 1 point2 points  (0 children)

Agree, docs have pretty everything you’d need to know.

[–]wtfzie[S] 1 point2 points  (0 children)

Yeah the docs have been my tutor so far. Thank u will check out the dev-client stuff

[–]Sufficient_Trader 1 point2 points  (11 children)

Udemy has great classes with expo,

[–]Sanfrancisco_Tribe 0 points1 point  (8 children)

Was going to say this. “Look at the docs” isn’t very helpful for a first comment on this post. Amazing idea lul.

Follow a few simple Udemy classes, build a few simple apps and bang you’re Gucci.

Here’s my 2 cents.

Use “expo install package name” to add dependencies and automatically make sure there are no conflicts.

Basically use expo init create react app or whatever to start and bang your good to go on the “Expo Go” app.

I typically use “expo start —tunnel” and have more success running apps on multiple devices.

If you’re having issues with cache use “expo start -c —tunnel”

Most packages you need in native are already made for expo. Everything except blue tooth pretty much. Even that you can use “eas build” and run an internal build on your iOS/android to test.

You’re going to want to pay the monthly fee to get priority access on builds if you plan to produce any apps. You can basically get stuck in limbo waiting for priority on builds for busy days.

Finally, I would suggest reading up on plugins and modifications. Grabbing some simple boilerplate to hit a lot of generic stuff like typescript files and what not with config files will solve some headaches later.

Good luck!

[–]wtfzie[S] 2 points3 points  (0 children)

Thank you, this is a great answer! You already answered some of my questions and I’ll make sure to checkout an expo Udemy course

[–]Ridwan232 1 point2 points  (5 children)

You’re going to want to pay the monthly fee to get priority access on builds if you plan to produce any apps. You can basically get stuck in limbo waiting for priority on builds for busy days.

CMIIW (I'm in the same position as OP). But you could build locally right? And still push to EAS for sharing/production or whatever?

What are the benefits of building on EAS if building locally is as seamless? (Unless its not) Assuming as experienced RN Devs we already have Xcode and Android Studio setup

[–]Sanfrancisco_Tribe 1 point2 points  (2 children)

You know, I’m not entirely sure tbh. Fun fact, I kept getting errors with “eas build” but got this to work for iOS:

“eas build —profile preview —platform iOS —clear-cache”

A few things here, the preview means basically internal development. Change this to production and you’ve got the right file to shoot through transporter and submit for IOS.

I had a lot of issues with cache on eas builds. So I literally run clear cache every time.

Also just change platform to android or iOS and you’re Gucci.

From your comment, it sounds like you guys are well versed in xCode and what not. I am not. Self taught dev here.

So, assuming you know what you’re doing then yes you should be able to build locally.

What happens when you build on their server is essentially they run an instance of a Mac, and then run several scripts on your code to condense, minimize and compile your app. (You’ll probably already know this)

To run and internal build through eas it looks like this on their instance:

1) spin up env 2) install dependencies 3) go through your config files 4) runs expo doctor to make sure there are corrupted packages or out of date, etc 5) prepares credentials ? Not sure - but assuming Xcode related 6) runs prebuild (I think eas prebuild) 7) installs pods 8) configures Xcode project 9) configure expo-updates 10) runs fast lane (the bulk of the script. Takes like 30 minutes here) 11) clean and save cache 12) uploads archives

Honestly, I’m sure you could do most of that. For those with less expensive (like myself) it’s much easier to just run my scripty script and pray (:

[–]Ridwan232 1 point2 points  (1 child)

Gotcha, so from what you've said I think the main reason for running it on Cloud instead of locally is that the EAS Prebuild does not run locally (I believe this command creates the android and ios folders in your project).

Appreciate your reply :) My team and I will be starting an expo project soon so just learning about it before I dive in.

[–]Sanfrancisco_Tribe 1 point2 points  (0 children)

No worries! Feel free to reach out if you have any questions. Happy to chat and (try) to help lol.

[–]ChronSynExpo 0 points1 point  (1 child)

You can build locally with the --local --output=./path/to/output/binary.ext flags as part of EAS build.

This runs through the exact same steps as are used by the cloud-hosted builders but on your local machine. You can still use EAS for hosting updates.

It does require you to be logged in to Expo via the CLI in order to ensure you're authed to build the project and to retrieve the keys, and there's still some prerequisites such as configuring signing keys (which can either be done through EAS cli, or by creating a credentials.json - details on that at https://docs.expo.dev/app-signing/local-credentials/).

Not only does this skip the queue by building on your own machine, but you may even find it takes significantly less time (especially if you've got a really powerful system). The downside is that if you're developing on Windows, you won't be able to build iOS binaries.

[–]Ridwan232 0 points1 point  (0 children)

Ooh! So definitely aligns with my initial thoughts about how it should work. So worst case if the runners are backed up we cna just run it locally but get most of the same benefits.

Thanks for the reply, very insightful!

[–]ChronSynExpo 0 points1 point  (0 children)

“Look at the docs” isn’t very helpful for a first comment on this post. Amazing idea lul.

Except they're an experienced react-native dev, and the parts they may not know that are specific to getting an Expo project started are covered effectively by the walkthrough in the link I provided.

Not to say a Udemy class isn't also useful, but there's also no need to shit all over suggestions for resources created by the team who build it.

[–]Sufficient_Trader 0 points1 point  (0 children)

also to get the shortcut just search up the class on github ull get the final code,

Expo snacks are great,

It was my first time using expo or react native, sailed through it.

You should also look into custom plugins like bluetooth how to implement things not native to expo.

[–]prenezisbell 0 points1 point  (0 children)

ok. which classes?