Nowadays, there are many programming languages and frameworks to choose from. The choice of a particular one depends on many factors like business goals, available resources, time, the type of application, and its requirements. In this case study, we’d like to show our journey from cross-platform development based on Flutter to a native programming language approach.
Our customer PROXESS GmbH
PROXESS GmbH is a leading provider of document management and processing systems with a wide toolset of solutions serving over 2.800 customers and 100.000 users.
Proof of concept “PROXESS Now”
During the pandemic, many people were working remotely. But printing, scanning, and uploading hundreds of documents on a daily basis can be quite a challenge when working from home and without the right toolset.
That’s why our customer decided to develop a user-friendly mobile scanning application. The App was supposed to work on both Android and iOS, allow to log into the system using a QR code that can be downloaded from a web portal, allow users to take photos of a document, send the document to the appropriate database, and save it together with corresponding attributes. For this, we created a proof of concept based on Flutter.
What is Flutter and why did we choose it?
Flutter is an open-source framework invented by Google for creating applications on various operating systems. Initially available only for Android devices, it currently allows you to build applications also for iOS, macOS, web browsers, and more.
Flutter allows for efficiently implementing attractive-looking, responsive user interfaces. It enables the simultaneous use of UI components and design patterns from various platforms — including Material Design widgets derived from Google design language and the Cupertino set, derived from Apple’s operating systems.
You can read more about Codelab’s applications based on Flutter in the previous article.
The most significant advantage of Flutter apps is one code base for all platforms. This means that the development and testing are faster, more features can be added to the scope, and the maintenance is easier and less time-consuming. Using Flutter can give you the edge in effectively balancing project time, cost, and scope.
But is Flutter always the best choice? Is it better than native apps? Our use case showed that sometimes you have to think twice before going for a cross-platform solution.
The final product “PROXESS Now”
Developing a proof of concept in Flutter at first gave us already a lot of insights and led us to the conclusion to go for a separate development on iOS and Android instead of a cross-platform approach for this specific use case. And here is why:
- iOS-level build-in features
iOS has a great build-in solution for document scanning (VNDocumentCameraViewController). As scanning was the crucial feature of the mobile application we wanted it to have seamless functionality and strongly recommended the iOS build-in solution. iOS also provides other important features that were crucial to our solutions such as document previewing (QLPreviewController) and biometrics (Face ID, Touch ID).
- Android third-party libraries
Third-party libraries and packages have a significant impact on software development as they are usually open-source, pre-tested, and easily available. Since Flutter is still rather new for mobile app development, the availability of such packages and libraries is limited. The framework is still in a growing stage and continuously improving. It’s hard to predict if there will be any libraries missing in the future. In our case, we used the fingerprint biometric authentication provided by the Android framework. On the other hand, we had to use an external solution provided by Pixelnetica for scanning the documents.
- A growing scope of functionalities for future releases of the application
At project kick-off, we developed a clear picture and detailed understanding of all requirements and functionalities for the initial version of the product. However, the future feature set was very unclear and many ideas were floating around. In order to assure a future-proof solution and reduce the risk for further development, a native development approach seemed the best move.
- Possible delayed adjustments for new Android and iOS versions — Flutter developers must take time to adjust
New features implemented in most recent iOS or Android versions normally are not available for Flutter at the time of release. It takes time for Flutter developers to adapt and adjust their packages and libraries. It might be not relevant for most of the products (since apps must be backward-compatible) but it has to be taken into consideration when choosing technology for the next months or years.
- Developers availability
Developers’ availability is also an important factor to consider before starting a new project. In general, more native (iOS, Android) developers are available than people specialized in Flutter development.
Thanks to the customer’s trust in our experience and expertise, the development was a big success. “PROXESS Now” is available on Google Play and the iOS App Store. It simplifies the scanning, uploading, and processing of documents in a DMS wherever you go.
There are many types of mobile applications on the market, and different frameworks and tools available. The choice is often more complex than between Flutter and native languages.
Not sure what is the best approach for your product? Then better consult Codelab’s expert developers.