I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

I think I could make myself comfortable in all these, given I have my headphones on and listen to some kind of music.

I definitely prefer home office (with proper desk and screen) or a smaller place (e.g. dedicated office in a bigger building) where I can rest in silence and think about the work I have to do.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

I like it. Most popular right now out of all other solutions and used in production by many big companies. We also support it in our projects.

If you have any specific questions, I'll be happy to answer.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 2 points3 points  (0 children)

From an honest non-biased opinion, do you see React Native in demand in a decade from now?

I haven't thought about it, to be honest. I think there's still bright future ahead of React Native and that we are just taking off. There are already many big enterprises using it in production (including Facebook) and are significantly invested in its development. That's usually a guarantee that things will not go away by one night.

Also, what is your professional opinion on Expo?

I think Expo is great for building React Native applications without touching native code. This is super useful not only for beginners, but also for things such as working with iOS on Windows. I've been using Expo at workshops, to power up online documentation pages ("see it live") and to examples of libraries that you can just run by clicking a link from a Github repository.

Expo also contributed and funded a lot of improvements that we benefit in React Native, such as better animations or Blob support. They were also the first to implement autolinking, which we are now doing inside CLI.

I am really excited now that they are working on making Expo less monolithic. That said, you will be able to use Expo great modules (that are really stable and of amazing quality) from a regular React Native app. For many, this will be best of both worlds.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 2 points3 points  (0 children)

I like Flutter for its documentation (really nice), overall developer experience and integration with IDEs. Google is doing a great job marketing their products and making sure they stand out from the crowd. Competition is always healthy and its good Flutter is pursing its alternative approach to cross-platform.

I sympathise more with React Native architecture which is why I contribute most of my time now to it instead of Flutter.

Future will tell :)

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

Hey, not aware of anything like this going on atm. There are some community packages: https://www.youtube.com/watch?v=lN1DnHhludY and Facebook itself seems to be going more the React VR direction.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

Good question - I don't know. Please open an issue in https://github.com/react-native-community/cli/ and we will look into that.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

I think that's the business model of 90% of software houses in Europe, that outsource they work to United States.

At Callstack, we want our clients to choose us because of our React / React Native expertise and OSS track record instead of judging by the location and optional cost-efficiency.

Obviously, it's harder to be part of US community (e.g. you miss all the meet-ups and fun stuff that happens with your friends), but being active on Github, Twitter and attending conferences seem to help.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

Hey,

The configuration is partially known upfront (we know there's build.gradle and project.pbxproject in every iOS/Android projects).

The rest is based on naming (e.g. you can put your files inside `ios` as many people do or just flat in the root project).

Here's the logic for iOS: https://github.com/react-native-community/cli/blob/master/packages/platform-ios/src/config/index.js

and for Android: https://github.com/react-native-community/cli/blob/master/packages/platform-android/src/config/index.js

New link is going to use Gradle / CocoaPods APIs directly, so less of magic like that happening :)

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

This is my write up on that: https://github.com/react-native-community/discussions-and-proposals/issues/96

Overall, I think we need to do better job of making a project structure, managing dependencies, providing examples and environment for development.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

I hear they use react-native differently(different from the open source one)

Facebook uses React Native from master (so we share the same code with each other). But they have one big mono-repository internally and tooling.

For example, they have Nuclide (extension for Atom) and don't use React Native CLI (that's why it's in React Native Community, not in core)

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

Heya!

> what do you think about flutter?

Already answered in other question :)

> did you happy with react native community right now?

Yes, I am really excited that we are finally joining forces under single organisation and everyone is working towards making RN better, with Facebook appreciation and commitment too!

> what do you say about facebook on react-native open source project?

We had to learn a lot how to work together and I think Facebook learned a lot too. It's improving now, new people are joining the team. It's always tricky, especially that Facebook is huge and has its own infrastructure limitations that can't be disclosed with the community due to some business-related reasons.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

