5 ms·
While i don't have much experience in RN, but have a decade of mobile native development (android + iOS) and two years of React. The whole 10 years there were
by ex3ndr 8y ago
While i don't have much experience in RN, but have a decade of mobile native development (android + iOS) and two years of React.
The whole 10 years there were people that think that they can just get "web" technology and speedup mobile development.
Almost always this companies had no mobile engineers that know how this stuff works. Developers that know that you just can't listen to scroll and update animations by sending messages to background js thread. This just completely wrong on mobile. Most mobile devs spend months to make it fast and easy to use. There are no way to do this in most cases on RN. AirBNB's app is a perfect example of this. Trying to deliver "better" experience they completely kill scrolling performance. Even top level iPhones feels laggy. But yay! We have animations! AirBNB's app is barely usable on two-year-old androids. This is just simply wrong, this is not how you can achieve good performance and nice animations on such small devices. In most cases this is a kind of art and a lot of testing and tweaking for every device. This can be done by only ONE talented developer per platform per year. Surely AirBNB has resources. Just take specific screen and tweak it to hell.
On the other side, react and declarative kind of state is really doesn't work well for non-page oriented apps. Mapping history of navigation via redux store is just an awful and useless idea that helps with nothing. Right now there are still no navigation library.
Every time i tried to start something in React Native i failed since i wasn't able to apply my skills to make it behave fast there are just no easy way to do this.
React Native for sure is a good thing, but it's evolution shaped by web devs that try to reflect their experience from web development, but building a good mobile app is completely different from web one. For example, there are no dom, UI manipulation is not slow, navigation between pages and keeping it's state is not a problem most of the time (there are no real "back" button that you have to handle somehow). UI frameworks are more mature (while have less API than HTML).
- jeanregisser 8y ago> Right now there are still no navigation library. React Navigation and React Native Navigation are both viable options with their own pros and cons. Been using them successfully in different projects. https://reactnavigation.org https://reactnavigation.org https://wix.github.io/react-native-navigation https://wix.github.io/react-native-navigation
- filleduchaos 8y agoI think what they meant is that there is no built-in production-ready navigation library, which is honestly atrocious.
- k__ 8y agoI never understood the obsession with native navigation libaries. I built a bunch of apps with JS navs and nobody ever complained...
- mwcampbell 8y agoDid you test your app with VoiceOver, the iOS screen reader for blind people? The difference between non-native and native navigation is particularly noticeable in that case, unless perhaps you fire a UIAccessibilityScreenChangedNotification after navigating to a new screen. That's just the scenario I'm aware of. I haven't done any real projects with React Native, so there may be other pitfalls.
- LeoNatan25 8y agoOf course not. They are a lazy developer that care little about the user experience.
- mwcampbell 8y agoAs passionate as I am about accessibility, I try not to use an accusing tone. There's no way we can know the state of mind, priorities, and constraints of the developer in question. Even large companies don't have unlimited resources. So we can't fault developers for looking for ways to do more with less. We just need to do what we can to make sure developers are informed about the pitfalls, and plead with them to consider important user experience factors like accessibility.
- filleduchaos 8y ago"Built-in" and "native" don't mean the same thing last time I checked.
- com2kid 8y ago> that they can just get "web" technology and speedup mobile development. RN isn't really web technology. It is a JS engine along side a cross platform API translates API calls to the appropriate underlying native platform code. UI components rendered by RN do not use web tech at all. It is no different than Xamarine in that regard, and has many of the same drawbacks. > AirBNB's app is barely usable on two-year-old androids. I never had problems with it on my Nexus 5x, and everything was a lag fest on that phone. (Lag in daily use got so bad after moving to Android 8 that I had to get a new phone just for my sanity.) For a large # of apps, RN works just fine. Its real promise is not "web technology", so far as it is 99% code sharing across platforms. The other players in this market don't have the same community drive that RN does, so people gravitate towards RN.