Android

Flutter is not the ultimate cross platform choice, but it may be a different future

2025-10-27

What is the reason behind the Flutter fire? Why are more and more companies and developers choosing to use Flutter? Will Flutter become the ultimate choice for cross platform development? I don't think Flutter is the ultimate cross platform choice. I initially chose Flutter not because it would definitely become the ultimate choice in the future, but because it has the potential to become a different future. ”


The reason for the Flutter fire

Some people say that the main reason for Flutter's popularity is its choice of Dart language. Dart has high performance and the ability to quickly allocate memory, supporting both JIT and AOT modes, allowing for deformation and stateful hot overloading in typed languages, and compiling efficient ARM machine code instructions. Dart, as an object-oriented language, also allows the vast majority of developers to get started faster. I acknowledge that Dart language has certain advantages, but these advantages are not unique to Dart, and I don't think this is the core reason why people choose Flutter. This is a reversal of cause and effect. In fact, Dart was launched in 2011 and was almost forgotten before Flutter appeared. It is precisely because of the popularity of Flutter in recent years that Dart has re entered the public eye. Flutter initially chose Dart, or simply because Google's Flutter and Dart teams were closer and had easier communication. I think the main reasons why Flutter is so popular are the following:


1. There are deficiencies in existing cross platform technologies

In the era of mobile Internet, Android and iOS have coexisted for a long time. In addition, the web front-end technology with mature system has led to the problem of human cost of repeated development of the same application at multiple ends. Therefore, cross platform technology in the mobile era is a topic that requires long-term research. If there are already relatively perfect solutions for current cross platform technologies, there may not be opportunities for new technologies to emerge. In fact, the currently mature cross platform technologies in the industry all have certain shortcomings, such as long rendering time for mini programs (WebViews), white screen rate that can affect conversion revenue, and limited functionality that can be achieved; For example, React Native has insufficient performance, difficulty in troubleshooting, and high maintenance costs. The emergence of Flutter has improved these cross platform development issues. It is still an open-source technology from Google and has a certain level of popularity. In addition, the highly anticipated and mysterious Fuchsia system also uses Flutter on its UI framework, which can serve as a long-term strategic investment and enhance everyone's confidence in Flutter.


2. R&D efficiency is competitiveness

In the second half of the mobile Internet market, some emerging Internet unicorns and small giants appeared. Without historical burdens, they were more willing to try new technologies with higher technology limits. It is not difficult to see from the difficulty of school recruitment and social recruitment that talent for the client is even scarcer compared to before, especially iOS engineers. In the second half, there will be more competition and more intense tracks, such as education. Flutter itself is very suitable for application development from scratch without historical baggage. For new businesses, especially in situations where team manpower is scarce, considering Flutter in technology selection can accelerate product landing on multiple platforms and enable quick trial and error.


3. Combining beauty and smoothness in one

Flutter has attracted the attention of developers since its birth with features such as beautiful UI, pixel level controllability, smooth performance, and comparable native performance. Its self rendering engine even has the ability to develop games. In the second half of mobile, there is no demographic dividend, and competition is more intense. How to better meet users' demand for high quality and smoothness is a strong competitive advantage of mobile devices. To achieve higher smoothness in cross platform technology, adopting self rendering technology is a more optimal solution and a more thorough direction for cross platform technology.

ByteDance selects the initial center of the Flutter

Speaking of which, let's first share the story of how Flutter was first born. Flutter founder Eric previously worked in the Chrome team and encountered some difficult problems. He hoped that a part of the web could have a smoother experience, so he spent several weeks conducting an experiment. Without considering the compatibility of the web, he removed a large amount of code and some features that were not commonly used by web developers for the sake of compatibility. He removed many web elements rendering that was no longer supported. Then, he conducted a benchmark test and concluded that the speed of certain focused metrics was 20 times faster. So Eric decided to do something more and invested a lot of research and development, which led to the current Flutter.


