https://kotlinlang.org logo
#compose
Title
# compose
a

Andrei Kovalev

07/10/2022, 4:36 PM
Hi folks, we're happy to share something we've been working on for a while at Bumble – we just recently released the first version of https://github.com/bumble-tech/appyx. It comes with the ability to wrap your composables to components with a lifecycle, and have powerful navigation engines for them with custom states and transitions. Project page and documentation can be found at https://bumble-tech.github.io/appyx/, it demonstrates the above with some nice visual examples. Give it a try and tell us what you think 🙂
👍 4
👀 3
m

Marcin Wisniowski

07/10/2022, 5:24 PM
I wish the project page told me: • Why do I need this? • What are the use cases for it? • How is it better than alternatives (and what are they)? The page is very well done and the examples look quite nice, but all the examples and descriptions are very abstract, making it hard to tell what would I actually use it for and what problem is it solving. I think some real world examples would help a lot. I'm 60% sure it's a navigation and backstack management library which could be an alternative to Compose Navigation, but nowhere does it say so. This may all seem obvious to you as the author, just a bit of feedback from someone who saw this for the first time.
6
a

Andrei Kovalev

07/10/2022, 6:55 PM
Thank you for the feedback, appreciate it. The library does indeed provide our solutions for compose navigation as well as powerful transitions but it's more than that. Please do check out this page as it should hopefully answer your questions.
z

Zoltan Demant

07/11/2022, 3:47 AM
@Andrei Kovalev I love the idea behind this! So much so that Ive built something similar myself, and I couldnt be happier (closest cousin is square/workflow). If youve made any use of workflow (or studied it) Id love to know the pain points youre looking to address with this? The goal seems similar, but approaches differ wildly!
n

Norbi

07/11/2022, 8:26 AM
How does it compare to https://arkivanov.github.io/Decompose/ ? (Otherwise, it sounds interesting, I will take a look, thanks 🙂 )
I've just realized that It is not multiplatform 😞
a

Andrei Kovalev

07/11/2022, 11:50 AM
Both Appyx and Decompose share the same idea of building an app in the form of the components which are presented in the form of a tree. Appyx is the next generation of Badoo/RIBs built from compose-router as a prototype. Both Appyx and Decompose are based on Badoo/RIBs ideas which is derived from Uber/RIBs but there are major differences: 1. Appyx provides powerful abstraction of the RoutingSource 2. Appyx provides API for creating custom transitions 3. Appyx is not multi platform but it has better integration with Android 4. Appyx is agnostic of architectural patterns and has plugins for extracting and keeping extra logic away from Node
🙏 1
a

Arkadii Ivanov

07/11/2022, 1:02 PM
On the other hand: 1. Decompose is able to provide different Router implementations for different routing options - currently there is only stack, but there are no limitations here. 2. Custom Compose transitions are also possible with the animations API (should also work with shared transitions when they land in Compose) 3. Decompose is also well integrated with Android - you need just one line to instantiate the root component/node in an Activity, no things like NodeHost, etc. 4. Decompose is also agnostic to architecture patterns - components/nodes are just normal classes with normal constructors, you can do whatever you want inside 5. In Decompose, Components/Node are normal classes, no need to extend any class from the library - so your components/nodes may extend your own classes if needed, which is otherwise not possible 6. It is also possible to have multiple routers in the same component/node. 7. You can create child components/nodes and manage their lifecycles manually. 8. Additionally, Decompose is not coupled with Jetpack Compose and doesn't depend on it - it's possible to use whatever UI framework you want, and components/nodes do not depend on UI either. There are separate extensions for Compose and Android views integration. And yeah, Decompose is not based on RIBs, but inspired - see the explanation.
🦜 2
🙏 1
44 Views