Bon-Appetit

An easy way to find restaurants near you based on what you’re looking for to eat

Could you introduce your app in a few sentences?

Well, the idea of Bon-Appetit was born when I was in College doing some classes related with entrepreneurship, and this app was my final project. The initial idea was to show different options of things to do in my city (Fortaleza/Brazil), so me and my teammates (one dev (me), one manager and one designer) started this project wanting to offer different options, from music shows to food, and we just realized that would be too much for just an MVP. So we decided to change our context to something more simple and specific: food and restaurants.

For this MVP, we were thinking about just having a mobile app (Android and iOS), and our first choice was React Native, because we could have the same app running in two different platforms with the same codebase, and, if we decide to create a web client, we could just reuse our knowledge in React Native to build this web-client using React.

What made you decide to use/switch to React Native?

When my team and I started this project, I was the only dev, so all technical decisions were up to me. At the time, I’d had previous contact with React Native, and was amazing! The learning curve is small, very simple to build apps, and was just only love.

But my main reason to choose React Native was because it was trending. React Native was (and still is) solving a lot of problems around the world, and I really wanted to learn about it. I had knowledge with Android using Java, and iOS using Swift, but the idea of building one app with the same codebase to run on two different platforms (being fast, beautiful and easy) really enchanted me. And, as if it were not enough, I could reuse my knowledge with React Native easily on the web!

How did you transition to React Native?

At the time, I had some experience with JavaScript and how it works and previous experience building Android layouts using XML, so it was very easy to learn about JSX, componentization and lifecycle methods. So, I can say that my transition to React Native was very easy and smooth!

Have your tried other cross platform technologies before using React Native?

No.

What has your experience been working with React Native in terms of app performance, have you noticed any impacts?

Never. I have been using redux and redux-saga to make external api-calls, and always try to use the Animation API to enhance the UI and UX of my Apps (I’m just mentioning these two because I think that these kind of features are very expensive in terms of performance, and very easy to have some bottlenecks), and I’ve never had any problems with them.

How has adopting React Native affected developer productivity?

I noticed that I’m very happy working with this technology. It’s easy, mature and well accepted for a lot of companies around the world (including big players). I could feel it even more when I started some projects on the Web and with Electron, where I could just reuse my previous knowledge with React on React Native, which did not require me to learn a brand new technology to work on these platforms.

Which tools, libraries and frameworks are part of your development process with React Native?

Redux (for global store) and Redux-Saga (side-effects), VS Code (<3), Prettier + ESLint + Husky (to keep a consistent and standardized codebase), Flow (to type), Styled-Components (to make beautiful Components without effort), React-Native-Vector-Icons (Icons) and Reactotron (to debug).

What resources have you used to learn React Native? Books, tutorials, courses etc. Anything you can recommend?

I just took one course (a bootcamp), it’s from a Brazilian company called RocketSeat, they taught me from the basic to advanced concepts of React Native, they are amazing!

After this, I just started to try building my own things, getting some problems (because I started to do some advanced things), asking for help and so on... And I’m mentioning this because I strongly believe that the best way to learn a technology is practicing with that technology, and it’s the same thing with React Native, you need to build things to become a better developer!

What are some things that you don’t like about React Native or that need to be improved?

Tooling. I had some bad experiences with Babel, which is something outside of React Native, but we need. And there’s some other stuff that we need to use in order to get our app up and running, and this doesn’t happen on native platforms. But, it’s totally understandable why we need to use this.

Anything else you would like to mention?

Thank you so much guys for having me here and giving me a chance to share my work! I really love my projects, and they’re very important to me!

I have plans to make a web-client for Bon-Appetit using Gatsby, soon. And I have some other projects, like a Store System built with Electron + React and another React Native App that is a Podcast Streaming App called Mind Cast (it’s finished, but I want to do some things on the backend before release).
So, stay tuned on my GitHub and on my LinkedIn!