The feeling that comes from hearing this is that Flutter should be easy for web engineers to get started with. I have communicated with many business teams in the company who are using or researching Flutter, and found that the client side has a higher acceptance of Flutter than the front end students. I personally came from the Android side technology, and I really think it is very easy to learn Flutter, but the front end students in the company will complain more about the use of Flutter. So, I think Flutter is more like a cross platform technology from a client-side perspective. Flutter is not so much a big front-end technology as a big mobile technology. The Roadmap developed by Flutter also first fully supports Android/iOS capabilities, and then further improves its support for web capabilities.


ByteDance still attaches great importance to the client technology. There are many client engineers for ByteDance. The basic technology of the client in-depth before is more about plug-in, hot repair, performance optimization, security reinforcement, etc. The cross platform direction has always been the front end engineers sparing no effort to promote, belonging to the big front end direction. Flutter is a cross platform technology solution that is more dominant on the client-side. In addition, ByteDance does not mean that there is only one set of cross platform technology stacks. The company also has multiple sets of cross end technology stacks, including the self-developed scheme.


In ByteDance, cross platform technology has not formed a large-scale landing, and it was mentioned before that there is no historical burden. Therefore, when facing the cross platform technology selection, we pay more attention to the technical ceiling and development potential of cross platform technology. Flutter, a self rendering technology, can be understood as a more thorough and pure cross platform technology. With its native fluency, this is our original intention to choose Flutter.

The 'pitfalls' in Flutter's landing process

Up to now, many businesses of ByteDance have implemented Flutter technical solutions, including more than 20 businesses such as Toutiao, watermelon video, Pipi shrimp, which are being developed using Flutter, including pure Flutter projects, as well as Flutter and Native hybrid projects. If you want to learn more about the implementation of business, I will share it at this year's QCon Beijing 2020 conference.


Although Flutter has a high potential limit, it still needs to be polished and refined. We have encountered many problems in the process of promoting Flutter, such as the problem of large package volume, performance not meeting expectations, unfriendly support for hybrid engineering, inconsistent versions of Flutter engines among hosts, incomplete basic libraries, and equal data after Flutter transformation. In addition, there are many non-technical difficulties, such as the business team not recognizing the new Flutter technology, engineers lacking Flutter experience, and concerns about audit risks, which will affect whether the business side adopts Flutter technology. Every difficulty needs to be solved, otherwise it will be difficult to land. Below are two of the difficulties that I will discuss further.


1. Package volume issue

Large APPs within ByteDance, such as Today's Headlines and Tiktok, are very sensitive to the increment of packet volume. Flutter's packet volume involves two parts. One is the packet volume problem of the one-time Flutter engine, and the other is the problem of writing Dart code each time compared to writing OC code increment. Both of these issues are very tricky for us. We have established a special project to optimize package volume and are making every effort to tackle them. At the same time, we have held multiple meetings with Google engineers to continuously streamline package volume. In the end, we achieved significant results through a series of optimization methods, including data compression, compilation optimization, Skia clipping, BoringSSL/ICU library/text rendering/libwebp, and other library clipping techniques; Through practice, we have found that using OC code and Dart code to write the same business logic, Dart generates more machine code instructions than OC, mainly in the simplification of binary instruction headers, instruction redundancy, instruction alignment, as well as the simplification of StackMap and CodeSourceMap. We have also provided feedback to Google regarding these situations. Regarding instruction simplification, you can check the progress of the Issue, which records the detailed progress process: https://github.com/flutter/flutter/issues/40345


2. Performance optimization issues

This is one of the tricky problems we encountered. We used Flutter's official performance analysis tool Timeline to analyze a rather bizarre performance issue, but we were unable to detect any anomalies. I have been troubled for a long time, so I decided to redo the source code of the entire performance analysis tool Timeline. In the end, I found its flaws and mentioned it to the Flutter community. I included 10 PRs, which gave me the honor of becoming a Flutter Member. I will continue to contribute more to the community in the future: https://github.com/flutter/flutter/issues/47771.


