Why did we (Venmun) choose Flutter over Cordova and React Native

Seth Samuel
7 min readAug 1, 2022

--

In an ever-competitive world, where having a great idea for a startup alone is not enough, building and building fast matters a lot. It is of utmost importance that you don’t only build great products but build them fast. Especially if you are a small team and you know that every second really counts. There are many parts to building any app: the logic, the UI, and most importantly, THE DEVELOPER EXPERIENCE. The tool your developers use to build an app should be tools that help them, not tools that frustrate them. That means they shouldn’t spend hours on Stackoverflow trying to figure out how to implement something or hours trying to find the right plugin or days figuring out how they replicate the feel of the app and ensure the user experience is the same across all platforms.

When we were trying to pick the tool to use in building Venmun, the obvious choice for us was React Native, right? I mean the web version was written in React and we already had experience with how things should be done from the web version. So it makes perfect sense to port all of those experiences to the app, right?

We started building the app with React Native and quickly noticed some things.

  1. Our experience on the web wasn’t that great: Although we had experience in building web apps, and really love React, we discovered that React was an awesome tool for what it’s very good at Logic. It is great at DOM manipulation, abstracting your app’s logic into components and the Javascript (Logic), Styling (UI), and DOM (HTML) all in one file or folder. That makes it very manageable and very easy to work with.
  2. We were on our own: React is very flexible and that can be good and bad. It is good because it means you can do whatever you want and however you want but it’s bad because there is no structure to how things should be done. An example was when we were building Venmun for the web, we were torn between writing the entire CSS ourselves or using a library. We decided to use a library. The next question was which one Bootstrap, Tailwind, or Material UI after a long argument, Material UI won. All this is time we could have spent on building the actual product. And I don’t want to go into other arguments we had. E.g state management: Redux or Context API or just States
  3. Bring Your Own Optimizations: By design, React tries to get out of your way and tries to be as slim as possible and that comes with a lot of challenges, especially for small teams. For example, how do you do work outside of the main thread? How do you render an expensive list of Objects in an array? And how do your interact with functions and functionalities outside Javascript/Typescript? All this can be done with 3rd party libraries, but finding a suitable library that is actively maintained, doesn’t add too much code to your app, and has excellent developer experience can be challenging.

We noticed all these problems when developing for the web and we didn’t want to go through them on mobile so we came up with 3 options:

  1. Since our app is a PWA, we can decide to use a PWA builder like Cordova, to wrap the app and then make it installable through the app store, and of cause it can still be installed through the browser. This saves us money and time right? But the problem is that the App will not feel native and will not work natively and that is bad for optimation and user experience.
  2. Use React Native since all of our engineers are experienced React devs, let’s just continue with React and find our way through
  3. Let’s explore other options.

After long experimentations, we decided to go with Flutter, which is an open-source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.

Now, we are a startup with the mission to build the tools that businesses need to grow and scale irrespective of their size. And as the time, we were building Venmun, our P2P social commerce platform that connects people and businesses (vendors) to people that needs what they sell (customers).

We must pick the right tool because the tool we choose will not only affect Venmun, but all the other tools/apps we make in the future.

Flutter fit right into that goal because it doesn’t just help us build fast but it helps us with optimizations out of the box.VenmunVenmun

So we decided to test run our options. We build the product feed of Venmun in React Native and Flutter to see how it feels, from setting up to building the Venmunfeature. With Flutter, it took a day to set up and have it working, but it took 3 days to do the same with React Native. Now, remember, we were not experienced in Flutter apart from the few side projects just learning the tool.

While working with Flutter we noticed a few awesome things that make it an excellent choice

  1. The app can work on Android 4.4: the reason why it started that high is that many packages that we use require at least Android 4.4 whereas React Native starts from Android 6. This is important to us because most of our users are in Africa and some still use phones with Android 4
  2. Flutter has amazing widgets: one that easily stands out was the ListView widget. Because Venmun’s product feed’s length is determined by how long the user scrolls, the logic that handles how the components are built is really crazy on the web. But with Flutter, it is handled completely with the ListView widget without us lifting a finger. There are widgets for almost everything we needed that we don’t use any UI library. This reduces the time we spend deciding what to use and just using the build-in widgets
  3. Flutter has great optimations: apart from the awesomeness of ListView, the compute function is absolutely amazing. We can spawn new threads very easily and have them handle all the heavy work while freeing the main thread for the UI. We can very easily cache images which means our users save on data.

I can make an entire series about how awesome Flutter has been and all the awesome widgets and optimations that are built right into it and how we enjoy building with it every day. When we were starting, we really wanted the app and the web app to be the same app with the same features on different platforms. But building with Flutter is way faster and more fun than the web. Some things are way more easier and fun to implement and work with on Flutter than on the web. Things like custom QR Codes, Scanning QR Codes, etc. Our Flutter app ended up having more features than the web app.

We ended up using Flutter to create 2 other apps. VenRecords which helps our users to keep track of their records on Venmun and out of Venmun, and VenContacts which helps users to share their contact information with custom QR Codes easily.

VenRecords
Venmun Contacts

We really can’t wait for Flutter to fully work on the web so that we can port the app to the web and have the app work across all platforms. Big thanks to the Flutter team for their fantastic work. I can’t wait to see the future and what Flutter brings.

--

--

Seth Samuel
Seth Samuel

Written by Seth Samuel

Seth Samuel is the founder and CEO of Venmun and online market place

No responses yet