One code base, Six platforms22nd of August 2022, by Oliver Dixon
We're always looking for solutions that will help save our partners time, money and help improve the quality across their platforms.
We decided to create our own business communication power tool called Bap which you can download at Bap.io; Our main reasons were that we were not satisfied with Slack, Telegram or any other messaging tool, for example:
- We couldn't set office hours, or batched notifications in these platforms. Something we consider basic functionality for messaging tools.
- Had to pay for all our employees and freelancers to have seats, very expensive.
- The privacy settings on Slack were abysmal, freelancers could access anything they wanted.
- Having Silos for companies was annoying.
- And much more, you can see on Bap.io
We plan to include Calendly style features, and live video chats, and much more. So we needed to make sure our choice was future proof.
For a grand project like this, users expect desktop apps, a web version and mobile apps.
Testing potential frameworks
In order to choose the right framework, we ran a set of tests on each of them. Our tests was to make a mini app with drawer ui, video playback on a list & live socket events from a server. The app would then by tested on 6 major platforms, MacOS, Windows, Web, Linux, Android and iOS.
React Native is a way to make apps using popular web technologies. Many IT consultants still use React native for projects today. The reason why is because it's eaiser for web development experts to get into mobile development.
We spent the first 2 years of the company doing React Native. We decided that it wasn't a great technology for a couple of reasons
- Issues with Android manufacturers changing UI components which would crash the app. This could happen at any time.
- Immature developer ecosystem that would push non-production ready versions of the framework
- Upgrading the framework was hell
- Low quality debugging tools and almost impossible to debug on Android
- The deployed web versions were not very good and felt 'hacky', lots of bugs we're found.
- Poor desktop support, the electron versions felt half-baked
- Need a large Android device test lab and QA team to make sure it works on most devices. Will never work on 100% of devices.
Using an existing site technology capacitors deploy apps as Progressive Web Apps (PWAs). This can be great if you have an existing web solution and want to deploy on iOS/Android.
- We love using Svelte with Tailwind so that would have been nice, as development is quick.
- Very simple and effective way to communicate with the native bridge.
Not so great
- Lack of native 'look' & 'feel''
- A lot of work to make the apps feel high quality on mobile.
- The desktop support felt half baked.
- Poor performance
- Slow debugging
Creating the app 6 times for each platform would have an an astronomicals cost. You have to 6x Everything. 6x the bugs, 6x the QA, 6x the management, etc. In our article 'Container apps are The future', we explain why native is a poor choice in 2022.
Our winner! 🎉
Polydelic has been using Flutter for the last 3 years. We are in communication with the original founders of Flutter at Google. It's been incredibly solid and easy to work with.
After doing some experiments on Desktop and Web, we decided that Flutter was the choice for us.
- Has it's own UI engine. No issues with OS updating or Android manufacturers tampering with the UI layer. Making it much more consistent and reliable than other solutions.
- The libraries were written in Dart, being a static langauge we knew that the quality was much higher than the other options.
- The community has grown the last 3 years exponentially, surpassing React native as the most popular way to make apps, large community means there are a lot of modules we can use.
- The web version was identical to the app/desktop version no matter the browser.
- Upgrading is as simple as running 1 command.
- Deploy to MacOS, Windows, Web, Android, iOS & Linux with 1 command. No need do to anything custom and 'hacky'.
- Great debugging support on all platforms.
- Extremely high quality components tested and developed by experts at Google.
- And much more
- Designs, 1 month
- Development, 3-4 months
- Testing, Customer feedback & Tweaks, 2-3 months
We obtained all our roadmap goals with time to spare.
The development process was great, the only issues we encountered were that some libraries were a little pre-mature, but still fully functional.
For example; video chat was a bit tricky to implement as there were some bugs in the video chat libraries for Firefox & Safari.
These issues will fade fairly quickly. These libraries are very active, often getting multiple updates in the same day. We have also been in contact with the library developers and their the response has been great.
A great future
Going into the future with new projects and partners, we now have a large set of reusable modules that work on all platforms.
Not only will this save us and them time and money, but it will allow us to develop platforms, not just apps at lightening speeds!