Flutter is a self rendering cross platform technology with a high performance limit, but it does not mean that its performance is excellent in all aspects now. After all, as a "newborn", Flutter still has some areas that need further improvement. In addition to modifying performance tools, we have also solved many performance issues in Flutter implementation scenarios and optimized our own engine, such as UI preloading strategy, Flutter Turbo technology, Vsync scheduling strategy, etc., to speed up the engine and strive to maximize Flutter performance.

The development obstacles of Flutter at the business level

After introducing Flutter, it also created a lot of value in the company's business. Mainly reflected in these aspects: firstly, Flutter performs well in multi terminal consistency, achieving WYSIWYG without the need for additional adaptation work for a specific platform; Secondly, hot overload technology enables design and engineering teams to modify and debug UI very quickly. Designers only need to focus on one platform implementation, and UI acceptance efficiency is significantly improved. Cross end development can improve engineer efficiency (some teams have estimated that human efficiency has increased by approximately 1.8 times); Thirdly, the performance smoothness has been improved, with a significant increase in the first screen time compared to the H5 version. Finally, there are clear benefits in the commercial data of the product, which can intuitively see the revenue that Flutter brings to the company.


However, there are still some obstacles to the development of Flutter at this stage:


Flutter uses Dart language and has not been able to introduce a mature front-end ecosystem

As a front-end engineer, I may prefer Flutter to use JavaScript or TypeScript in the upper layer, and in the future, I can consider providing high-performance Dart and JS interoperability. In addition, Flutter development still presents some challenges for front-end development engineers. Pure front-end development may not necessarily cover certain technologies. For example, if a hardware related plugin in Flutter only has bugs on a certain phone, and there is no existing solution in the community, it may take a considerable amount of time and cost to learn Native technology or consult with client engineers.


2. Open source libraries are relatively lacking and have insufficient update frequency

The Flutter ecosystem is not yet fully developed, and new business integration requires building wheels on one's own, especially if the business team is not proficient enough in Flutter, which will increase additional costs. Flutter will be easier to promote in large and medium-sized enterprises, and there is manpower to build wheels for other businesses within the company to reuse; In addition, Flutter documentation is a bit scarce and there is not much experience to draw from. In the future, it is necessary to strengthen and encourage more developers to join the ecosystem co construction.


3. There is a certain competitive relationship with the native ecosystem

A friend once told me about this thing. Seeing Flutter so popular, the Android development team asked him, "Why do people use Flutter to develop apps? What's wrong with our Android? Tell us, we can improve it. Not to mention their insufficient understanding of cross platform, at least it can be seen that native platforms are concerned about cross platform technology. Many Android teams are launching Kotlin Multiplayer, hoping to compete for more markets. In addition, the audit risk of the Apple Store is also a concern for everyone. The official announcement originally stated that the core features and functions of the application must be included in the software's binary files, rather than being dynamically updated through technologies similar to HTML5. What Apple wants to suppress is dynamic update technology. Considering Flutter's compliance, Google took the initiative to remove Flutter's iOS dynamic ability. The final product generated by Flutter packaging is IPA, which is actually fully compliant with regulations. Even applications developed using Flutter have been recommended by Apple. On the contrary, technologies such as React Native, Weex, H5, etc. are all dynamic solutions that Apple wants to control. Currently, Apple's attitude is mostly against promoting them, but it does not guarantee that they will not be banned. Nevertheless, Apple does not want the native development ecosystem to be dominated by other cross platform technologies, and is constantly promoting the SwiftUI framework in an effort to resist the erosion of native development by cross platform technologies such as Flutter. Flutter will strengthen its promotion pace in the future, allowing more large apps to benefit from Flutter technology. Only when the user group comes up, will its future status and discourse power be higher. Just like now, mini programs generally do not meet Apple's review requirements, but most large apps have already launched mini program functions. At present, it is not fair to say that Apple has directly eliminated mini programs.

Flutter is not the ultimate cross platform choice

