:tada: We’re happy to announce the Alpha release o...
# announcements
h
🎉 We’re happy to announce the Alpha release of Compose Multiplatform support for iOS! This significant step forward allows you to create shared UIs across Android and iOS using Kotlin and the powerful foundation of Jetpack Compose. 📱 Compose Multiplatform expands upon Jetpack Compose by offering a unified experience across multiple platforms while maintaining the familiar API structure. We invite you to try it out and share your experiences, feedback, and questions here or in our dedicated #C0346LWVBJ4 channel. Learn more in the blog post. Happy coding! 🚀
🦜 19
👍🏾 3
👋 18
👍🏼 1
🔥 1
🙌 6
🙌🏾 2
👍🏻 2
💛 7
❤️ 11
📱 20
🐕 22
🙌🏻 1
K 61
👍 51
K 171
K 21
🎉 54
j
Wow I chosen perfect timing start with compose multiplatform. I thought already was in Alpha. Two things I missing, resource files like images and fonts without cocoapods and UiView (SwiftUi view) equivalent to UiKitView. Other than that I felt everything so far working smooth as could be multi platform. I love how easy mixing native and multiplatform solutions in both directions.
m
On Android, Compose Multiplatform is real Jetpack Compose.
This wording makes it look like on iOS Compose Multiplatform is somehow "fake", as opposed to real Compose on Android.
Yep, hence why I'm worried the wording will give readers the wrong idea.
h
@Sebastian Aigner ^^^
@Marcin Wisniowski that's a valid point. We'll review and update if necessary. Thanks
r
This wording makes it look like on iOS Compose Multiplatform is somehow "fake", as opposed to real Compose on Android. (edited)
It is in a very real sense inferior / fake though. CMP on iOS does not use system-defined components, whereas on Android it does. Perhaps the specific "fake" wording could change but I wouldn't want this important difference to be obscured. I love the sales prop though: get started with CMP and if you ever need to go "full native" you only need to add native iOS UI, without losing any of the investment in the existing codebase. This is very unlike Flutter and React/Native, for example, where you need to start over from scratch on every platform.
Same logic applies to CMP for Web vs Compose HTML.
z
CMP on iOS does not use system-defined components, whereas on Android it does
That’s not true, all the material JC on Android are build from scratch to the material spec, they don’t use any of the system code. They just look (mostly) like system components because they’re designed to the same design spec. The same could probably be done at least partially for the iOS design system, although things like scroll physics would require rewriting lower-level components since that stuff is not currently dynamic, and compose is still missing apis required to implement common iOS design idioms (like translucent components that blur the content behind them).
👍 5
👍🏾 1
☝️ 2
💯 8
☝🏾 1
m
Awesome 🎉 Already trying it and sharing notes there!
m
They just look (mostly) like system components
I imagine at some point it will be hard to argue that whatever is in Compose isn't "system components", when it's clearly the primary Android UI framework.
r
Thank you for the clarification @Zach Klippenstein (he/him) [MOD]. I still think there is a difference: Compose components on Android will be optimized by Google because the entire ecosystem is oriented around them. That de facto makes them "system components". That's not true on iOS and never will be.
z
Fair enough
👍 2
r
I'm excited, I'll create my demo with compose for iOS.
😻 1
h
@rocketraman There’s no word ‘fake’ in the post to change. The word ‘real’ which was used before Jetpack Compose, is in actual fact unnecessary and doesn’t contribute at all to the narrative, nor in any way is it hiding anything by removing it.
👍 3
r
Can't wait to for the stable version , when it will happen this year?
h
@Rizwan We currently can’t share any dates. As soon as we can, we will.
🙌 6
l
It looks like this is using Skia for rendering, which has very poor performance on iOS. Flutter is just moving away from using Skia, because the UIs were lagging. Do you have any plans to implement a different rendering engine?
1
d
When do you project to have
beta
and
stable
versions? I am testing this right away! 😄
b
@Lukasz Ciastko Flutter docs say "you can mitigate shader compilation jank by bundling precompiled shaders with an iOS app". So, maybe Compose for iOS could do the same, when they start optimizing for performance. https://docs.flutter.dev/perf/shader#how-to-use-sksl-warmup
a
@Brian Guertin Flutter moved to Impeller engine and those steps are no longer needed.
k
Even more important i think would be to correctly support the iOS Keyboard inside compose MP because otherwise it's almost unusable. The main reason is that there is no callback from the save button thus you can only close the keyboard by clicking some other action inside the ui.
s
@Kilian insets (that help you position your UI relative to any input methods like the on-screen keyboards) are already in the works – you're looking for "Done" key integration on the keyboard, if I understand you correctly? 🙂
k
@Sebastian Aigner exactly.
b
@Ajmal My point was, there are strategies compose-mp could adopt to address compilation jank while continuing to use Skia, in theory
a
Yeah, that’s doable. Any idea why we can’t use native components like react native on iOS?
b
@Ajmal You can use native components, there's a @Composable
UIKitView
. JetBrains says both UIKit and SwiftUI will be supported, I believe.
l
@Nikita Lipsky Can you comment on @Lukasz Ciastko, @Brian Guertin, and @Ajmal messages regarding Skia performance, bundled precompiled shaders, and Impeller?
l
@Brian Guertin Flutter tried implementing some strategies to address compilation jank, and, in the end, they decided to write a new rendering engine - that’s why I am a bit concerned about Compose using Skia. We might be going through the same cycle Flutter did. On the other hand, I also understand Skia is probably the best solution out there right now.
n
We decided to stay with Skia for stable release though bundling precompiled shaders is planned.
401 Views