7 ms·
What are people's feelings towards React Native vs actual native mobile development these days? Are people starting to get the sense that this is the future and
by baron816 10y ago
What are people's feelings towards React Native vs actual native mobile development these days? Are people starting to get the sense that this is the future and coding in Swift/Objective-C/Java for mobile is dying off?
- traviswingo 10y agoPersonally, for me, it comes down to trade-offs. How quickly do you want to be able to push changes? Do you want to hire a new developer for mobile, or have an existing developer plug away on the project? Are you building a game, or does your app require very low-level code control? React native, Ionic, etc. are great for most apps out there. There is nothing special required to get a great app published in very little time, and existing developers can jump on the project and get it done - which probably results in much cheaper overhead for a startup. It really is a win-win. The only reason I'd consider going full native these days is for mobile gaming, and anything requiring low-level control.
- santaclaus 10y agoSwift and Obj-C are pretty high up in popularity rankings [1], and I imagine a majority of their use cases are mobile. [1] http://www.tiobe.com/tiobe-index/ http://www.tiobe.com/tiobe-index/
- fatbird 10y agoHaving run through an app building exercise myself, and starting to shepherd coworkers through the same exercise, my feeling about it is the same as it was for earlier platforms (like Appcelerator) that I tried: good for certain classes of application that are mainly built around text, lists, and UI logic; weak for performance demanding areas like games. React native brings a nice dev pipeline to app development and speeds development for a lot of garden variety app development tasks, making it a real advance for prototyping or rapid iteration; it doesn't bring anything that's going to unseat native app development where native is strongest, in drawing intensive tasks. It's still early exploration for me, so I might change my mind on this, but I'm not expecting RN to be a game-changer. Definitely useful, but not really going to upend anything.
- cbhl 10y agoAgreed -- if you're doing audio/video effects, or making a non-trivial video game, you'll probably want to be writing in C++ (and on Android, using the NDK).
- alaskamiller 10y agoIn the real world of contract software and digital agencies, RN has been a game changer over the last year. Mobile app projects under $20k are definitely react native. It also makes mobile app projects at the $10k level now viable. At the $40k level it'll be a tough choice, with the fact that the project wants to reuse parts for a web app being the clincher. The other obvious reality is of course that RN isn't meant for 3D, games, or so on. But that's been the understanding from the get go. What started out as replication of whatever UI components that the first and second class FB apps were making use of has now grown into a community that covers many, many different UI cases. RN is pushing Swift, ObjC, and Java engineers upwards to focus on the upper end but it's wiping out the bottom by letting the web devs into the mobile devs world.
- fatbird 10y agoAt my employer I can easily imagine deploying react native apps for a variety of uses, especially as we do service design : being able to run real experiments with, say, gov't services with real apps or companies looking for mobile assist on new service offerings is a huge win. At the same time, I'm sceptical that RN has escaped the earlier performance ghettos of Appcelerator, Phonegap et al., which aren't just in games, but also in complicated UIs with a lot of elements. On building a simple sudoku app, I ran into noticeable micro-lag that seems to come from overuse of Views to structure the grid--and noticeably, the performance was better on a non-retina device, causing me to remember the swamp that Java's AWT got caught in with its 'native peering' arrangement, namely that cumulative overhead killed performance in virtually all non-toy cases. React's virtual DOM is an obvious plus in the browser; I'm not so sure where native apps are concerned.
- intrasight 10y ago>complicated UIs with a lot of elements That's a problem for your designer to solve
- cbhl 10y agoThere have been frameworks for writing native-like apps since the very first iPhone was released. At some point, you reach the limit of what the framework provides, and you need to write some native code. I've always felt that most frameworks required you to rewrite your app in native code once you hit these limits, so it was better to just start with native code in the first place. React Native is the first framework that doesn't make me feel this way.
- bigiain 10y agoSure, but that limits get further away with each advance in js/webrender speed, and as the fleet of devices you're targeting becomes newer (and more powerful) over time. We pitched (and won) against a competitor who was proposing to use Outsystems last year - who's product creates a React.js Cordova app - and it's mostly only 'cause they demoed badly that we beat them, I was impressed with the capability of their tool (and without doubt their autogenerated react.js thing is well under development to produce react native apps very soon...) Some apps will always be native code - if for no reason than to gain access to new device capabilities on launch day instead of sometime down the track when bridges or native plugins for the hybrid tools ship - but a vast number of apps can (or are being) reasonably built using hybrid tools these days...
- ferologics 10y agoWorked with RN for a year now, after 2 years of native iOS dev with Obj-C/Swift. Declarative UI, hot loading, code reusability, modularity, etc. You name it. Because of all these I feel like a dinosaur whenever touching non-react code. Native covers the parts where React is clunky - for example some unorthodox UI elements that can't be created with simple views and flexbox styling Core functionality is there already and with time it's only expanding. I don't intend on turning back.
- codazoda 10y agoI doubt the other languages are "dying off". Javascript isn't the most elegant language but it's certainly getting better with ES6. I've been building a React Native app and there are a couple big positives for it. l. All the web developers at my company can manage in JS. You don't need special talent or training like you do for the other languages. Our native apps are built by completely different teams because of their native skill sets. 2. The app we're building shares most of its code between iOS and Android. This prevents you from building the same app twice in two different languages (and as I pointed out, for us, in two different teams).
- stevepotter 10y agoI've been doing iOS and Android for about 6 years. My latest project uses React Native. We just finished an app for both iOS and Android that has over 100 screens and did it in only 3 months with a small team. So I'm a good authority on this subject. I found React Native to be a mix of joy and frustration. I was amazed at how quickly our devs, who came from the web, could build polished screens that performed beautifully. Then I would become baffled at how, for example, you couldn't do a background upload in React Native. Here - it does is upload a file in the background: https://github.com/Vydia/react-native-background-upload https://github.com/Vydia/react-native-background-upload In RN, you have to connect JavaScript to native code with "bridges". If a bridge exists for, say, getting GPS data, you are fine. But if it doesn't, welcome to the club. I finally became relatively adept at writing these bridges, but I would have much rather have spent that time writing code for my app. Their build system is weak. For example, the build scripts hardcode 'dev mode' unless you have a build scheme in iOS and Android called 'release'. It felt like nobody else had built RN apps that have beta and staging environments. Crash reporting sucks and we finally got it working with sentry.io and some custom build scripts to upload source maps so we could get decent JS error reports. But that stuff will go away in time. I was blown away at the progress we made. It was painless for web devs to jump right in an be productive. So for us it's a net positive. If you're starting something new, try it out. Make your platform choice carefully. RN isn't the only game in town. See what works for you. And don't get fooled into thinking that you don't need any native knowledge to make an app. Maybe hello world, but nothing industrial grade.
- DenisM 10y ago>RN isn't the only game in town. What else is there that's similar? NativeScript?
- yellowapple 10y agoCordova comes to mind (in the "write 'native' apps like web apps" sense, at least).
- woogley 10y agoI heard about https://weex-project.io/ https://weex-project.io/ by way of the Vue docs. There might be other projects too
- suyash 10y agoReact Native is for JavaScript developers. Native development is for hard core native developer, totally separate audience.
- tootie 10y agoThey're all app developers. If RN developers are cheaper and faster, then "hard core native developers" will go extinct pretty quickly.
- pjmlp 10y agoThose web developers need someone to write plugins for them. They will have a hard time if we become extinct.
- tootie 10y agoYou act like web developers are a lower class of human being. There are plenty of fullstack devs capable of writing Java/Swift/Obj-C but are just far more productive in a web stack. Plus the benefit of being cross-platform is a huge cost savings.
- teacup50 10y agoSit-down restaurants won't go out of business just because a McDonalds opens across the street.
- cmoscoso 10y agoPeople cannot even develop a game with RN, so I would not count on that.
- nikki93 10y agoNot saying you can make hardcore things on it yet, but: https://github.com/exponent/floatyplane https://github.com/exponent/floatyplane ;) Expo includes a `GLView` component that provides a WebGL-like API to OpenGL ES. Things like three.js run on it directly! But CPU-side JavaScript becomes a bottleneck (the shaders themselves run at normal speeds).
- ccheever 10y agoReact Native or something like it is almost definitely the future. It's totally unreasonable to write two totally separate copies of your app using languages that take a while to build and compile. React Native basically solves this and solves it well, and can perform well in most cases. And if there is some screen where it doesn't (ex. if you were building Snapchat and were going to work on live video filters), you can implement that in Swift/Java/Obj-C and just make that a native module that's part of your RN app. My personal prediction is that almost all apps will be started in RN in the medium term future and most will end up mostly RN.
- yulaow 10y agoIf the js ecosystem taught us something is that react and his derivates are going to fall and being replaced by another iteration of new tools very shortly, and then repeat. Honestly I think in 1-2 years at max reactnative will have the same popularity of Ionic and Phonegap at max, and probably far less if react will fall against the newcomers of the web-frontend space (vue.js, inferno.js, riot.js, etc) as fast as it seems doing right now, remembering closely the time of angular1 eof vs react beginnings.
- intrasight 10y ago>replaced by another iteration As has been the case with all human artifacts since humans started creating them. I'm fine with iteration as long as: a) each one increases developer productivity b) they remain stable for at least two product release cycles.
- Andrex 10y agoI've done a little Android programming over the years ever since the first beta SDK (m3) hit in November 2008. Android Studio was a revelation, but like I said, I do very little native programming and a lot of Web stuff. I haven't messed with iOS yet. My experience is: finally, I can program like I do on the Web! And not just in the sense it uses JS, but like, double typing R to "reload" the app being super fast and seamless. Coding my first React Native app has been the most enjoyable experience I've had creating a native mobile app ever. Even small stuff like being able to use the Fetch API over whatever native gobbledegook API Android uses is a massive quality of life improvement for me. I actually don't particularly care for React itself (the Web version), but that's because its download/execution costs are still iffy for me and I don't think JSX has a place on the web long-term. I also don't think it's opinionated enough and the roster of React "plugins" reminds me of the bad side of jQuery widgets. (If you couldn't tell, I've moved to being more of a Vanilla JS purist in recent years as the ECMAScript standard has evolved.) With React Native though, none of those points really matter and I'm able to enjoy the "breakthrough" of self-contained JavaScript components combined with super fast debug iterations. It's a win-win in my eyes.
- spicyj 10y agoCurious: why is JSX on web worse than on native? And if you're overwhelmed by React "plugins", we certainly suggest you not use them. Most of them are just components you can write yourself.
- kitsunesoba 10y agoIt's likely not a popular opinion, but I hope React Native and similar frameworks don't come to dominate or be the only option considered in most situations. That's not to say that they have no place in the mobile space, but I do not enjoy web-style development at all. It's half the reason I'm a native mobile dev and not a front end web dev. If RN becomes king, I'll take it as my cue to find a different niche in software development. I'd much rather see some of the positive traits of JS/RN/etc find their way into Swift/UIKit/etc so I don't have to trade away what I like about native development in its current form.
- elyobo 10y agoThe major plus for me is not having to rewrite large parts of my app for different platforms.