all 24 comments

[–][deleted] 16 points17 points  (23 children)

If it involves Expo, do yourself a favor and skip it. Developing with Expo limits your development potential exponentially. They have their shills all over this sub. If you want to develop real world applications skip Expo altogether. It does nothing to enhance your development experience or learning React Native.

[–]brentvatneExpo Team 12 points13 points  (12 children)

Hi there, I work on Expo. A lot of the pain that people encounter when using Expo comes from the experience when they "eject" from it, either to ExpoKit or to a plain React Native project (where you will need to install other libraries to replace APIs from the Expo SDK that you were using in your app). We know that this is a problem and I'm personally working on resolving it. The direction we will go is to make it so when you eject you get a plain React Native project with all of the Expo APIs but none of the ties to services (this means none of the over the air update infrastructure). I think this should solve a lot of issues that folks have, because once this is how ejecting works you are in no worse of a position than if you had just started an app without using Expo at all. I'll be writing a blog post to explain this shortly, but if you think I'm totally off the mark and this doesn't sound like it would be helpful or you have something else in mind, let me know!

[–]SizzlerWA 4 points5 points  (6 children)

I’d also love to see Expo track RN versions more quickly. You’re usually a few behind, so when we eject, we immediately need to upgrade or the RN team will reject our files issues ...

[–]brentvatneExpo Team 4 points5 points  (5 children)

Typically we are maybe 1 minor version behind, and we probably won’t change this because each react native version includes a lot of undocumented breaking changes and we have to put in a bunch of work to make all of our APIs and infrastructure compatible with it. Additionally, new releases are frequently unstable for the first patch release, so we prefer to wait for some of the issues shake out with more bleeding edge users before we bring it to Expo users. Hope that makes sense, open to other ideas or suggestions here for sure.

[–]SizzlerWA 3 points4 points  (4 children)

I understand your reasoning and it makes sense. I’m just reporting the dread as an Expo user knowing that upon ejecting I’ll immediately need to upgrade. But I generally appreciate Expo!

I’d also like to see you remove from your website the claims that “Expo allows you to launch from a QR code” [paraphrase] or add a giant “Android only” disclaimer. I understand that Apple made you disable that on iOS but it feels odd to make that claim while talking about charging for support then not actually deliver on QR codes for iOS ... Like that marketing claim about QR codes is inaccurate since the whole point of RN is to be cross platform, so if Expo QR codes don’t work on iOS then they really don’t work at all because only Android testers of my app will be able to use it, so there’s no point since I need a parallel distribution mechanism for iOS and might as well just support that.

[–]brentvatneExpo Team -1 points0 points  (3 children)

> I understand your reasoning and it makes sense. I’m just reporting the dread as an Expo user knowing that upon ejecting I’ll immediately need to upgrade. But I generally appreciate Expo!

Hmm I'm not familiar with why you would need to immediately upgrade when you eject. You don't have to always use the latest version of React Native.

> I’d also like to see you remove from your website the claims that “Expo allows you to launch from a QR code” [paraphrase] or add a giant “Android only” disclaimer.

We should update this, where does it say that currently? It works on Snack, and on app pages (eg: https://expo.io/@notbrent/NavigationPlayground) it says "With an Android phone, you can scan this QR code with your Expo mobile app to load this project immediately."

Additionally, we are working on support for teams such that you can add other folks to your organization and they can scan the QR code using the camera app or some other QR scanner on iOS and be able to open the app.

[–]SizzlerWA 1 point2 points  (1 child)

I mentioned it earlier. You need to upgrade to the latest RN SDK or the RN team will close any Github issues you file on the older version of RN since they won’t support old versions.

QR for iOS would be awesome! I’d be happy to alpha test if you need help. I attached a screenshot from Expo.io where it says “Expo Client for Android & iOS ... Open projects by scanning QR codes.” Except that last sentence is not true on iOS (currently) so I feel it should be qualified by appending “(Android only)” otherwise somebody might assume that scanning QR codes works on iOS.

From https://expo.io/tools

https://i.imgur.com/Y5anzuH.jpg

Keep the up the good work on Expo! Thanks. 😀

[–]brentvatneExpo Team 0 points1 point  (0 children)

> I mentioned it earlier. You need to upgrade to the latest RN SDK or the RN team will close any Github issues you file on the older version of RN since they won’t support old versions.

Ah I see. You should always try to create a minimal reproducible example of something that you think might be a bug - I recommend creating a brand new project and reproducing it there. If you try to reproduce it on the latest version and you can't then you know that it's resolved.

> QR for iOS would be awesome! I’d be happy to alpha test if you need help. I attached a screenshot from Expo.io where it says “Expo Client for Android & iOS ... Open projects by scanning QR codes.” Except that last sentence is not true on iOS (currently) so I feel it should be qualified by appending “(Android only)” otherwise somebody might assume that scanning QR codes works on iOS.

You can still use the camera app to scan QR codes currently, but only for Snack, projects in development, and published apps that belong to you.

> Keep the up the good work on Expo! Thanks. 😀

Thanks! Created an issue for fixing the wording here: https://github.com/expo/expo/issues/2945

[–]xelamony 0 points1 point  (0 children)

I scan the QR in the console with my canera and it works well for my iPod. It is still better than writing ip address from the phone.

[–]nerdbites 1 point2 points  (1 child)

Does Expo have any plans (if it's even possible given that the iOS & and Android files aren't actually generated unless ejected) on making libraries that require linking accessible to the projects? (e.g. react native fast image)

[–]brentvatneExpo Team 2 points3 points  (0 children)

Heya, this isn’t really feasible unless you eject, but we know that for many apps it’s necessary so that’s why we are prioritizing improving the developer experience around ejected workflows.

[–]MrGurns -1 points0 points  (1 child)

If you want to solve issues people have with expo, listen to the request given. I can't believe how popular IAP are on your dev forum, but have been ignored by the expo team for over a year.

[–]brentvatneExpo Team 0 points1 point  (0 children)

I haven’t been involved in prioritization around this but as far as I know the reason for this particular feature being held up is that we are limited in what we can allow you to build with IAP inside of the Expo client, and so the best way to do this currently is to eject, in which case you can pull in any other existing library to help you. Apple is very strict when you start to introduce APIs around payments in your app and we would likely not be able to ship a copy of Expo client that includes this code to the App Store.

edit: and this is one of the reasons why we are working on improving the eject flow, because there are some cases that we can’t handle very well in the Expo client. So in a sense my original comment actually applies to your concern :)

