Flutter, PWAs, and Xamarin, Oh My! (Premium)

Google Flutter helps developers more easily create mobile apps that run on both Android and iOS. So how does this release impact PWAs?

… is a question I’ve received from several readers. And usually in the form of an accusation. Like, “but you said that PWAs were the future!”

Relax, guys. 🙂 PWAs—Progressive Web Apps—are the future. And while it’s fair to say that Flutter “competes” in some ways with PWAs, in the sense that both are a means to a cross-platform end, these technologies are also, in some ways, unrelated.

The developers in the audience may be rolling their eyes by now. That’s fine. But this discussion is for the non-developer, for the most part, and it’s a great example of how my developer background really pays off. I’ve long understood that knowing what’s going on in the developer space is a key way for even non-developers to best understand any software platform.

For example, if you want to know what’s really new in the latest release of Windows 10, iOS, Android, or whatever, you need to read up on the APIs and the developer documentation that the platform makers provide. Think about it: Build, Google IO, and WWDC, which are all developer conferences, and each is literally the single biggest event that each of those companies each year.

And here’s a very recent example of this phenomenon: Last week, we learned that Store apps in Windows 10 version 1803 will finally support multi-instancing, meaning the ability to have multiple copies of the same app running at the same time. That information came via something that most non-developers would assume is boring: A live developer broadcast called the Windows Community Standup featuring Microsoft’s Kevin Gallo and Andrew Whitechapel. I watched it live because, again, developer background. (A previous episode of the Windows Community Standup has great info about Always Connected PCs. See how this works?)

OK, so what about Flutter and PWAs?

As Mehedi reported this week, Google has announced the first public beta of Flutter, which it describes as a “new mobile UI framework that helps developers craft high-quality native interfaces for both iOS and Android.”

The basic idea here is very common in the developer space: Developers wish to reuse as much code as possible, and ideally they could create a single app that would run anywhere. That kind of nerdvana, however, is elusive, and the history of personal computing is littered with various high-profile defeats, including most notably, Java and it’s “write once, run anywhere” mantra. Which was more ideal than reality.

Flutter, more specifically, is an attempt to let developers create truly native apps that run on the only mobile platforms that matter, Android and iOS. So “write once, run on both Android and iOS.” Which is the same as “anywhere” when it comes to mobile.

What Flutter requires of developers is learning yet another programming language (called Dart, which is itself yet another C-like language) and a new UI framework that ensures that the created apps look and work correctly on each platform.

There’s a Flutter editor, but Flutter also works within established developer tools like Android Studio (which is used to create Android apps) and Visual Studio Code, Microsoft’s extensible developer editor. (“Full” Visual Studio is a more powerful, full-featured IDE, or integrated development environment that can be used to target a well-spring of application types, services, and more.) This means there’s one less thing to learn, since you can use it with the tools you already know.

Flutter is the real deal, and Google has multiple high-quality examples of real-world apps for you to sample. These include Hamilton: The Musical, Google AdWords, and Flutter Gallery, which demonstrates what’s possible with this technology.

And for you tech enthusiasts in the audience, here’s an enticing bit to consider: Flutter is core to Fuschia, the secretive new OS that Google is building. Any app created with Flutter will also run on Fuschia, Google says. And this suggests that Google is positioning Flutter as a possible model for native app development of the future, when and if it shifts from Android and Chrome OS to Fuschia.

So what about PWAs? How does Flutter compete—or compare—with PWAs?

On the surface, both are similar, a way to create a single app that runs on multiple platforms. But that’s where the similarity ends.s

Flutter apps are truly native. PWAs are “nativish” web apps that provide access to native platform features like offline use, push notifications, and the like. And platform makers can (and do) extend PWA to support features that are native, and unique, to their platforms. PWAs are supported on Android today, and they will be supported in Windows 10 version 1803 soon. PWA support is also coming to iOS/macOS/Safari, and these apps are, or soon will be, available via any mobile web browser. So if jump forward in time, say, 6 months, PWA support will be much broader than that for Flutter.

But the big difference is that Flutter and PWAs target different kinds of developers.

Flutter is aimed at native mobile app developers who, to date, have had to learn multiple programming languages, APIs, and frameworks in order to target the most popular platforms. Developing with Xcode using Objective C/Swift on a Mac is a far cry from using Android Studio with Java/Kotlin on a PC or Mac. So Flutter is a way for mobile developers to create a single code base, a single project, a single app, that works on both Android and iOS.

PWAs are aimed at web developers. These folks can work on virtually any platform—Windows, Mac, Linux—and typically use JavaScript, HTML, and CSS in standalone editors like Visual Studio Code, Sublime, or Atom (and many others) with whatever web server of their choice (Google Chrome has one built-in). PWAs are a modern version of something the web developer community has been working on for a while: A way to bring native—“nativish”—platform features to the web. Most notably with something called React Native, which lets developers use JavaScript and the React user interface libraries to create mobile apps.

PWAs as originally envisioned were, of course, for the web: Google invented this technology to target Android. With Microsoft adopting the technology, however, PWAs are now coming to the desktop too, with Windows 10 version 1803. And Google is following them by adding PWA support to Chrome OS this year too.

The reasons I feel that PWAs are the future are many-fold. These apps target all major personal computing platforms, and not just mobile. The technology itself is far more approachable, making it ideal for beginners and students, but also for any developer coming from a different space. And with support from all the major platform makers, PWAs have a bright future: Google, Microsoft, and (we think) Apple all fully support this technology. It’s not going anywhere.

When Google first announced the Flutter beta, I flippantly tweeted the following:

Google just kicked Xamarin in the nuts.

This set off the usual round of stupidity that one sees on Twitter, with some pedantically arguing that Flutter and Xamarin don’t directly compete with each. This is worth exploring further too.

As you may know, Microsoft’s Xamarin technology is a way for Microsoft-focused developers (e.g. those who came of age on the “Microsoft stack,” meaning .NET and C#, for the most part) to use their skills to create mobile apps that run on Android and iOS. This explains my tweet, in a way. But it also provides fire for those who disagreed with what I meant mostly as a joke: Flutter targets web developers while Xamarin targets Microsoft stack developers.

They’re right. But when you look at the addressable market more broadly, and the fact that both Flutter and Xamarin are thematically identical (“write once, run on Android and iOS”), my point is made: Flutter targets a much bigger audience than does Xamarin. Much bigger. And when it comes to developer allegiances, I think it’s fair to say that most developers targeting mobile would be far more likely to trust Google than Microsoft. Given history. And given the reality of the market.

But as far as all of these technologies go, yes, they do in many ways “compete” with each other. Because each targets developers, each provides some form of cross-platform “write anywhere” functionality. But they are also, if not truly complementary, at least isolated from each other in some ways, too. Few developers who are looking to build a mobile app would actually consider Flutter, Xamarin, and PWAs side-by-side and then choose one.

More specifically, I see Flutter as a solution for today’s mobile app developers, something that will make their lives easier right now. I see PWAs as a solution for today’s web app developers, and something that will help them broaden their reach by taking on native platform features over time. In other words, I see PWAs as the future because PWAs can do it all.

Which, when you think about it, is what I’ve been saying all along.

 

Gain unlimited access to Premium articles.

With technology shaping our everyday lives, how could we not dig deeper?

Thurrott Premium delivers an honest and thorough perspective about the technologies we use and rely on everyday. Discover deeper content as a Premium member.

Tagged with

Share post

Thurrott