top | item 19286335

React Native Open Source Update

234 points| cpojer | 7 years ago |facebook.github.io

114 comments

order
[+] shafte|7 years ago|reply
Glad to see the team really embrace the nitty-gritty of keeping the open-source community healthy. React Native is a project with a lot of potential that's taken a few high-profile lumps this past year. Being an OSS maintainer can be difficult and thankless sometimes, but it's good to see teams that recommit to open source instead of withdrawing and focusing solely on internal needs.
[+] stevepotter|7 years ago|reply
Can I have more information on the "high profile lumps this past year"? Thanks!
[+] itwy|7 years ago|reply
'thankless'! They are getting paid big bucks as Facebook employees. What are you talking about?
[+] sjroot|7 years ago|reply
This is great!

I like to think that React — or more generally, component-driven user interface design — is the future of development on all platforms, not just the web. It really seems like we have “peaked” with concepts like state management, composability, and so on. Don’t get me started on how nice hooks will be in the mobile dev ecosystem.

I feel like React Native has taken a hit in the last year or so, with large companies saying they are moving away from it. I really hope that the RN community continues to flourish because I think it will inspire other platforms to move toward better developer experiences.

[+] jeswin|7 years ago|reply
Well, UI has been component driven forever - although we faltered on Web UIs. For instance, the entire control library in late 90s Visual Basic were components, and people would build re-usable custom components and forms just like you would on React. It went even beyond that - need a Telephony connection or TCP Listener? Drag a TCP component on to your application surface and set some props visually (like port number). It really was that easy.

We haven't peaked. If you leave out the closed-source nature of the Microsoft dominated tech scene, the tech from the 90s is arguably better than what we have now.

[+] amw-zero|7 years ago|reply
I would hardly say we have peaked. I think there’s plenty left to discover. I think the web was vastly behind other user interface systems and just took a decent jump with Angular and React. There’s a lot left to discover though.
[+] dirtylowprofile|7 years ago|reply
We used React Native back then when it first came out. Surprisingly the problems that exists back then, still exists today like red error screen, slow TableView scroll, upgrading RN problems.

It is too late for Facebook because a lot of high profile startups are moving away from it. When you release something like this and then have the OSS deal with it and not responed to PRs for several months and years, it leaves a bad taste.

[+] Mr_Shiba|7 years ago|reply
>because a lot of high profile startups are moving away from it

Lucky for everyone there is a world beyond "high profile startups" whatever that means. You may even argue "high profile startups" is an irrelevant percentage in the job market.

[+] vpontis|7 years ago|reply
You called out the red error screen and that's something that they explicitly called out as fixed in this version of React Native.

And it looks like they are a lot faster about responding to PRs now.

Tt seems to me like they are doing a good job improving React Native!

[+] marcammann|7 years ago|reply
To that extent, I also found that Android is usually treated as a 2nd class citizen. Which is understandable, given the marketshare, but frustrating nonetheless. It often sounds like something is easily do-able (like Accessibility) ... IF you're on iOS. We recently developed an app for a client of ours for Android, replicating their native iOS app in React Native. That was not a good experience.
[+] squiggy22|7 years ago|reply
Is the colour and visual display of errors really considered a significant problem that prevents technology adoption? I must be getting old.
[+] KaoruAoiShiho|7 years ago|reply
Which high profile startups are moving away from it?
[+] hestefisk|7 years ago|reply
Great. Maybe that will mean less sluggish desktop apps executed in a browser and more native language experiences.
[+] fareesh|7 years ago|reply
Flutter seems like a great substitute today, at least for Android.
[+] lbacaj|7 years ago|reply
While I like react Native, in my opinion Flutter from Google is proving to be far more superior as a cross platform app development technology. The apps are incredibly fast, feel far more native, and are actually fairly easy to build.

I went down this path of trying both and ultimately ended up building my side project with flutter. My project is a cross platform App that reads articles to you using some great sounding open source AI/ML models by converting any article to audio so you can maximize that dead time on your commute.

This is a little self promotional but if you want to see what’s possible with Flutter, you can check it out here:

https://articulu.com

Edit: while I get folks may be upset with my comment and are down voting me, I’ve geniunely worked with both technologies so I’m not just making this up.

[+] ipsum2|7 years ago|reply
You've promoted your startup in almost every top level comment you've made in the last month, maybe give it a break?
[+] root_axis|7 years ago|reply
My only problem with Flutter is that Dart is a hard sell from an organizational perspective. We'd have to justify teaching our engineers a language they'll only ever need for the purpose of using one mobile app framework.
[+] s_y_n_t_a_x|7 years ago|reply
You're being downvoted because people disagree with you.

I've researched both, and Flutter is far from superior.

They don't have a production way to target desktop platforms, and it's not a native experience, it's an emulated UI. It's noticeable on iOS.

Also noone wants to learn a language from Google just for it to be abandoned in X years.

Even if they don't abandon the language, how can you expect Flutter, which hinges on them updating the renderer for every release of iOS to match the native look and feel (which it fails at right now), to stay alive? Google can barely maintain a chat app let alone emulate a UI that isn't theirs.

