SlideShare a Scribd company logo
1 of 24
Download to read offline
Jetpack Joyride
How to go full Compose and never look back!
By Tony Kazanjian
So what’s the big deal?
● Declarative UI isn’t
new
● iOS equivalent
● Open source,
disconnected from
Android
● Community enthusiasm
We’re gonna talk about...
● Overview of a fully Compose-based app
○ State in Compose-world
○ Making Composables Reusable
○ Navigation
○ Everything else
■ Project structure
■ Interoperability
■ Compose “goodie bag”
It’s all about that STATE
● Core of Compose
● State<T> and MutableState<T>. Such Simple!
○ Allow reading and setting of value
State in Compose
● Recomposition when a state changes
● Give Composables memory with remember { mutableStateOf() }
Code without saveable
State in Compose
● Across configuration or process death, use
rememberSavable{mutableStateOf()}
How would we reuse a Composable like this?
● Use state hoisting to make
composables stateless
Putting it together
● Composables read/write to
State/MutableState values
● Must remember() mutable state for
recomposition
● Data can be saved across
orientation/process death with
rememberSaveable() or ViewModels
● Conceptualize stateful composables
as top-level with stateless
composables within
Imagine your packages...
● Where are the stateless
composables? Where are the
stateful ones?
In 2020...
NavHostFragment
(NavGraph)
Fragment
Viewmodel
Composable Composable
Activity
In 2021...
implementation "androidx.navigation:navigation-compose:$latestVersion"
Architecture in Compose
Nav Graph
Splash Screen
Main Screen
(Bottom
Navigation)
MainActivity
Home Settings
Navigating in Compose
Navigation in Compose
getViewModel()?! But how???
● Using Architecture Components ViewModel library
androidx.lifecycle:lifecycle-viewmodel-compose:$latestVersion
● viewModel() can take ViewModelProvider.Factory for dependencies
But we wanna inject!
● Using Koin
"io.insert-koin:koin-androidx-compose:$latestVersion
● Using Hilt
○ @HiltViewModel annotated ViewModels work
seamlessly with Compose
Injection
● Using Hilt
○ For NavGraph scoping:
■ "androidx.hilt:hilt-navigation-compose:$latestVersion
So, to recap...
● Navigate directly
between Composables
● Create ViewModels
within Composables
● DI frameworks like
Hilt and Koin lets us
get dependencies into
Compose-scoped
ViewModels
Android Developers
Fragments
Interoperability
● Bottom up approach
○ Migrate smaller UI elements,
like Button or Textview, to a
Composable, followed by their
containers
○ Put ComposeView in XML
● Find the ComposeView in
Activity or Fragment, call
setContent(), do your Compose
thang
Interoperability
● Top down approach
○ Migrating fragments
or view containers
to Composables,
followed by smaller
UI elements
○ Include an Android
View hierarchy in
Compose using
AndroidView
composable
Resources
Jetpack Compose Playground -
https://foso.github.io/Jetpack-Compose-Playground/
Accompanist -
https://google.github.io/accompanist/
Official Compose Samples -
https://github.com/android/compose-samples
Compose Cookbook
https://github.com/Gurupreet/ComposeCookBook
Handling backpresses in Jetpack Compose, Pawel Gadja
https://dev.to/pawegio/handling-back-presses-in-jetpack-compose-50d5
Scoped Recomposition - What happens when state changes? Zach Klippenstein
https://dev.to/zachklipp/scoped-recomposition-jetpack-compose-what-happens-
when-state-changes-l78
Remember {mutableStateOf()} - a cheat sheet, Zach Klippenstein
https://dev.to/zachklipp/remember-mutablestateof-a-cheat-sheet-10ma
Better Handling of States between ViewModel and Composable, Igor Escodro
https://proandroiddev.com/better-handling-states-between-viewmodel-and-comp
osable-7ca14af379cb
Ready for production?
YES (with caveats)
● Still in Beta
● Might not have every component you want
● Canary wonkiness
● How could you fit Compose into your current projects?
● What would make it easier or harder to adopt?
● What excites you about using it? What concerns you?

More Related Content

