Choosing the tech stack for your next project, you undoubtedly think ahead and consider both the results that have already been achieved with the technology and the prospects it has.
So do we, at Surf. We always have a clear vision of future project development and prospects, either for our internal solutions or for our clients’ products. We practice internal projects for field testing of promising technologies and solutions to check things that our clients will be ready for “tomorrow”.
Thus, before Flutter 3.0 was released, with the new lifecycle API for Flutter web apps, we had already implemented an internal Flutter Web project. And our experts are sure that the lifecycle API belongs to the changes that help increase the quality of the product and improve the end-user experience.
Today, we are glad to share some insights about the long- and short-term benefits businesses can get from the combination of Golang for backend and Flutter for mobile app development, and some tips on what to pay attention to when choosing the vendor for such a project.
Golang backend + Flutter mobile app development: effective combo
Golang development services: heading for high performance
Go is appreciated for its simplicity, saved development resources, and excellent results delivered.
Go is a good match for developing high load or distributed systems. Not to forget that Go is the language of Kubernetes and Docker— the most convenient and widely used tools among container management systems.
Go development teams have achieved good results in various niches, and the language is widely used by large market players such as Cloudflare, Netflix, Dropbox, Paypal, etc. We, at Surf, use Go for back-end development along with Java and Kotlin.
So, Go is used for backend development, web development, API, charts, real time communications, server apps, cloud-based services, cloud computing etc., but is not the best choice for mobile apps, graphics, and frontend development. And here, we come to the second part of our article that is dedicated to Flutter.
Flutter mobile app development: all the way to Flutter 3.0
Flutter is an open-source UI software development kit that is designed for cross-platform mobile apps development and uses Dart programming language. The framework was developed by Google and the first release dates from 2018.
The framework offers extensive creative opportunities for building amazing Flutter apps for both Android and iOS devices. Flutter is suitable for creating prototypes and MVPs as well as complex apps and games.
Being relatively young, Flutter has already won the hearts of programmers as it is simple and flexible, and at the same time allows solving various challenges, including those of high complexity.
According to Statista, Flutter is the most popular cross-platform mobile framework used by global developers, based on the findings of a 2021 developer survey
At Surf, we’ve been using Flutter since 2019. We were interested in the idea of building mobile apps with excellent performance and native look & feel, and simultaneously saving 50% time and money for our clients. The more we learned about the opportunities offered by Flutter, the more enthusiastic our team grew. Now, our code powers 15+ apps built for various industries, from fintech and banking to video streaming platforms.
The next special point about Flutter is its qualitative progress. For example, with the release of Flutter 3.0, it was announced that Flutter is ready for production on all desktop platforms and offers high quality web updates. But this is the topic of our another article about the reasons to use Flutter for web development.
Why Golang and Flutter are a good match for app development
Such a combination of technologies offers benefits both on a short- and long-term horizon. Speaking about obvious pros, we can start with
Opportunity to save to 40% of your budget
Flutter helps save project budgets due to reusing a single code base across iOS and Android and hiring one team of Flutter app developers instead of two native development teams. As a result, your app goes to the market in half the time, faster than your competitors’ ones.
We developed with Flutter the mobile apps for three pharmacy brands presented by our Client which allowed saving 40% of the budget that would have been spent for native development.
Performance in focus
Go and Flutter projects were developed by Google for solving different problems, but both were based on the idea of achieving high performance.
As for Flutter, it delivers close-to-native performance due to the AOT (Ahead of Time) compiler and highly-optimized Skia rendering engine. While Go helps programmers create scalable and performant solutions due to its concurrent Goroutines. As compared to the traditional architecture, where each executed thread needs its own Operating System thread, with Goroutines a single process serves simultaneously the multiple requests. Besides, Go is capable of compiling code into executable binaries before deployment without runtime interpretation, and it makes Go a quick and efficient server-side partner for Flutter to ensure high performance.
Based on our experience in Flutter mobile development, we can share more practices to optimize the performance
- avoiding costly build method
- using const Widgets
- using Opacity only when necessary
- avoiding calls to saveLayer.
More details and another five tips you can find in our blog post on Flutter performance tips.
A custom YouTube-like video streaming service built with Flutter makes the users happy with the UX, quality of the video player, its response and download speed.
Similar development environment
Here, we shall remind you that Flutter uses Dart as the cross-platform development language. If we compare Dart and Go, the first idea is that they are designed to deal with different technical problems. Go is developed for those who write, read, debug, and maintain large software systems to make the process more effective and scalable. Dart, in its turn, deals with UI and consumer app development.
Nevertheless, Go and Dart have similar syntax, and namely C-style syntax. The developer tools and third-party libraries they offer are also similar. Go development tools can be used with Flutter development tools’ operating systems.
Excellent scalability possibilities
Now, let’s consider both technologies from the point of view of the long-term growth of your project, and namely scalability.
On the one hand, scalability means your app’s ability to serve a growing number of users with no impact to the app’s performance and the user experience. On the other hand, it is important for your system to stay maintainable assuming that your team will grow fast and the new programmers with different technical backgrounds will have to onboard quickly and deliver quality results in a good tempo.
Both Go and Flutter have already proved in practice their good scalability features.
Nubank, a Brazilian neobank, experienced growth to the largest fintech in Latin America, therefore developing new products became their priority. In view of this, they searched for a new technology and chose Flutter due to its testing capabilities, such as built-in testing infrastructure for Unit, Integration, and End-to-End tests without the need for rendering to the screen, and for excellent development experience with Flutter hot reload capabilities, robust official documentation, and a stable API.
MercadoLibre, Inc. hosts the largest online commerce ecosystem in Latin America. The company enables e-commerce and digital and mobile payments on behalf of their customers by delivering a suite of technology solutions across the complete value chain of commerce. Being present in 18 countries, the company has turned to Go to help it scale and modernize its ecosystem. Go provides clean, efficient, and scalable code, helps increase developer productivity due to writing less code, and offers great performance benefits. For example, one large Go service is able to run 70,000 requests per machine with just 20 MB of RAM.
Both open source projects, Flutter and Go, were initiated by Google: Go v1 was released in 2012 and Flutter v1 in 2018, but this was in 2019 when the technologies started to be increasingly used for cloud-based business applications, and their popularity continues to grow. Both projects enjoy strong community support, and Google is quite committed to supporting the technologies further on. This means, if you choose Go and Flutter, you do not need to be concerned about the future of your project tech stack. Moreover, your programmers may count on new solutions and tooling that appear with every new release to facilitate the development process and enhance app quality.
For example, we have already tested in-house in operation an experimental rendering backend called Impeller presented with the Flutter 3.0 release. Impeller is designed to precompile a smaller, simpler set of shaders at engine build time so that they won’t compile while an app is running. This helps to exclude a major source of janks in Flutter. The results are impressive. Impeller tests showed no lags or janks. So, we are ready to release it to production as soon as the official Flutter team gives the go ahead.
Golang + Flutter development company: key selection criteria
When hiring Go or Flutter app developers, the first thing you undoubtedly consider is their hard skills. And here the key point is that knowledge of Go and Dart is not enough to create a product that would not only offer amazing UX and performance, but also be easy to maintain and scale.
What do you think is the right way to start learning Flutter for cross-platform app development? The obvious answer is — start with Flutter itself. Though we would advise to begin with the fundamentals of Android and iOS development. It may sound counterintuitive, but basic knowledge is required and has to be learned. And acquiring the knowledge in the context of real product development would be more painful and cause stress.
The same refers to any technical expertise. This shall be based on a profound engineering background, deep understanding of the technology and its trends, system approach, and strong engineering culture within the team.
Creating an app that will be used by millions of your users is more than writing code. To bring your product to success, your team shall be aware of and know how to deal in practice with the industry best practices, market trends, customer needs, competitors’ offers, regulator requirements, and more other things.
At Surf, we have long understood that our twelve years’ experience in fintech, retail, foodtech, banking can be successfully reused across industries delivering new competitive solutions for our clients. We know from practical experience
- how to create a brand new UX on the industry scale,
- how to bring a startup to a market leader,
- how to create a custom digital ERP system that can be scaled for 600+ company branches or affiliates; or
- how to make an app where users buy three times more often.
Processes and project management
Now, as you know what the team can do, take a look at their processes, communication, and their approach to time, budget, and risk management.
Just some of the questions for you to check when choosing the vendor
- Who is my key point of contact in the team to get the current project information and solve urgent issues related to scope, time, and cost?
- Where and how often will I get information about the project progress, results, and changes?
- Does the vendor have enough resources to make the team for my project stable avoiding unnecessary rotation?
- Is the team ready to share with me not only the positive facts, but also any eventual blockers and doubts?
- Will I get all project information well-documented with updates on a regular basis?
- Is there any procedure for transfer of the project knowledge base in-house?
- What deliverables will I get at the end of the project?
The list can be prolonged depending on your previous experience (either good or bad), but the main idea is to clear out all these issues at the start and spare you extra troubles and stress.
The last but not the least on our list. This is the team characteristic that is hard to measure in lines of code, or hours, or some other KPI. But it has a direct impact upon the project progress, quality of your product in the long term, and innovative approach to solving your business goals.
The engaged and enthusiastically-tuned team will strive to find game-changing solutions, being well aware of the difference between hype and technologies that can really benefit your product. Such a team will become your technological partner, and highly likely not for one project, saving you time and resources for searching for a new vendor for the next tasks.
Based on our Flutter experience, our experts developed an Elementary library that helps write cleaner code and reduce maintenance and revision times. This means, development, maintenance, and upgrades take less time in the long run. We used Elementary for a financial app for one of the first neobanks of Pakistan.
Summing things up
Go and Flutter are two technologies with good results and no less good prospects, ready for new challenges.
Go is of great help for microservices building, improving requests proceeding speed and availability, for high loaded systems development, and making commits from zero to productive fast. Flutter allows creating amazing UX with native look & feel, increasing performance, and enhancing the development process.
But without an experienced and skilled team the technologies themselves will not deliver the best achievable result. Therefore, be sure to find the top-quality elements foryour project before you start: most suitable tech stack, team with relevant skills and background, approaches that match your specific needs and expectations.