And this is all for an experimental OS they haven't even put full faith in yet.

[+] saagarjha|7 years ago|reply
> feel far more native

I don't see how emulated native controls can feel more native than actual native controls.

[+] Impossible|7 years ago|reply
I know your post appears self promotional and is slightly out of context but I'm glad you posted it. I've been looking for an app like yours for years and the audio quality is pretty good. I realize that text to speech of this quality has only been around for a year or two.

The app UI feels native on Android and performs well.

[+] kall|7 years ago|reply
I downloaded this to see if VoiceOver support is still as broken as it used to be and its surprisingly functional. And it really is fast. I can still "feel" that it‘s not native, but it actually might be close enough.

You should put labels on your image buttons though.

[+] millstone|7 years ago|reply
Why would a Flutter app “feel more native” than RN, which actually uses native widgets?
[+] tomwilson|7 years ago|reply
Disagree strongly.

While the build chain, documentation, marketing etc is nicer - it definitely has an uncanny valley situation going on in iOS at least. It NEARLY feels native.. but something's not quite right.

Also rendering performance really sucks on the XS Max. Even the most basic of list view examples will drop frames.

[+] inapis|7 years ago|reply
Can you point me to these open source AI/ML models? I'd like to learn from these.
[+] KaoruAoiShiho|7 years ago|reply
Can flutter compile to browsers?
[+] tim1994|7 years ago|reply
Sounds interesting but why do you have to sign up for this?
[+] burtonator|7 years ago|reply
I'm really torn here between React Native and just building a PWA.

I'm building a tool for managing your reading across devices. IT basically allows you to suspend and resume your reading easily and supports caching web pages offline and reading them like you would a PDF.

https://getpolarized.io/

Right now I'm torn between a PWA and React Native.

Our PWA code is React, just not react native.

Being a PWA means I don't have to deal with React Native issues and I can keep the same code across my entire app.

The changes that Microsoft has made to their app store to support PWAs are really nice.

Additionally Google has their new 'custom web view' that allows you to compile a PWA into an Android App.

Part of the whole thing with the app store is being discoverable.

You might be a PWA but people are taught to go to the app store to find new apps to install.

However, with React Native I think you would have to do a bit more work but your app would look better on that platform.

Has anyone had to make this decision lately? Would love to hear your feedback.

[+] christopher8827|7 years ago|reply
Hey, it depends on what you are building. I have found with React Native + Expo is that you can mostly avoid native code until you need something that isn't supported by React Native (eg. payment integration) - in that case you will need to eject the app. You would have to manage routing on the app, etc.

If your background is in web dev, building a PWA should be much easier.

[+] kgwxd|7 years ago|reply
When did google hijack the PWA term? https://developers.google.com/web/progressive-web-apps/

It used to just mean you would build on standard html features so your app would fallback to it and still work if your crazy new JS driven input type didn't work the way you expected, and for accessibility purposes. I don't see either of those goals mentioned.

[+] heyoni|7 years ago|reply
What’s the name of your app again?
[+] seanwilson|7 years ago|reply
Have you considered Cordova/PhoneGap? Do you need native features?

I think if you're a small developer, having something that works across iOS, Android and the web with the least effort is usually worth more than native integration.

[+] bfrog|7 years ago|reply
React and redux are nice but I'd never use it for native again personally. You update it to fix one bug only to get 2 more in its place, after you spend a day updating and fixing your app. I've spent less time coding entire Android apps than I have hunting bugs down in rn apps.
[+] debt|7 years ago|reply
It really is unbelievably painful trying to work within the RN ecosystem. There's so much promise but ol well.
[+] debt|7 years ago|reply
"Unfortunately, this is not something that we experience ourselves because we run React Native from master."

What does this mean? Does this mean they're always on the very latest RN version? If so, wouldn't this constantly break like many layers of dependencies?

I kind of like the idea though.

[+] dymk|7 years ago|reply
(Nearly) all of Facebook exists in a single repository, so all dependencies are building against other dependencies at ~master. Things do break, but extensive automated testing goes a long way.
[+] tehlike|7 years ago|reply
I work at google, and we run everything at head. The code is expected to be working state including all the dependencies, and there are precommit/presubmit hooks to help that.
[+] ericlewis|7 years ago|reply
That is what it means. We are also doing this! It is worth it if you ship only iOS imo.
[+] Octoth0rpe|7 years ago|reply
React native is pretty cool, but I do wish they would add support for desktop apps, not just ios and android. Proton native exists and seems stable-ish, but the underlying cross platform UI library (libui) still says it's only at an alpha level.
[+] s_y_n_t_a_x|7 years ago|reply
ReactXP is the most mature mobile/desktop RN project and being used to develop the new Skype.

It provides common components to glue react-windows, react-macos, and react-native together.

The downside is you have to roll most of the components yourself due to a lack of UI lib, but it has all of the core components, and imo that's better.

The really cool thing about react-windows is it builds UWP apps so you can target Xbox, W10, and Windows Mixed Reality natively. MacOS support is experimental but the core is there. Linux support can be achieved with Electron (I know, not native, but maybe someone will make a react-qt project)

https://microsoft.github.io/reactxp/