Similar to How to go full Compose and never look back

Compose Camp Day 3 PPT.pptx.pdf
Compose Camp Day 3 PPT.pptx.pdfCompose Camp Day 3 PPT.pptx.pdf
Compose Camp Day 3 PPT.pptx.pdfMETDSC
 
Modern app development with Jetpack Compose.pptx
Modern app development with Jetpack Compose.pptxModern app development with Jetpack Compose.pptx
Modern app development with Jetpack Compose.pptxMd Shamsul Arafin Mahtab
 
Android jetpack compose | Declarative UI
Android jetpack compose | Declarative UI Android jetpack compose | Declarative UI
Android jetpack compose | Declarative UI Ajinkya Saswade
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Era of declarative ui
Era of declarative uiEra of declarative ui
Era of declarative uiSadman Samee
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React NativeEric Deng
 
Intro to Flutter SDK
Intro to Flutter SDKIntro to Flutter SDK
Intro to Flutter SDKdigitaljoni
 
Jetpack Compose.pptx
Jetpack Compose.pptxJetpack Compose.pptx
Jetpack Compose.pptxGDSCVJTI
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React NativeDamian Zbrożek
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedsparkfabrik
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom componentsJeremy Grancher
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangriaJorge Morales
 
Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Kai Koenig
 
MongoDB Mobile: Bringing the Power of MongoDB to Your Device
MongoDB Mobile: Bringing the Power of MongoDB to Your DeviceMongoDB Mobile: Bringing the Power of MongoDB to Your Device
MongoDB Mobile: Bringing the Power of MongoDB to Your DeviceMatt Lord
 
"Crafting a Third-Party Banking Library with Web Components and React", Germa...
"Crafting a Third-Party Banking Library with Web Components and React", Germa..."Crafting a Third-Party Banking Library with Web Components and React", Germa...
"Crafting a Third-Party Banking Library with Web Components and React", Germa...Fwdays
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to FlutterEason Pai
 
BlackBerry 10 Browser
BlackBerry 10 BrowserBlackBerry 10 Browser
BlackBerry 10 BrowserErik Johnson
 

Similar to How to go full Compose and never look back (20)

Compose Camp Day 3 PPT.pptx.pdf
Compose Camp Day 3 PPT.pptx.pdfCompose Camp Day 3 PPT.pptx.pdf
Compose Camp Day 3 PPT.pptx.pdf
 
Modern app development with Jetpack Compose.pptx
Modern app development with Jetpack Compose.pptxModern app development with Jetpack Compose.pptx
Modern app development with Jetpack Compose.pptx
 
Android jetpack compose | Declarative UI
Android jetpack compose | Declarative UI Android jetpack compose | Declarative UI
Android jetpack compose | Declarative UI
 
Compose in Theory
Compose in TheoryCompose in Theory
Compose in Theory
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Era of declarative ui
Era of declarative uiEra of declarative ui
Era of declarative ui
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
 
Intro to Flutter SDK
Intro to Flutter SDKIntro to Flutter SDK
Intro to Flutter SDK
 
Jetpack Compose.pptx
Jetpack Compose.pptxJetpack Compose.pptx
Jetpack Compose.pptx
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
React Native custom components
React Native custom componentsReact Native custom components
React Native custom components
 
Odo improving the developer experience on OpenShift - hack &amp; sangria
Odo   improving the developer experience on OpenShift - hack &amp; sangriaOdo   improving the developer experience on OpenShift - hack &amp; sangria
Odo improving the developer experience on OpenShift - hack &amp; sangria
 
Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?
 
MongoDB Mobile: Bringing the Power of MongoDB to Your Device
MongoDB Mobile: Bringing the Power of MongoDB to Your DeviceMongoDB Mobile: Bringing the Power of MongoDB to Your Device
MongoDB Mobile: Bringing the Power of MongoDB to Your Device
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
"Crafting a Third-Party Banking Library with Web Components and React", Germa...
"Crafting a Third-Party Banking Library with Web Components and React", Germa..."Crafting a Third-Party Banking Library with Web Components and React", Germa...
"Crafting a Third-Party Banking Library with Web Components and React", Germa...
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to Flutter
 
