In this post, we will talk about the new features that Flutter version 4 will bring, we will talk about the new updates that Flutter version 4 will introduce such as the incorporation of Material Design 3, new components, multi-window support, and better performance.
Multi-window support on desktop
One of the highly anticipated features of version 4 of the famous cross-platform app development framework is finally being able to manage multiple windows for desktop rather than just one, moving ever closer to a true desktop application.
The Handover of Desktop to Canonical by Google
The technical landscape of Flutter has experienced a relevant strategic move: Canonical, the company behind Ubuntu, will assume the development and control of Flutter Desktop. Although Canonical is a benchmark in the Linux ecosystem, this agreement with Google delegates to them the evolution of the desktop branch not only for Linux, but also for Windows and macOS, taking advantage of the fact that Flutter's native architecture allows compiling for all three operating systems from a single codebase.
With this move, the integration of long-demanded features in desktop development is projected, such as robust support for Tooltip-type components, advanced dialog boxes and, critically, the ability to manage multiple independent windows.
1. Uncertainty in the Community and Competition from Kotlin Multiplatform
For a sector of the developer community, the fact that Google delegates one of the variants of the technology generates doubts about the framework's pace of evolution. The release of Flutter 4 and the modernization of its desktop version have followed a linear process, while competing solutions like Kotlin Multiplatform (KMP) gain traction in the cross-platform development market (mobile, web, desktop, and backend).
To this is added the evolution of Native Android with Jetpack Compose. The syntax of Compose shares declarative and reactive principles very similar to those of Flutter:
- Declarative Structure: The interface is built through functions called Composable objects.
- Reactivity: When modifying the state of an underlying variable, the framework automatically repaints the user interface components in an optimal way.
- Similarity of Components: Elements such as columns, rows, and Floating Action Buttons replicate the compositional philosophy of Flutter Widgets, using modifiers instead of rigid properties to define behaviors like margins, padding, and maximum dimensions.
// Ejemplo conceptual de UI Declarativa en Jetpack Compose (Android Nativo)
@Composable
fun CounterComponent() {
var count by remember { mutableStateOf(0) }
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = "Clicks: $count")
Button(onClick = { count++ }) {
Text("Incrementar")
}
}
}The coexistence of similar tools under Google's catalog usually reopens the debate about the duplication of technologies within the same company. However, instead of a transition toward deprecation, the handover of the Desktop version to Canonical suggests that Google seeks to concentrate its engineering resources on the core of Flutter: mobile development (iOS and Android), where the technology maintains a leadership position.
2. The Dart Factor as a Single-Purpose Language
One of the structural challenges Flutter faces lies in its exclusive dependency on Dart. Unlike JavaScript, whose ecosystem ranges from native web development to massive frameworks like React, Vue, and Svelte; or Python, consolidated in backend (Django, FastAPI), automation, and Artificial Intelligence, Dart is perceived in the industry almost exclusively as the execution engine for Flutter.
Although traditional languages like PHP continue to dominate broad sectors of the web market thanks to mature ecosystems like Laravel, Dart has not achieved massive adoption outside the limits of cross-platform mobile development. However, the technical maturity achieved by Flutter and the volume of global software production supporting it rule out a disappearance in the short or medium term; the technology is in a stage of consolidation and architectural optimization.
3. Current Status of Desktop and Web Applications in Flutter
When evaluating Flutter's architecture outside the mobile environment, technical results vary according to the deployment platform:
Flutter Web
Compiling for web environments presents limitations in performance and SEO when compared to the current industry standard (Single Page Applications or SSR with modern frameworks). The loading of the graphic engine can be excessive for conventional websites, restricting its utility mainly to progressive web applications (PWAs) or closed administrative panels.
Flutter Desktop vs. the Web Ecosystem
In today's computing landscape, traditional web applications have progressively absorbed the functions that previously required native desktop software, offering equivalent performance and features directly from the browser. Flutter Desktop has faced critical limitations, such as the lack of native support for multi-window environments, a key technical advantage that justifies desktop software development over a web application. With Canonical's intervention, the goal is to bridge this architectural gap.
Material Design 3
Version 4 brings us the full use of Material Design in its version 3 along with all components updated to this version.
Automatic Design Detection
Another great new feature that should have been included since the first version is that Flutter will automatically adapt the Material Design layout to Cupertino if the app runs on iOS. Currently, when creating our wonderful app on Android, we must adapt the design in parallel using the Cupertino style, which is a lot of work.
New Rendering Engine
Another aspect that cannot be missed is that now we will have more efficient and faster applications, by bringing a new rendering engine that will provide smoother animations.
Improved Accessibility
In version 4 of Flutter, an improvement in accessibility features is expected, including support for Windows 11 accessibility, which will allow apps to be friendlier for people with disabilities.
Segmented Button
The Segmented Button is a new component that will facilitate selection between segmented options. This will be especially useful for creating interfaces that require navigation or filtering, such as calendars or search filters.
Redesign of Bottom App Bar and Drawer
There are many components that were redesigned or will have changes with Material Design 3, some of them are the BottomAppBar and the Drawer which have been redesigned according to Material Design 3 specifications.