I participated on the event of React Native users in Japanese startups at March 28, 2019.
This me7 people talked about React Native such as its advantage and disadvantage or hard point to use etc.
etup was the 3rd and held in Tokyo.
7 people talked about various things about React Native such as its advantage and disadvantage or hard point to use etc in 5 or 10 minutes.
Although all lightning talks and its slides are Japanese, it's very excited.
So, I posted the report about the meetup in English because I want to help empowering the react native community.
There are many React Native users in Japan!
Following summaries are originally Japanese so my translation may be wrong.
If there were mistakes, they were not presenter's mistake and they were probably my mistakes.
The presenter talked about how speedy it is they launched the new react native app based on react web app.
socialdog is a service that make us smart and efficient Twitter Account Management.
They launched a new iOS app based on react web app in only 4 month.
Why so short developing? The answer is they use same logic in both web and native.
The best example is redux code. The presenter said our code was almost the same code in react and react native!
Do you think it is an success of
Learn Once, Write Anywhere that is the one of React's core concept?
I think absolutely yes.
The presenter talked about how useful react-native-firebase library is. But there are many fitfalls because of its various functionality.
The presenter talked the cases he was stuck in theTo make matters worse, the tool named react-native-git-upgrade that provided React Native haven't
alreeady maintained and didn't work fine. pitfalls like authentication, DeepLink, Firestore etc.
I think some pitfalls are caused by firebase itself rather than react-native -firebase.
Of course firebase and react-native-firebase are both great and useful! I hope somebody who stucks in pitfalls shares the knowledge or workaround and even contribute to official documents!
The presenter talked about how to write tests for React Native Application.
React Native Application generally consists of many parts like redux, usecase, universal JS and native layer.
He introduced some useful techniques and libraries for writing test. For example interface injection, using reselect, [supertest(https://github.com/visionmedia/supertest) and storyshots.
Keep connect logic as simple as possible benefit for no need writing E2E tests.
And he wanted to know about how to write tests for some native modules like Bluetooth and Push Notification. They are not available in Simulators. Do you know how to test them?
The presenter talked about why and how upgrading React Native.
The reason why is very simple. Upgrading makes us to use new features like React Hooks!
But upgrading occasionally breaks our app for example TextInput broken for Chinese and Japanese and the build failed because of XCode 10 new build system.
Upgrading React Native needs many steps like upgrading npm dependencies, changing build config (build.gradle or .pbxproj file) and so on.
To make matters worse, the tool named react-native-git-upgrade that provided by React Native has not maintained and didn't work fine.
But new tool named rn-diff-purge solves this situation. We can get the diffs of each versions that
react-native inited by using the tool.
So comparing the diffs with our project and applying them make us ease to upgrade React Native.
The presenter talked about the advantages and disadvantages of React Native x GraphQL.
He explained about GraphQL and talked he used Apollo Client. He benefits from cache system of apollo that available auto cache update without Redux. And he explained disadvantages was also cache controll and error handling.
I thought the combination of React Native and GraphQL was very good when I used React Native and GraphQL before. Apollo client has many functions so using them is a bit complicated but it's very useful!
The presenter talked about Detox and its trouble shoots.
Detox is a good library for E2E test of React Native app.
He met the trouble that E2E test not ending. He dived into how Detox works and debugged step by step steadily. Finally, he found the cause. Detox waited for animations end by default and there were background infinite animation loop in the app. So he solved the problem by replacing the file only when E2E test.
He finished the LT saying he wanted Detox buddies to share the knowledge.
The presenter talked about how a web engineer fights in React Native.
His company met difficult situation that there were iOS app without native application engineer. The main developer has already left his company and the remaining engineers don't have developing experience of native application. They couldn't continue to develop existed iOS app.
So, they changed the way by choosing React Native instead. He decided to implement functionalities only in React Native + Expo. Not Ejected.
I think his idea is right because React Native has some constrains because of cross platform. Avoiding these constraints is a key of developing with React Native.
The meetup organizer tries very interesting challenges in each time. At this time, there were seat that the applied person must take the champagne to the meeting place. We drunk champagne at the start of meet up!
And, the organizer announced he was planning a big meetup with around 100 participants.
I'm looking forward it!
There are many React Native users and its community in Japan.
React Native is a good framework and exciting tools. Thanks for maintainers and the community!
Thanks for reading!