Where Compose Could Go
This week marked the Milestone 1 release of Jetpack Compose for Desktop. I wrote about this back in April, when the first desktop-related artifacts showed up. It is great to see this continuing to move forward. There is no published timetable for a stable release, but it will almost certainly be after Compose itself becomes stable sometime next year.
So, we have Jetpack Compose for Android and now for the desktop. This raises the question: where else might Compose-based UIs turn up?
JetBrains is already at work on a Kotlin/JS edition of Compose. Presumably, this will use a Web canvas Skia wrapper, along the same lines as to how Flutter for Web works (as I understand it). It remains to be seen how practical this will prove to be, in terms of runtime performance and, more importantly, Web app load times.
In principle, one could use Compose on iOS, much as how Flutter does, using a Skia-compatible layer. However, the Flutter team took the time to create their “Cupertino” widget set, in an attempt to mimic a native iOS UI. So, not only would a Compose variant for Kotlin/Native be needed, but a similar widget set would seem to be required. My guess is that a Material Design UI on iOS will not be well-received.
However, since Compose for Desktop (and presumably Compose for Web) are tied into Kotlin/Multiplatform (KMP), a project could elect to use Compose for non-iOS platforms, write a native Swift-based iOS UI, and share KMP modules between those platforms.
Between Compose for Android, Compose for Desktop (targeting Linux), and a possible future Compose for Web, we should have multiple options for writing Chrome OS apps with Compose. It will be interesting to see which of these turns out to be the dominant choice.
We have not heard much about Fuchsia, Google’s next-generation OS. There was a lot of hype about it a couple of years ago, and a lot of “radio silence” since. It is unclear to me whether a Compose for Fuchsia would be practical or not.
If you were trying to create a new platform, to compete with the desktop, mobile, and Web options that we have today, your new platform will need apps. Adopting one of the cross-platform options (React, Flutter, Compose) would help a fair bit in getting developers interested in trying your platform, at least for conventional apps. For gaming-centric platforms, trying to adopt Unity 3D or similar cross-platform game engines would be the likely starting point.
If Google alone were pursing Compose, it would likely be an Android thing and that’s it. The fact that JetBrains has apparently decided to make Compose a focus area means that Compose is going to go further than just Android devices. We will have to see how well that turns out — after all, there is no guarantee that Compose will succeed beyond Android. But it has a lot of promise, and it will be interesting to see how the next 12 months or so play out!