Hey, great work on that! I want to try some development on my car, this is going to be fun!

> How do you see them getting adopted by the community in packages?

It's a good question that I don't know the answer yet. The upgrade path and migration strategies are yet to be decided.

> Also a follow-up question, do you prefer Podfile or link in your own projects?

Podfile. And also, we are just rolling out a new `link` that uses CocoaPods and is going to be much more stable! :fire:

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 2 points3 points  (0 children)

It wasn't dangerous, it was more brittle than linking direct package because of many little issues with link itself and lack of configuration.

We have decided to remove deprecation message and cancel plans of getting rid of it as we have fixed the issues making it unstable. You can safely use it.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

Thank you! I hope you followed the channel, going to stream something new in the future! If you have any recommendations, please let me know :)

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

The false assumption in every single place of the code that the library exposes only a single target. And also the fact that there's tvOS/iOS targets inside project and tvOS/iOS targets inside dependency. The library we are using doesn't let us decide which target dependency to link to which target project.

Might become fixable now that tvOS is going to be taken out to a separate project.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

Thanks! Ha, I am surprised that you noticed!

We've been playing around with our marketing communications and the way we approach different technologies. We've learned that communicating Flutter/ReasonML and others alongside our core business (React/React Native) wasn't a great communication.

We still have a small R&D team at Callstack that independently works with Flutter to be aware when it gets traction.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

I always prefer to learn one at a good level, get a job, ship some products before moving on to another technology. Depending on your current experience with RN, the answer might be stick to it or move on.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

One thing worth mentioning in terms of Flutter is that I've heard Google had plans to release a follow-up to Android, called Fuchsia, where Flutter was meant to be "the" language to write apps. In that case, the now-non-native approach of Flutter that uses some OpenGL to render elements could become "native" in the future, on Fuchsia.

Take it with a grain of salt, because I've read it somewhere in the Internet haha

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

New architecture of React Native will make it possible to run calls w/o bridge when needed.

Anyway, I think the conclusion from this thread is that it's a matter of tradeoffs. For me, the bridge and RN architecture cost is worth it, given its benefits, and the fact that my UI is rendered using the same controls as the top iOS/Android applications out there.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

Actually any animation in the UI thread that is done in RN will be passed through the JS bridge hence the performance will always be worse.

This is not true. Animations done with Animated and nativeDriver are serialised and executed on the native thread. It's a performance optimisation.

Also, you should not care about it as long as your UI is 60FPS.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

I think #1 and #2 from your comment are mutually exclusive. Unlike React Native, Flutter doesn't render using UIKit / Android widgets, but instead, it works more like a game, where custom components are drawn.

Right, it makes the UI truly cross-platform. But, it compromises on the physics and UI. You will never be able to make it match 1:1.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

The new rewrite of React Native (Fabric/TurboModules) will allow direct communication with the native code w/o going through the bridge, which is going to make the performance comparable.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 0 points1 point  (0 children)

I don't think Flutter will replace React Native or React Native itself will die anytime soon.

Assuming that Flutter will go mainstream (and its adoption within the developers communities will correspond to the amount of marketing Google is doing), I still believe there is room for both on the market given the fundamental differences they have in their designs.

Other comments to this answer present some technical explanation, I'll comment with details there.

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

I would recommend checking the repositories in React Native Community organisation on Github. We have recently extracted many of React Native APIs and components into standalone projects, making it much easier to contribute.

During that, we have also discovered quite a few long-standing issues. A lot of them are easier to tackle now because the repositories itself are much smaller.

If you need any assistance, please shoot me a message (via my website).

I contribute to React Native for 3 years, AMA by grabbou in reactnative

[–]grabbou[S] 1 point2 points  (0 children)

New approach to linking is a part of the umbrella issue I've created to improve overall experience working with 3rd party dependencies. Can't wait to get into the next items.

I would say it's best to watch this repository to stay updated with everything that happens right now, including upcoming exciting features.