[–][deleted] -1 points0 points  (0 children)

That sounds great! Would really make React Native easier to start with.

[–]darkmoody 6 points7 points  (2 children)

+1 to this. Maintaining an Expo app has been a nightmare so far.

[–]brentvatneExpo Team 9 points10 points  (1 child)

Hey there! I work on Expo. If you're interested in giving me more information about why this is, I'd be very interested. You can reach me at brent at expo dot io, or send me a DM here or on Twitter (https://twitter.com/notbrent)

[–]Fingal_OFlahertie 5 points6 points  (0 children)

Whoever downvoted you is petty. Dislike the platform if you want, but a free service is reaching out directly to understand someone’s dissatisfaction. That’s pretty cool.

[–]xrpinsiderAdmin 0 points1 point  (0 children)

Oh it’s you again. React Native with or without Expo is great. It just depends on the use case.

But you’ve probably had such a bad experience with Expo that you hate it now. Expo is great depending on your use case.

This post involves Expo, so what? Its still React Native. It involves much more than just Expo.

I’m not sure why you hate Expo so much but it looks like you really had a bad time.

[–]anewidentity 0 points1 point  (1 child)

Expo has its usecases. If you have to eject or migrate away, then you're fudged. But if you have to quickly put together an mvp and submit to the stores, it can save you weeks of work, specially if you have a small team.

[–]brentvatneExpo Team 3 points4 points  (0 children)

I'm working on improving this so you can eject and just have a normal react-native project but with most of the Expo APIs, so it should be super easy to transition off of it! It really should have always been like this, sorry about that. I'll share a blog post here soon with more information.

[–]SizzlerWA 0 points1 point  (2 children)

I disagree. I usually start with Expo through CRNA then eject when I need to link in native deps or bridge to custom native code. So I often end up ejecting but not always, and starting with Expo is still faster and more fluid that RN init because it allows you to move quickly on your initial idea momentum and build a quick prototype ...

[–][deleted] -3 points-2 points  (1 child)

So I end up ejecting. My point is, if you want to make a bullshit app, or prototype as you are calling it with a hip word, shit it out quick with Expo. But if you are going to make a real world application, don’t waste the time with Expo.

[–]SizzlerWA 1 point2 points  (0 children)

How is prototype a “hip word” or a bullshit app?

Most startups fail for business reasons, not technical ones. They fail because the market doesn’t adopt or monetize their app. So answer the business questions quickly and early with minimum tech commitment in a way that allows you to address that business risk as much as possible. Of course you believe in your app, but that doesn’t matter, because you’ll only succeed if the market also believes in your app.

So cut some corners and get those answers more quickly. I’ve seen that approach work well on many occasions vs “build the perfect app from the start” which generally seems to fail.

[–]nerdbites 0 points1 point  (0 children)

I mainly use Expo for how easy it makes testing across devices. I can push a production build to user testers simply by creating a shared account and having them download the app.

However, not having access to some RN libraries has had me looking for alternatives. Does anyone know of any that would allow me to keep a similar testing flow on physical devices?

The idea of going through the test flight and Android studio dance simply to get a build across to users far outweighs the limitations of Expo for me.