4 ms·
Appreciate all the work FB is doing here, but RN is fundamentally never going to be a solution for most teams. The compounding problems (JS/swift/obj-c/java) an
by matchbok 8y ago
Appreciate all the work FB is doing here, but RN is fundamentally never going to be a solution for most teams. The compounding problems (JS/swift/obj-c/java) and their dependencies in the build process demand that you hire native developers. That eliminates the #1 reason to use it.
After 3 times using RN and having to go back to native... never again. When even simple things like navigation or animations take hours of research to get right.
- sokoloff 8y agoMy experience building a couple of (fairly simple) apps on React Native has been amazingly productive and very pleasant dev experience. I've built a couple of toy apps in Swift directly and can honestly say that I find RN faster and easier. (And I'm neither a mobile dev nor a Javascript expert.) The hardest part for me was getting React-Navigation and RN-Web to play nicely together so I could have substantially one codebase for 3 platforms. That was admittedly a fair bit of googling and fiddling.
- V-2 8y agoMy experience (as a senior native Android dev) has been definitely bad so far. Configuration errors and inexplicable error messages popping up on a regular basis. The amount of troubleshooting it constantly required - instead of focusing on the task at hand - started to feel cumbersome after a week or two. Simplest functionality such as breakpoints would randomly stop working. All these problems aren't exclusive to me, I would pretty much always succeed in googling them up, usually along with dozens of solutions suggested by the community (each of them different). The documentation and tutorials leave a lot to be desired, too. A lot of this stuff is outdated, and the official documents are imprecise and feel like a draft (even when compared to what the much less mature Flutter brings to the table in this regard). Tooling is far behind what you get if you go native. Eg. support for refactoring, whatever editor you use, will be more than rudimentary and virtually nonexistent in comparison to what Android Studio offers. The same goes for unit testing / integration testing support, it's rather iffy. One of the more important UI Android features - Material transitions - is pretty much impossible to recreate in React Native. I also don't find JavaScript - even with TypeScript on - nearly as good a language as Kotlin. This isn't meant to be a rant: just an honest summary of my few weeks of experience fiddling with RN. You mention your native development was done in Swift; I heard that React Native is allegedly much more reliable for iOS than Android development. I can't really verify it either way, but potentially this might be why our mileages vary. The upsides? React Native pretty much abstracts away the lifecycle concerns, which are still a pain in the neck for a native Android dev. Hot reloading. No obsolete APIs maintained for backwards compatibility; understandably. Asynchronous programming is simple enough (although with Kotlin's coroutines arguably on their way to become the go-to solution on Android, it's not necessarily a win over native). Nothing else has impressed very much me so far. I used Xamarin for a commercial project once, and it felt considerably better, even though it was three years ago.
- sokoloff 8y agoVery likely. We basically “don’t care” what our apps precisely look like, so long as they function and the user is not impeded in getting access to their data. (They’re simple line of business data access/overview apps.) If we cared about platform perfect compliance with standard UX, it might be more challenging. Of course, if cared about native perfection, we probably wouldn’t be trying an inherently cross-platform tool.
- BucketSort 8y agoReact Native isn't even 1.0 yet. They are working on lessening the need for native development.
- asark 8y agoI used it ~1.5 years ago and would consider using it again even if it only worked on Android, just to avoid having to implement designers' various flights of fancy in native Android. Styling, at least back then (I really doubt it's improved—it'd already been bad for years) was horrible as soon as you deviated much from "change the colors". Bizarrely, their support for their own crap, like Material Design, wasn't even very good. Worse than it was in web-focused JS libs from the big G. Fits the pattern, I guess—their Android maps API was missing features from their web/JS one, too. This despite the fact that React Native was in fact a giant pain in the ass for a bunch of reasons. Native Android styling's that bad. Also saved me having to run Android Studio most of the time, which is a bonus. Though to be fair AS is more pleasant than Eclipse was, at least.
- raitucarp 8y agoBecause dx (developer experience) is also important, I suggest you to considering use Expo
- onion2k 8y agoWhen even simple things like navigation or animations take hours of research to get right. When a developer suggests spending "hours of research" on a problem is enough to make them abandon a potential technology, I don't often think the problem lies with the technology. For what it's worth my team uses React Native and we've faced the same problems; we solved it by making sure every project has one dev capable of doing the lower level native work. That still means the rest of the team can be web developers, who are much easier to hire because more people know that stack. That alone makes RN a good bet despite its quirks.
- matchbok 8y agoBasic navigation from screen to screen shouldn't require any research. It doesn't for native platforms. Facebook doesn't provide a built-in solution, which speaks volumes. Core navigation still doesn't "just work" for RN. At all. The pure JS solutions are garbage and limit what you can do tremendously. The native solutions have tons of other issues you have to hack around.
- diss 8y agoWhat's wrong with using react-router? That's just one solution that I've found easy and without significant limitation. Easier than native solutions. I'm predominantly a web developer who uses React and related technologies a lot, which makes me wonder if many of the people who are frustrated with RN aren't exactly the target audience and will hit a learning curve.
- pjmlp 8y agoBeing on the loosing side with a couple of loved languages, I learned something that I always promote in any project I am part of. Only use platform languages for production code, anything else just adds more FFI, debugging effort, lack of tooling and impedance mismatchs. So for portable mobile apps, I am a big supportive of C++ with native views, or just plain mobile Web, specially now with PWAs. For customers only focused in a specific platform, then full native.
- edmundo 8y agoI'm a designer but I also do front-end development and for me RN is pure fun! Easy to implement screens, add animations… the development experience has been great so far.