What we do
At Neohelden, we are building a digital assistant for business. The ability to deliver a highly customizable and beautiful App is crucial to us: We want to provide our users one interface to access all Enterprise-tools they’re currently using at work – across platforms and systems. This is why we’re faced with the challenge of deploying to a total of 5 systems: Android, iOS, Mac, Windows, and Linux.
In this article, we’ll dive into our technical approach, and why we’re giving Flutter, a new mobile UI framework from Google, a serious try.
One code to rule them all: Our approach
As a startup – and especially in tech –, the struggle of ever-limited resources is real: Developing an Enterprise-grade AI-assistant is a challenge in multiple ways.
From a technological point of view, our current stack is mostly web-based. We use Node.js in the backend, and frontend-wise we’re using React and a combination of Electron and Cordova.
To us, this was (and still is) a pretty clear choice – and especially a pragmatic one:
- We are able to move fast, as we have vast experience with these frameworks.
- The React ecosystem is very active.
- Using JS-technologies in the front- end backend brings along some nice synergies.
- We write once – and run on all major platforms and devices, which drastically reduces workload, and frees up capacities for some heavy-lifting in the backend.
All of this is working very well and – so far – we had great success. However, we are aware of the limitations web-based technologies bring along in native environments. And as a startup, we are always looking for ways to make our product even better.
Stumbling across Flutter
We came across Flutter and were skeptical at first: There have been a lot of frameworks and approaches that promised similar features and advantages – but very few, if any, were able to live up to them (see e.g. Airbnb’s move away from React Native).
With Flutter, however, things might turn out to be different: In the following sections, we want to elaborate on the reasons and the thought process which led us to give Flutter a shot.
Beautiful and native UIs in record time
To top things off, developing Flutter Apps is super fast. Flutter heavily encourages the composition pattern which results in a very composable way of writing code. If you haven’t tried it yet and want to give it a shot, we highly encourage you to do so – it’s surprisingly easy to get started with (head over to flutter.io).
Flutter is moving fast
Just one year ago, Flutter was in the alpha. Since then, a lot has happened and the folks over at Google just labeled Flutter as “release ready” / V 1.0 a few weeks ago.
Even though this is only a label, it shows how confident they feel about what they have built. And we can definitely feel the same way: Features are being developed left and right, the code is being updated daily, and there are tons of apps out there made with Flutter.
Writing once, deploying multiple times
One reason for choosing a web-based stack as initial starting point was the ability to write once and run virtually everywhere.
We do not want to lose that power.
Luckily Flutter works on the two major mobile platforms, Android and iOS.
But that’s not it!
Even though these approaches are mostly experimental at this point, we are sure its time will come.
Building on a future-proof framework
When building a product, it’s mission-critical to think about the future. We believe in the future of Flutter – it’s awesome right now, and it’s going to get even better.
We keep reading articles like this one about people praising Flutter and forecasting that it will be the future – and we see people implementing awesome apps and tools. Obviously, everybody is entitled to his/her own opinion, but we think it’s a pretty good
Flutter meets Adaptive cards
Fortunately, we were able to build a render for Adaptive Cards in Flutter in record time.
Implementing this kind of JSON-to-widget-mapping was surprisingly easy. As each widget just takes in a set of configurations, we could map most of the Adaptive Card elements to widgets without much extra work.
We’re now in touch with Microsoft and the Adaptive Cards team to discuss next steps and – as the code turned out pretty well – we are planning to open source our implementation once we stabilized it. If you’re excited for that, shoot us a message!
Building an ecosystem around technologies is crucial. Hence, we are proud to announce that we will be hosting and organizing the very first Flutter-Meetup here in our hometown – Karlsruhe, Germany.
In our first Meetup (on Feb 5, 2019,
Our goal with this is to strengthen the local community and push the technology forward – and we hope to see you there!
Flutter: A promising approach for building native-apps on a single code-base
At the end of the day – no matter what technology you choose – your finished product has to live up to its expectation. And we believe that Flutter allows us to exceed expectations whilst not building for 5 platforms separately.
Yes, Flutter might very well be still rather experimental, but the future seems to be very promising, and we’re happy that we take part in this with our AI-assistant Neo.