Could you introduce your app in a few sentences?
Communify is an app that helps any coworking space, company or association to grow a community and stimulate collaboration. More specifically, it provides communication tools like Slack or Facebook groups, but also has a members section and profiles, so it's more like a private social network for your company or coworking space.
I've started building this with coworking spaces in mind, because I've worked from many different ones, and they all had a different tool that worked but wasn't quite perfect. That's why I decided to start a company that creates a better tool with coworking spaces in mind. It's supposed to be better than Slack, Facebook groups, and other alternatives. More about the story here
It's built in React Native and you can download it on iOS and Android.
What made you decide to use/switch to React Native?
I started in the summer of 2017 and I was completely new to the app building world. I had built some websites with PHP but that's it. I started reading about the different ways of building apps on Medium: Web, Native iOS/Android, or React Native, which was the most probable choice. I decided for React Native because of a couple of reasons.
- It's twice as fast to build as building it natively twice (Android and iOS) and I needed both platforms for sure.
- It's developed by Facebook, a big company, has been rather popular, and isn't going away anytime soon.
- I could have done web, but then I would lose many capabilities that only come with, or are much better on, native. Some examples are push notifications and location access.
I wrote an article about my choice too
How did you transition to React Native?
It was pretty easy to learn React Native. There is really good documentation of React Native itself, and there are many tutorials and articles about it on Medium. I started using Expo, which is another great tool to speed up the whole app building process. Also Expo has great documentation and examples. I didn't know the JS ecosystem very well. Like I said, I only made some PHP websites before, so there wasn't much JavaScript. But in the same period, I also created a Node JS backend. Using just one language everywhere helped me to learn it quickly
Have your tried other cross platform technologies before using React Native?
No. Well, the web, maybe. It's similar in many ways. It just didn't have all the capabilities I needed that come with React Native.
What has your experience been working with React Native in terms of app performance, have you noticed any impacts?
I have had no problems with performance of my React Native app yet. I'm a happy user.
How has adopting React Native affected developer productivity?
I think that I'm developing quite fast. Some people say it takes 5x less time to develop an app with React Native, compared to native Android + native iOS. I think that's true. Also it seems to me like a hassle if you always have to do one thing twice, once for Android and once for iOS. Would be quite annoying.
Which tools, libraries and frameworks are part of your development process with React Native?
I use Prettier, ESLint and Typescript. My type coverage is pretty low, but I start using it when things get complicated and I don't want to get confused. I use Expo to build the app and get it to store quickly. Their over the air publishing capability is awesome. It saves so much time! For debugging I've used React Native debugger but now I actually just use console.log
and print stuff in the terminal. I always try to stay in the realm of React Native and Expo itself, and use very few other libraries. This way I keep things clean, don't depend on open source libraries too much, which makes it break less.
These are my dependencies: Apollo, GraphQL, redux, Expo, react-native-google-places-autocomplete, react-native-markdown-view, react-native-modal-selector, react-native-parallax-view, react-native-star-rating. Just 9!
What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?
Mostly articles on Medium. I like this tutorial series very much and learned a lot from it. I also really like this guys work.
What are some things that you don’t like about React Native or that need to be improved?
Sometimes it takes really long before nasty bugs in React Native get solved by Facebook. But for the most part I don't have much to complain.
Anything else you would like to mention?
I really recommend using Expo and Apollo for almost any native project. If you need any advice starting up or have any other questions, you can contact me via Facebook.