BlackBerry 10 Browser
BlackBerry 10 BrowserBlackBerry 10 Browser
BlackBerry 10 Browser
 

Recently uploaded

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Recently uploaded (20)

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

How to go full Compose and never look back

  • 1. Jetpack Joyride How to go full Compose and never look back! By Tony Kazanjian
  • 2. So what’s the big deal? ● Declarative UI isn’t new ● iOS equivalent ● Open source, disconnected from Android ● Community enthusiasm
  • 3. We’re gonna talk about... ● Overview of a fully Compose-based app ○ State in Compose-world ○ Making Composables Reusable ○ Navigation ○ Everything else ■ Project structure ■ Interoperability ■ Compose “goodie bag”
  • 4. It’s all about that STATE ● Core of Compose ● State<T> and MutableState<T>. Such Simple! ○ Allow reading and setting of value
  • 5. State in Compose ● Recomposition when a state changes ● Give Composables memory with remember { mutableStateOf() } Code without saveable
  • 6. State in Compose ● Across configuration or process death, use rememberSavable{mutableStateOf()}
  • 7. How would we reuse a Composable like this? ● Use state hoisting to make composables stateless
  • 8. Putting it together ● Composables read/write to State/MutableState values ● Must remember() mutable state for recomposition ● Data can be saved across orientation/process death with rememberSaveable() or ViewModels ● Conceptualize stateful composables as top-level with stateless composables within
  • 9. Imagine your packages... ● Where are the stateless composables? Where are the stateful ones?
  • 12. Architecture in Compose Nav Graph Splash Screen Main Screen (Bottom Navigation) MainActivity Home Settings
  • 15. getViewModel()?! But how??? ● Using Architecture Components ViewModel library androidx.lifecycle:lifecycle-viewmodel-compose:$latestVersion ● viewModel() can take ViewModelProvider.Factory for dependencies
  • 16. But we wanna inject! ● Using Koin "io.insert-koin:koin-androidx-compose:$latestVersion ● Using Hilt ○ @HiltViewModel annotated ViewModels work seamlessly with Compose
  • 17. Injection ● Using Hilt ○ For NavGraph scoping: ■ "androidx.hilt:hilt-navigation-compose:$latestVersion
  • 18. So, to recap... ● Navigate directly between Composables ● Create ViewModels within Composables ● DI frameworks like Hilt and Koin lets us get dependencies into Compose-scoped ViewModels Android Developers Fragments
  • 19. Interoperability ● Bottom up approach ○ Migrate smaller UI elements, like Button or Textview, to a Composable, followed by their containers ○ Put ComposeView in XML ● Find the ComposeView in Activity or Fragment, call setContent(), do your Compose thang
  • 20. Interoperability ● Top down approach ○ Migrating fragments or view containers to Composables, followed by smaller UI elements ○ Include an Android View hierarchy in Compose using AndroidView composable
  • 21. Resources Jetpack Compose Playground - https://foso.github.io/Jetpack-Compose-Playground/ Accompanist - https://google.github.io/accompanist/ Official Compose Samples - https://github.com/android/compose-samples Compose Cookbook https://github.com/Gurupreet/ComposeCookBook
  • 22. Handling backpresses in Jetpack Compose, Pawel Gadja https://dev.to/pawegio/handling-back-presses-in-jetpack-compose-50d5 Scoped Recomposition - What happens when state changes? Zach Klippenstein https://dev.to/zachklipp/scoped-recomposition-jetpack-compose-what-happens- when-state-changes-l78 Remember {mutableStateOf()} - a cheat sheet, Zach Klippenstein https://dev.to/zachklipp/remember-mutablestateof-a-cheat-sheet-10ma Better Handling of States between ViewModel and Composable, Igor Escodro https://proandroiddev.com/better-handling-states-between-viewmodel-and-comp osable-7ca14af379cb
  • 23. Ready for production? YES (with caveats) ● Still in Beta ● Might not have every component you want ● Canary wonkiness
  • 24. ● How could you fit Compose into your current projects? ● What would make it easier or harder to adopt? ● What excites you about using it? What concerns you?