Cross-platform app toolkit Flutter lead Tim Sneath aims Dart at an ambient computing future
'We've made a deliberate attempt to build something that can share source code across all these environments'
Interview Google's cross-platform app development framework Flutter marked another quarterly release on Thursday with the debut of Flutter 1.22. The Register had the opportunity to speak with Tim Sneath, product lead at Flutter, about the project's state and ambitions.
"This is a decent sized release, with support for iOS 14, Android 11, and then other things so we know that existing Dart developers and Flutter developers will appreciate it," said Sneath. "For us, this is just a continuation towards our broader set of themes for Flutter, which is delivering this fast, beautiful framework for apps that lets developers be productive with building for iOS and Android from a single codebase. And now increasingly as we mature our work also the web, Windows, macOS, and Linux."
The update brings with it various other improvements beyond support for the latest mobile operating system releases, including a preview of state restoration for Android, new Material buttons, international and localization support that's compatible with hot reloads, and a revised Navigator class. It also adds the stable release of Platform Views, for hosting native Android and iOS UI components in a Flutter app.
Flutter reached its 1.0 milestone in December 2018, and has managed to become rather popular despite developer skepticism about cross-platform frameworks, which include general purpose tools like Xamarin, React Native, Ionic, and Electron, as well as company-specific frameworks like Uber's RIBs.
A decade ago, Adobe Flash would have topped this list, but that was when Steve Jobs, then CEO of Apple, banned Flash apps from iOS devices because of security and performance issues, not to mention his desire not to lose control of the iOS platform.
Cross-platform development entails trade-offs. Developers can maintain a single codebase across multiple operating systems, which can save a significant amount of developer labor. At the same time, the resulting apps tend to be slower and less well-designed to counterparts crafted in native platform code. And they may also lack access to recently released native platform APIs, because those implementing those APIs generally can't get started until the native APIs have been made available.
For Flutter, that delay has been fairly small: Apple released iOS 14 two weeks ago and Google made Android 11 available three weeks ago. But the process of bringing cross-platform kits to parity with native APIs isn't always so quick.
"Typically, there's just been a ton of compromise when you say cross platform," said Sneath. "It's associated with, you know, the lowest common denominator kinds of challenges. We've made a deliberate attempt to build something that can share source code across all these environments, but can still be tailored for the needs of every platform that a developer or designer wants to reach."
Microsoft's OS joins macOS and Linux at the Flutter party, but guess which one performs best? Hint: It's not WindowsREAD MORE
Flutter has its fans and detractors – developers are an opinionated lot – but perhaps more telling are its numbers. According to Google there are 100,000 Flutter apps in Google Play, and 10,000 more arrive every month.
One of the major concerns among those not entirely sold on the idea is Google's reputation for losing interest in its products and services and unceremoniously killing them off. Asked about this, Sneath acknowledged that's an issue, though he suggested it's not entirely fair to assume that Google is a serial product killer.
"It's a bad reputation, if that's a fair reputation," he said. "But I think Google bets on success. We bet on projects that are delivering customer value. We bet on projects that are growing and, like any company, you have to look at the projects you're working on and figure out where the market is going and follow customers' needs. And on that basis, Flutter and Dart are here for many, many years to come."
Sneath said the number of apps built with Flutter has grown 4x to 5x over the past year. And he said that the last time the company asked developers about their experience with Flutter, 94 per cent said they were satisfied. That shows customers are getting what they need out of it, he said.
Flutter relies on the Dart programming language, which its co-creator Lars Bak described as "a class-based optionally typed programming language for building web applications."
Introduced in 2011, Dart hasn't enjoyed the popularity of Google's Go programming language, at least outside of Google where 20 different teams use it. But it has risen in the ranks recently among the various indexes that track such things. Sneath pointed out that a recent GitHub survey reported Dart usage growing at a rate of 532 per cent, faster than any other programming language.
We asked whether the Flutter team has contemplated supporting any other programming language as a first-class citizen, as Android did not so long ago with Kotlin, but Sneath seems to be fairly smitten with Dart.
"Dart is actually our secret sauce," he said. "I think it's probably the hidden secret of Flutter's success in many ways. And that's because it has this unique technical envelope. I don't think there's any other language that could provide quite what it does."
Dart is actually our secret sauce. I think it's probably the hidden secret of Flutter's success in many ways
"When you're developing, you have the benefits of things like stateful hot reload, which means you can make changes to your code and hit F5 and see those results immediately in the running app without resetting it, without that classic edit-compile-deploy cycle," he explained.
Asked about whether Flutter will endorse any particular technology to help with game development – currently rather lacking apart from a few independent projects like Flame – Sneath declined to provide details while acknowledging it's an area of interest.
"It's a great question," he said. "I didn't have anything to announce right now. But what Flutter brings is gaming-like performance to apps and so we expect to see those boundaries blur a little bit. We've seen a lot of casual games written with Flutter. And, of course, you know, to build great games there's a whole ecosystem of other tools and things that support that. So it's not just a matter of us declaring support for games per se. But we're interested in some of the experiments we see from others out there."
Sneath pointed to a design tool called Rive as an example. He said Flutter has the architecture to support great games, it's just not currently the Flutter team's primary area of focus at the moment.
Asked how enterprises have taken to Flutter, given that corporate app shops often seek out cross-platform solutions, Sneath said while Flutter isn't uniquely focused on enterprise customers, it's clearly attractive among businesses.
Google's Fuchsia OS Flutters into view: We're just trying out some new concepts, claims execREAD MORE
"We see companies that want to be able to deliver consistency across platforms," he said. "They want their brands to be executed across both platforms. They want to be able to release simultaneously across platforms. They don't want the risk of one [native platform] team struggling to keep up with another team [working on a different platform]. So we are seeing a lot of enterprises picking up Flutter and doing cool things with it."
We inquired whether there's anything further to say about Flutter's relationship with Fuchsia, Google's ongoing operating system exploration, but Sneath had nothing to add beyond what's already known – that Flutter apps should run on Fuchsia devices, if and when those see the light of day.
But Sneath did want to emphasize that Flutter shouldn't be seen as a mobile app development framework. It's intended as a tool for developing apps for a variety of hardware.
"We see Flutter as this very pervasive platform on all the ambient computing future for Google that extends beyond any individual device," he said, pointing to smart displays, televisions, Chromebooks, and the like. ®