Desktop App with Flutter Is Within Reach
Flutter desktop apps get more popular among developers and businesses. During the past few years, Flutter cross-platform framework has become a popular choice among developers for creating high-performance and natively looking Flutter desktop Apps. Among widely known companies that use it are BMW, Nubank, Alibaba Group, and many others. The framework’s recent update made it possible to create desktop apps as well.
Surf was an early adopter of this technology, having developed apps with the technology in the areas of e-commerce, banking, and food tech. In the article, we’ll explore the framework’s capabilities for building desktop applications and examples of desktop apps successfully built with the framework.
Flutter desktop: upgrades for Windows, macOS, and Linux
Released in 2022, the framework’s third version, came with support for building native Windows, macOS, and Linux desktop apps, in addition to already supported iOS, Android, and web. The essential software set to start developing Flutter desktop apps requires three tools: SDK, an editor, and a suitable build chain for an operating system. See official documentation to learn more about platform-specific requirements for desktop development.
Why choose Flutter for your desktop app?
Flutter runs on Dart programming language, which is known for its simplicity and low amount of service code. The framework defies the common notion about cross-platform solutions having significantly lower performance and poorer user experience than native ones. Let’s explore the major aspects that make it such a great choice of platform for mobile and desktop app development.
FPS or frames per second is the common performance metric for apps. FPS below 30 can be perceived by users as stuttering or freezing. With cross-platform apps, low FPS is a common issue, which results from the difference between technologies used in app and device’s hardware. However, Flutter’s architecture, which doesn’t employ a ‘Java bridge’ to connect the app’s modules and device components, instead relying on direct ‘translation’ of Dart code into the native one, allows apps to show performance close to native solutions.
Surf has thoroughly explored the framework’s performance capabilities when building a video streaming app. The key requirement of the client was to provide a YouTube-like experience, so the responsiveness of playback controls was of the essence. The choice of Flutter, together with dynamic video resolution based on the connection speed and pre-caching, allowed us to achieve great playback performance.
Native look and feel
Flutter is based on widgets, which are its architecture core components. From a block of text to a button, everything is a widget and each of them can be customized. The framework comes with the full support of native visual styles, automatically updating the appearance of the app’s elements to match the platform’s visual style. This way, developers have complete control over how an app looks: whether it has a unified design across platforms or adapts to each of them to appear native.
On average, the rates of cross-platform developers are slightly higher than of the native ones. The difference varies, tending to be in the range of 5-15%. However, this downside is balanced by the fact that creating several mobile and desktop apps with Flutter requires a single codebase and one development team. As a result, reduced expenses on hiring and management lead to the app’s lower final cost.
For example, when Surf worked on mobile apps for an online pharmacy, our suggestion to use the framework allowed us to build 6 apps (iOS and Android apps for each of the 3 brands of the client) with one codebase and save almost 40% of the initial budget allocated for native development.
Fast time to market
Flutter comes with many tools that make the development process efficient. For example, Hot Reload is a feature that allows engineers to see code changes in real time, without the need to reload the whole app after each update. This reduces the time required for bug fixing and makes experimenting with different approaches more feasible.
Also, the framework’s code is more readable and requires less maintenance effort than other technologies. For example, Google Pay development team noticed a 60–70% reduction in code management time after transferring the app to the cross-platform framework. This and other features help to keep an app’s time to market short, which is crucial for development in the fast-paced digital market of today.
Flutter desktop case studies
Having created a prototype Flutter desktop app with CanvasKit, the developers noticed major improvements, from easier onboarding of new engineers to great built-in linting (checking for errors in code) and language servers for editing environments. Today, Rive’s editor is built entirely with it. The team praises the framework’s built-in testing tools that allow them to run thousands of tests per build and its support of custom features.
Invoice Ninja allows to streamline and automate payment and invoice management. The app provides a dashboard and charts to view and track revenue, invoice averages, and client activity. Since it is cloud-based, all data is automatically synchronized across multiple devices. Invoice Ninja comes as a stand-alone app and also as a payment gateway plugin for Flutter apps.
The app is available on all major platforms. Initially built with three different codebases (web, iOS, and Android) and native technologies, the app now uses a single codebase, after having been rebuilt with the framework’s Redux Starter package. The transfer to the framework positively affected both developers’ productivity and the app’s quality. There are fewer lines of code to manage and customers encounter much fewer errors, which has resulted in a significant increase of the app’s score in stores.
Rows is a spreadsheet app that comes with extensive support for sharing and integration tools, public databases, and APIs. Starting with a web-based app, Rows’ team decided to create desktop apps to achieve ultimate performance. Choosing between 3 possible options, a web-based toolkit, native technologies, and Flutter, they settled for the latter and the choice proved to be right.
Futter-based desktop and mobile versions of Rows easily maintain 60 FPS and provide smooth scroll even with spreadsheets of several thousand cells. The framework’s support of animation also helps to deliver a great user experience and display all types of content in cells in the best possible way.
Prospects for extending desktop support with Flutter
Created by Google, Flutter is regularly updated and receives full support from the tech giant. The framework is likely to be adopted by even more companies of various sizes in the future. Its support for desktop applications provides endless possibilities to develop cross-platform products in an efficient manner.
The framework’s growing community is another aspect worth mentioning since its members create tools that simplify and optimize the development process. Surf team is no exception here: our homegrown open-source solutions, such as Surf Gear, SurfGen, and Elementary library, help developers to automate routine code writing and focus more on solving complex and creative tasks. These tools, Flutter expertise, and our 12 years of development experience in the fields of e-commerce, fintech, digital media and others, make Surf an ideal development partner for your next app.