Jetpack Compose — Next Gen Kotlin UI Toolkit for Android
Lead Product Engineer
Ragunath Jawahar is a Lead Product Engineer working with Obvious, a prominent design studio that has worked with several unicorn startups in India. He specialises in mobile app architectures, refactoring and test-driven development. He has a knack for building awesome teams and believes in “you are only as good as the team you build”. You’ll find him constantly pushing himself to explore new programming paradigms, workflows, tools and techniques. He is allergic to complexity and loves building tools and libraries that make life easier for him and fellow developers.
Reactive applications are the norm on the web. Android applications have begun increasingly reactive using architectures like MVVM, MVI, Redux, etc., The reactive nature of these applications are due to the underlying architecture rather than the UI framework itself. This has resulted in some big wins like testability and strong separation of concerns while trading-off attributes like time-to-market and quickly on-boarding new developers to an existing project. The API surface of the Android UI framework has been the same for the past decade. This was largely because of the limitations imposed by old tooling and the programming language. With Kotlin bringing in DSLs, functional programming and compiler plugin capabilities - the members of the Android UI Toolkit team have rolled up their sleeves and are taking a new direction. The new UI toolkit is backed by principles and techniques like - one-way data flow, function composition, declarative programming, optimistic concurrency control, isolation of side-effects, etc., This shift in API design also demands a shift in thinking about the app architecture and building UIs. In this talk, we’ll see how Jetpack Compose is radically different from the existing Android UI framework and how it adopts several ideas and programming patterns from web frameworks like React, MobX, and Vue.js. We will also see examples of these patterns and use them to build Android apps.