From Hybrid App to React Native, and then to Flutter, cross platform technologies are constantly emerging. At present, Flutter is the most popular technology for cross platform development, but I do not believe that Flutter is necessarily the ultimate choice for cross platform development. It has historical limitations, and I can only say that Flutter may be the most promising cross platform technology at present. If you have high requirements for performance fluency, or if you have multiple products that require quick trial and error iterations on multiple platforms, I would recommend trying Flutter.


In the future, there will still be an era where multiple cross platform technologies coexist. Currently, Flutter has not fully achieved the ability to surpass other cross platform technologies, and more suitable solutions can be considered based on team and business characteristics. Students with certain client experience will be able to start Flutter faster. If the team has successfully implemented React Native, the business has not encountered performance bottlenecks, and the team lacks client capabilities, it is recommended to conduct technical research and precipitation first. Do not blindly pursue new technologies. Only when the team has the ability and the business has requirements, it is recommended to consider switching technology stacks.


As we mentioned earlier, the highly anticipated and mysterious Fuchsia system also uses Flutter on its UI framework. Fuchsia is the next generation operating system developed by Google. Fuchsia is a system that adopts a new modular design concept and cross platform framework technology. It can support quick cutting customization and better adapt to future diversified devices, including smartphones, tablets, laptops, routers, smart devices, robots, etc. Fuchsia may become a new cross platform universal operating system.


At this stage, we are beginning to explore and accumulate Flutter technology capabilities, and use Flutter technology applications in our business to strategically take the lead. Choosing Flutter can be described as "attacking, retreating, and defending". Moving forward, Flutter applications can seamlessly migrate to the Fuchsia system in the future, leveraging the power of the Fuchsia system to expand to a wider range of user scenarios; Taking a step back, Flutter technology itself performs very well on Android/iOS platforms compared to other cross platform technologies.


I initially chose Flutter not because it was certain to become the ultimate choice for the future, but because it had the potential to become a different future.

Flutter Outlook: Eventually Moving Towards Multi Terminal Integration

Looking back at the evolution of mobile operating systems, from Symbian feature phones to Android/iOS smartphones, from small screen phones to full screen, notch screens, and waterdrop screens. The evolution of any system ultimately manifests in two stages: input and output. After receiving input signals, the operating system processes them and outputs information to the user. From button based interaction to touch screen interaction, with the transition from Symbian system to Android system, future interaction methods will definitely become more biologically intelligent. The current touch screen interaction can be understood as human tactile input, and in the future, it will move towards more common auditory (speech) input, visual (body posture, expression, etc.) input, and even olfactory (odor changes) input, all of which will be born with new operating systems. The transition of screens from small to large sizes did not trigger a change in operating systems, as technological innovation is characterized by discontinuity, which leads to the emergence of a second curve and new technologies. From mainframes in 1960, to personal laptops in 1990, and now smartphones, devices themselves are becoming smaller and smaller. If future devices undergo non continuous changes, they may no longer require physical hardware and can be output anywhere, like a blank sheet of paper or a wall. At that time, the UI architecture of the operating system will inevitably undergo a completely new transformation.


With the development of technology, the arrival of the 5G era, and the increasing maturity of artificial intelligence, what changes will there be on the end? Will there be a new operating system? Will there be any new changes in the UI architecture of the system? Can Android/iOS platforms coexist with it? Can Fuchsia system equipped with Flutter UI framework shine in the IoT field and new interaction methods, and lead the way again? Is there a super platform for the interconnection of all things?


Technology is constantly evolving and spiraling forward, and the platform itself is also evolving accordingly. In the future, Flutter will develop towards multi terminal integration, supporting more endpoints (including tablets, laptops, smart devices, etc.). As a cross platform UI framework, Flutter adopts a self rendering technology solution, which is a high limit cross platform technology. However, more importantly, Flutter needs to improve its engineering capabilities and build an ecosystem in order to attract more developers to join.

more stories
See more