The increasing popularity of contactless payment options and digital ways to manage finances from the screens of our phones make payment apps one of the most popular app categories. While leaders, such as Google Pay and Apple Pay, have the largest payment app market shares, there are still plenty of chances for a new player to become a leading solution on a regional level or dominate in a particular niche.
If you decide to make a payment app, choosing the right tech stack plays a decisive role in the app’s (and even the whole business) success in the future. Using Flutter for cross-platform development presents an interesting alternative to native solutions with the potential to accelerate the development process and decrease its costs.
We at Surf have been developing apps for over 12 years, using native and cross-platform solutions, and have many Fintech projects in our portfolio. In the article, we’ll discuss how Flutter app development compares to native one, the pros & cons of both approaches, and why Surf might be the development company you’ve been looking for.
What is Flutter
Flutter is a cross-platform software development kit released by Google just five years ago. The technology runs on Dart language and is built around the concept of customizable widgets that represent various components of an app. The framework’s engine is programmed on C++, while visualization is handled by Skia graphic engine. Learn more about Flutter’s architecture in our in-depth article.
Initially, Flutter allowed creating apps for iOS and Android devices using just one codebase. The release of Flutter 3 version expanded support to other four main platforms: Windows, Mac, Linux, and web. The third version of the technology is packed with important additions, such as Impeller, which precompiles a simple shader set at engine build time decreasing compile time when the app’s running.
Google, BMW, Tencent, KFC, and many other global companies and emerging startups chose app development with Flutter for their projects.
Flutter vs native: pros & cons
Several years ago, the number of Flutter app developers was quite small; there were only a handful of prominent projects built with technology, and the perspective of learning a new programming language seemed not very appealing to many. However, over the past 4 – 5 years things have changed. With more than 500,000 Flutter-based apps released worldwide, Flutter holds the top position among cross-platform frameworks for mobile development. Currently, there’s no reason to worry that finding experienced Flutter developers might be harder than building a team of native ones — there are plenty of skillful Flutter engineers, while even such tech giants as Microsoft and Amazon contribute to Flutter’s ecosystem, which currently has over 23,000 plugins and packages.
Speed of development
Time plays a crucial role for any fintech startup when acquiring new investors and an initial loyal user base decides the future fate of the whole project. Slow-downs and setbacks in the development process can be very painful for projects in the active phase of growth.
If you decide to build iOS and Android payment apps using native platforms’ languages (Swift and Kotlin, respectively), you’ll need to hire two separate developer teams to develop two different versions of the app. Cross-platform solutions allow developers to reuse the majority of the code across platforms — with Flutter, you’ll need a single development team to create apps for all main platforms. This inevitably makes development faster, decreasing the project’s time to market by 20-50% compared to native development.
Compared to other frameworks, Flutter requires fewer lines of code for the same features and is generally easier to use and maintain. One of Flutter’s strong points is Hot Reload, a feature that allows developers to see code changes on the go, without the need to reload the whole app. This streamlines and speeds up the development process as well. According to developers of Google Pay, after migration to Flutter the app’s codebase decreased by 35% despite adding new features, while the development team was able to use almost ⅔ of the time, more productively, thanks to the framework’s easy management.
In terms of performance, cross-platform apps are always a few steps behind those built with native frameworks. However, such cross-platform technologies as React Native and Flutter show stable performance almost similar to native frameworks. In Flutter, this is achieved by eliminating the so-called Java bridge used by other frameworks to share data with the platform’s native components — together with the advanced graphic engine this solution allows Flutter apps to maintain a stable 60 frames per second (FPS) even in scenes with heavy animations. Also, Flutter is characterized by less CPU usage, compared to React Native.
When Surf worked on an app for the Video Streaming Platform, it was of utmost importance to the client that the app had smooth UI and screen transitions. Our choice of Flutter turned out to be completely justified: while the development cost the client less than creating two native mobile apps, Flutter handled playback functions, animation, and UI navigation extremely well.
UI and UX
Another aspect, where many cross-platform frameworks lose to native ones is UX and UI. Native apps always look consistent with the overall platform’s interface and fully support their animations and layouts. In contrast to some other cross-platform technologies, Flutter can adapt its UI elements to a platform the app is launched on, making it visually indistinguishable from a native one. The framework supports both native visual styles of Android and iOS. The latest Flutter 3 version also supports all Material 3 features and Android 12 graphic effects.
Cost of development
Since native development requires creating two completely separate apps for Android and iOS users, it is always more expensive than writing a single cross-platform code for both platforms. It is true, the hourly wages of Flutter developers can get slightly higher than those of Kotlin and Swift engineers, but this factor gets downplayed by fewer development hours and fewer team members to hire. For example, when Surf worked on a project for a large pharmacy chain, we reused a Flutter codebase to develop 6 apps: iOS & Android apps for each of 3 client’s brands. As a result, we managed to complete the project with only 60% of the preliminary budget estimation based on native development.
Why partner with Surf for Flutter payment app development
With an estimated mobile payments market size growth of 24% by 2026 from $1.4 trillion in 2020, the digital transformation of our everyday finance activities steadily gains in speed and scale. This opens huge possibilities for emerging payments apps even in the presence of solutions created by Google, Apple, Samsung, and Alibaba.
The importance of a payment app’s code quality can hardly be overestimated for its success. That’s why choosing experienced developers always pays off in the long run. While hiring in-house developers is one of the ways to build an app, this can lead to some unnecessary expenses, especially if the built app is not the sole or the main product of the business. Hiring a Flutter development company, such as Surf, can be a preferable way to do things, and here are just a couple of reasons.
In payment app development, where users’ private and financial data is accessed regularly, extensive testing is a must. To cover every app aspect with tests without overstretching the development process, Surf employs various automated tests. When we worked on a B2C banking app we covered about 65% of the app’s code with E2E (end-to-end) automated tests that emulate various user actions, such as clicks, button taps, and switching between screens. These were followed by automated widget tests that allow catching bugs early on, compared to manual testing.
Advanced development solutions
As a Google-certified development studio, Surf was an early adopter of Flutter and contributed to the framework’s evolution. Our homegrown SurfGen and Surf Gear solutions enhance Flutter development process by automatically generating routine code and providing ready-made packages and utilities for recurrent development tasks. Surf’s Elementary library helps Flutter engineers develop projects using the principles of Clean Architecture, dividing app’s modules into blocks, which also decreases maintenance, revision, and testing time.
At some point after release, the majority of apps developed by outsourced teams get transferred in-house for post-release maintenance. To streamline the project transfer process, we at Surf always supply our app with the comprehensive documentation that covers every aspect of the project. For example, when the time came for our team to transfer a neobank app to the client’s in-house team, we provided extensive documentation of the app’s existing features, backlog, and designs of future updates.
With over a decade of experience developing mobile apps and backend solutions, Surf has partnered with companies from various industries and of various sizes, including KFC, large banks, emerging crypto platforms, and many retailers and online shops. This allows us to employ the best solutions from previous projects in other industries, making the development more efficient and the final result better. Along with Flutter, we provide native and Golang development services, choosing the most suitable technology for every project.