The Expo blog covers releases and ideas for Expo, a platform for building React Native apps for iOS, Android, and the web.
HN commenters call Expo a good way to start with React Native and quick to try, though it routes through its servers.
Some thoughts:
- RN is a good place to start if you have React experience. The instant feedback via hot-reloading for UI is quite nice and makes learning fun. Maintenance can be an issue but it's gotten better over the years. Expo is a really great platform, and using Expo helps avoid many maintenance issues as well as helps you stay in JS land (including avoiding Xcode). RN will give you cross-platform out-of-the-box while also increasing exposure to platform-specific issues. In my experience, RN works well a lot of the time but then sometimes you need to deep dive on some tricky issue, which may require native code or a hack.
- Swift is a nice language that'll be most performant + provide the most-true-to-platform iOS UX and there's a lot of nice online resources for learning native iOS. It's a bit tricky right now because there are two native iOS UI frameworks (UIKit, SwiftUI). SwiftUI is the newer approach to iOS dev but you still need to use/interface with UIKit for some things. I'm finding SwiftUI pretty great these days, especially because it allows for Live Previews of UI (similar to RN's live reload); again, this live code<->preview link helps make learning fun. Xcode is a bit of a beast but it's not so bad imo especially for if you aren't on a huge dev team/project.
- I haven't used Flutter much so skipping discussion of that.
- RN vs native can be a divisive issue for a variety of reasons. Both have pros/cons and you can learn a lot from them.
- The best way…
Hello!
The examples use a navigation library that is implemented entirely in JavaScript and it does not currently aim for 100% accuracy for platform gestures and animations. Pure JS navigation is a work in progress with React Native but, in my eyes, it's the ideal end-state (see a post I wrote here for more info: https://blog.expo.io/good-practices-why-you-should-use-javascript-whenever-possible-with-react-native-26478ec22334#.8m1k008ip), but to get there we need some more powerful low level primitives such as a better gesture API.
If you prefer to trade-off customizability for platform-specific animations, you can use NavigatorIOS with Expo/CRNA - https://facebook.github.io/react-native/docs/navigatorios.html. If you eject, you can use a library like react-native-navigation (https://github.com/wix/react-native-navigation) which bridges the native navigation APIs, or an upcoming library from Airbnb which they use in their app.
Also, I'm curious which examples stood out to you. The "Growler Prowler" app intentionally pushes a screen on top without sharing a navbar, even though this is possible, because this works better for the detail screen. See the beautiful PocketCasts app (https://www.shiftyjelly.com/pocketcasts/) for the design inspiration there.
Hope that helps!
My company is moving our app to React Native and evaluated Expo as an option. Our conclusion was that we needed some of the features that using Expo doesn't let you use (a lot of native modules, as we're not rewriting 100% of the app all at once).
Additionally, I think RN has come a really long way from where it was when Expo first came about. Expo sought to smooth over a lot of rough edges, some of which no longer exist.
I think Expo realizes this as well, as their main revenue generator is now their deployment tools. The framework is opinionated toward using those paid services, which my org doesn't want to use as we already have processes for building and deploying, which makes working with it cumbersome.
https://expo.dev/pricing
>The first question that popped into my head when I saw this headline was: Is React Native still a hot mess?
Expo [0] is what really makes things painless now. There's no more struggling with native binary dependency hell. And the entire App store submission process is completely managed; building, signing, uploading, and pushing a new version from your machine to Apple is just a single CLI command.
[0] https://expo.dev/
https://dev.to/mauro_codes/expo-101-building-mobile-apps-in-weeks-not-years-aj1
What a weird comment, anybody can see the pricing on Expo's website, sure there is a free plan but you are almost certainly going to end up paying
it's "optional" like so many open core projects these days that deliver a rough free version with issues (https://github.com/expo/expo/issues?q=is%3Aissue%20state%3Aopen%20build) that naturally pulls developers into their paid plan
you keep avoiding my question, what is your relationship with Expo?
https://expo.dev/pricing
Yeah, and according to https://expo.dev/blog/precompiled-react-native-for-ios and linked https://github.com/react-native-community/discussions-and-proposals/issues/587#issuecomment-2777982810, it seems moving off CocoaPods has barely moved past planning stage. Latest update from two weeks ago links to https://github.com/facebook/react-native/pull/52909 and says it’s very very experimental. Just great…