JetpackCompose.app
@jetpackcomposeapp.bsky.social
The #1 destination for all things Jetpack Compose. Keeping up with Android Development is hard. We make it easy, entertaining and rewarding.
World class Android Developers read our newsletter to remain sharp 👉🏻 https://www.jetpackcompose.app/newsletter
World class Android Developers read our newsletter to remain sharp 👉🏻 https://www.jetpackcompose.app/newsletter
The August '25 Compose release dropped 2D scrolling, better prefetching, and autoSize text.
But the coolest feature? A modifier that tracks visibility WITHOUT killing your performance.
Thread on onLayoutRectChanged 🧵
#AndroidDev #JetpackCompose
But the coolest feature? A modifier that tracks visibility WITHOUT killing your performance.
Thread on onLayoutRectChanged 🧵
#AndroidDev #JetpackCompose
November 9, 2025 at 6:49 PM
The August '25 Compose release dropped 2D scrolling, better prefetching, and autoSize text.
But the coolest feature? A modifier that tracks visibility WITHOUT killing your performance.
Thread on onLayoutRectChanged 🧵
#AndroidDev #JetpackCompose
But the coolest feature? A modifier that tracks visibility WITHOUT killing your performance.
Thread on onLayoutRectChanged 🧵
#AndroidDev #JetpackCompose
We only scratched the surface with the previous post on Metro. @jingibus.bsky.social peels the onion and helps you understand what it takes to ship a project of this scale
This is fantastic and @zacsweers.dev deserves all the praise but it also is gonna give you a false idea of what Z is like as a maintainer and author, what the project is like, and how you might achieve something like this yourself
Hot take: Dependency Injection on Android just got a huge upgrade!!
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
November 8, 2025 at 4:59 PM
We only scratched the surface with the previous post on Metro. @jingibus.bsky.social peels the onion and helps you understand what it takes to ship a project of this scale
🤯 Mind-blowing fact: Both OpenAI's and Anthropic's official JAVA SDKs are written entirely in Kotlin.
Let that sink in.
Companies building SDKs FOR Java developers chose Kotlin as the implementation language.
The Kotlin takeover is real 🫡
#AndroidDev
Let that sink in.
Companies building SDKs FOR Java developers chose Kotlin as the implementation language.
The Kotlin takeover is real 🫡
#AndroidDev
November 8, 2025 at 4:36 PM
🤯 Mind-blowing fact: Both OpenAI's and Anthropic's official JAVA SDKs are written entirely in Kotlin.
Let that sink in.
Companies building SDKs FOR Java developers chose Kotlin as the implementation language.
The Kotlin takeover is real 🫡
#AndroidDev
Let that sink in.
Companies building SDKs FOR Java developers chose Kotlin as the implementation language.
The Kotlin takeover is real 🫡
#AndroidDev
Hot take: Dependency Injection on Android just got a huge upgrade!!
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
November 7, 2025 at 8:45 PM
Hot take: Dependency Injection on Android just got a huge upgrade!!
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
November 7, 2025 at 7:13 PM
Hot take: Dependency Injection on Android just got a huge upgrade!!
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
Square just moved Anvil to maintenance mode to adopt Metro - a DI framework built by ONE PERSON that's 47-56% faster than Dagger+Anvil.
This is what "individual developers changing ecosystems" looks like 🧵
#AndroidDev
ViewModel scoping in Compose has been broken from day one.
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
November 5, 2025 at 5:39 PM
ViewModel scoping in Compose has been broken from day one.
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
ViewModel scoping in Compose has been broken from day one.
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
November 5, 2025 at 5:30 PM
ViewModel scoping in Compose has been broken from day one.
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
You can only scope to Activity or navigation graphs, but Compose wants fine-grained components.
Enter Resaca - the library that fixes this beautiful mess 🧵
#AndroidDev #JetpackCompose
🚨 ANSWER TIME 🚨
The bug: LazyColumn prefetches items OUTSIDE the viewport. So LaunchedEffect fires when items are COMPOSED, not when they're VISIBLE.
With the new August '25 prefetching APIs, you'll log impressions for things users never see!
#AndroidDev #JetpackCompose
The bug: LazyColumn prefetches items OUTSIDE the viewport. So LaunchedEffect fires when items are COMPOSED, not when they're VISIBLE.
With the new August '25 prefetching APIs, you'll log impressions for things users never see!
#AndroidDev #JetpackCompose
🐛 SPOT THE BUG 🐛
This code logs impressions for list items. But with Compose's new prefetching APIs, there's a subtle bug lurking.
Can you spot it? Drop your answer below 👇
#AndroidDev #JetpackCompose
This code logs impressions for list items. But with Compose's new prefetching APIs, there's a subtle bug lurking.
Can you spot it? Drop your answer below 👇
#AndroidDev #JetpackCompose
November 4, 2025 at 10:24 PM
🚨 ANSWER TIME 🚨
The bug: LazyColumn prefetches items OUTSIDE the viewport. So LaunchedEffect fires when items are COMPOSED, not when they're VISIBLE.
With the new August '25 prefetching APIs, you'll log impressions for things users never see!
#AndroidDev #JetpackCompose
The bug: LazyColumn prefetches items OUTSIDE the viewport. So LaunchedEffect fires when items are COMPOSED, not when they're VISIBLE.
With the new August '25 prefetching APIs, you'll log impressions for things users never see!
#AndroidDev #JetpackCompose
🐛 SPOT THE BUG 🐛
This code logs impressions for list items. But with Compose's new prefetching APIs, there's a subtle bug lurking.
Can you spot it? Drop your answer below 👇
#AndroidDev #JetpackCompose
This code logs impressions for list items. But with Compose's new prefetching APIs, there's a subtle bug lurking.
Can you spot it? Drop your answer below 👇
#AndroidDev #JetpackCompose
November 4, 2025 at 4:45 PM
🐛 SPOT THE BUG 🐛
This code logs impressions for list items. But with Compose's new prefetching APIs, there's a subtle bug lurking.
Can you spot it? Drop your answer below 👇
#AndroidDev #JetpackCompose
This code logs impressions for list items. But with Compose's new prefetching APIs, there's a subtle bug lurking.
Can you spot it? Drop your answer below 👇
#AndroidDev #JetpackCompose
99% of Android devs know about graphicsLayer and offset lambda Modifiers for performant animations.
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
November 3, 2025 at 8:48 PM
99% of Android devs know about graphicsLayer and offset lambda Modifiers for performant animations.
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
99% of Android devs know about graphicsLayer and offset lambda Modifiers for performant animations.
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
November 3, 2025 at 5:23 PM
99% of Android devs know about graphicsLayer and offset lambda Modifiers for performant animations.
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
But I'm convinced most don't know the performant alternative for background().
Thread on a Compose optimization that'll make your animations buttery smooth 🧈👇
Hot take: If you figure out a way to improve your app's build times, you're basically working in Climate Tech now 😅
Every minute shaved off = less CO2, cooler laptops, and happier devs.
We don't make the rules 🌍
Every minute shaved off = less CO2, cooler laptops, and happier devs.
We don't make the rules 🌍
November 2, 2025 at 5:14 PM
Hot take: If you figure out a way to improve your app's build times, you're basically working in Climate Tech now 😅
Every minute shaved off = less CO2, cooler laptops, and happier devs.
We don't make the rules 🌍
Every minute shaved off = less CO2, cooler laptops, and happier devs.
We don't make the rules 🌍
Your easiest app size win of 2025:
Add ONE line to gradle.properties and watch your APK shrink by 50%+
That's it. Google's new optimized resource shrinking finally unifies code and resource optimization. R8 can now trace references across the DEX-resource boundary.
Add ONE line to gradle.properties and watch your APK shrink by 50%+
That's it. Google's new optimized resource shrinking finally unifies code and resource optimization. R8 can now trace references across the DEX-resource boundary.
November 1, 2025 at 3:59 PM
Your easiest app size win of 2025:
Add ONE line to gradle.properties and watch your APK shrink by 50%+
That's it. Google's new optimized resource shrinking finally unifies code and resource optimization. R8 can now trace references across the DEX-resource boundary.
Add ONE line to gradle.properties and watch your APK shrink by 50%+
That's it. Google's new optimized resource shrinking finally unifies code and resource optimization. R8 can now trace references across the DEX-resource boundary.
The latest issue of Dispatch went out yesterday. If you are already a subscriber, you will find it sitting in your inbox. Give it a read, some good nuggets in there.
If you haven't subscribed yet, you know what to do - www.jetpackcompose.app/newsletter
#AndroidDev
If you haven't subscribed yet, you know what to do - www.jetpackcompose.app/newsletter
#AndroidDev
October 31, 2025 at 5:09 PM
The latest issue of Dispatch went out yesterday. If you are already a subscriber, you will find it sitting in your inbox. Give it a read, some good nuggets in there.
If you haven't subscribed yet, you know what to do - www.jetpackcompose.app/newsletter
#AndroidDev
If you haven't subscribed yet, you know what to do - www.jetpackcompose.app/newsletter
#AndroidDev
Reposted by JetpackCompose.app
I love reading Dispatch to keep up with the Android ecosystem. Check it out - www.jetpackcompose.app/newsletter
JetpackCompose.app's Dispatch: The Android & Jetpack Compose Newsletter for Modern Developers
Dispatch makes staying updated with Android Development easy, entertaining and rewarding. Join thousands of Android developers who get smarter about Jetpack Compose every week.
www.jetpackcompose.app
September 13, 2025 at 12:37 PM
I love reading Dispatch to keep up with the Android ecosystem. Check it out - www.jetpackcompose.app/newsletter
Reposted by JetpackCompose.app
The next issue of Dispatch goes out tomorrow! There's a bunch of interesting content, but the one that you don't want to miss is a behind-the-scenes look at the team behind Firebender that many use on the daily!!
If you'd like it in your inbox 👉🏻 www.jetpackcompose.app/newsletter
#AndroidDev
If you'd like it in your inbox 👉🏻 www.jetpackcompose.app/newsletter
#AndroidDev
September 12, 2025 at 6:51 AM
The next issue of Dispatch goes out tomorrow! There's a bunch of interesting content, but the one that you don't want to miss is a behind-the-scenes look at the team behind Firebender that many use on the daily!!
If you'd like it in your inbox 👉🏻 www.jetpackcompose.app/newsletter
#AndroidDev
If you'd like it in your inbox 👉🏻 www.jetpackcompose.app/newsletter
#AndroidDev
Reposted by JetpackCompose.app
Want to give a quick shoutout out all the supporters of @jetpackcomposeapp.bsky.social over the years. Open-source and free-only projects can often be thankless but your kindness has given me the extra boost to keep it going 🙏🏻
www.jetpackcompose.app/supporters
#AndroidDev
www.jetpackcompose.app/supporters
#AndroidDev
September 10, 2025 at 4:47 PM
Want to give a quick shoutout out all the supporters of @jetpackcomposeapp.bsky.social over the years. Open-source and free-only projects can often be thankless but your kindness has given me the extra boost to keep it going 🙏🏻
www.jetpackcompose.app/supporters
#AndroidDev
www.jetpackcompose.app/supporters
#AndroidDev
If you want to know what your favorite @buffer.com engineer earns, you don’t need to guess (or stalk LinkedIn)
I recently learnt that Buffer publishes all employee (yes, every single employee!!) salaries in a public spreadsheet 🤯
We are not joking, take a look...
#AndroidDev
I recently learnt that Buffer publishes all employee (yes, every single employee!!) salaries in a public spreadsheet 🤯
We are not joking, take a look...
#AndroidDev
September 7, 2025 at 2:49 PM
If you want to know what your favorite @buffer.com engineer earns, you don’t need to guess (or stalk LinkedIn)
I recently learnt that Buffer publishes all employee (yes, every single employee!!) salaries in a public spreadsheet 🤯
We are not joking, take a look...
#AndroidDev
I recently learnt that Buffer publishes all employee (yes, every single employee!!) salaries in a public spreadsheet 🤯
We are not joking, take a look...
#AndroidDev
🆔 Ever needed sortable unique identifiers? We got you covered!
We all use UUIDs (Universally Unique Identifiers) constantly, right? They're great for generating unique IDs for database records, tracking requests, whatever
But they have one annoying limitation..... 🙄
#AndroidDev
We all use UUIDs (Universally Unique Identifiers) constantly, right? They're great for generating unique IDs for database records, tracking requests, whatever
But they have one annoying limitation..... 🙄
#AndroidDev
August 28, 2025 at 6:13 PM
🆔 Ever needed sortable unique identifiers? We got you covered!
We all use UUIDs (Universally Unique Identifiers) constantly, right? They're great for generating unique IDs for database records, tracking requests, whatever
But they have one annoying limitation..... 🙄
#AndroidDev
We all use UUIDs (Universally Unique Identifiers) constantly, right? They're great for generating unique IDs for database records, tracking requests, whatever
But they have one annoying limitation..... 🙄
#AndroidDev
⚠️ You’re tracking list item impressions with `LaunchedEffect`?
August ’25 Compose may be skewing your analytics—invisible items can now precompose.
Here's how to fix it. 🧵
#AndroidDev
August ’25 Compose may be skewing your analytics—invisible items can now precompose.
Here's how to fix it. 🧵
#AndroidDev
August 26, 2025 at 4:46 PM
⚠️ You’re tracking list item impressions with `LaunchedEffect`?
August ’25 Compose may be skewing your analytics—invisible items can now precompose.
Here's how to fix it. 🧵
#AndroidDev
August ’25 Compose may be skewing your analytics—invisible items can now precompose.
Here's how to fix it. 🧵
#AndroidDev
Today's question: How do you exclude Composable Previews from Code Coverage Reports
🙋🏻♂️ Raise your hand if you've ever looked at your code coverage report and thought, "How do I have 800 lines of untested code in my UI module?" Only to realize it's all those Preview functions
#AndroidDev
🙋🏻♂️ Raise your hand if you've ever looked at your code coverage report and thought, "How do I have 800 lines of untested code in my UI module?" Only to realize it's all those Preview functions
#AndroidDev
August 26, 2025 at 3:06 AM
Today's question: How do you exclude Composable Previews from Code Coverage Reports
🙋🏻♂️ Raise your hand if you've ever looked at your code coverage report and thought, "How do I have 800 lines of untested code in my UI module?" Only to realize it's all those Preview functions
#AndroidDev
🙋🏻♂️ Raise your hand if you've ever looked at your code coverage report and thought, "How do I have 800 lines of untested code in my UI module?" Only to realize it's all those Preview functions
#AndroidDev
🚨 Amazon's " App Platform " A New Contender for Multiplatform Architecture
It's not every day that Amazon open-sources a framework.
Meet App Platform: a lightweight, opinionated framework for state and memory management across Kotlin Multiplatform
#AndroidDev
It's not every day that Amazon open-sources a framework.
Meet App Platform: a lightweight, opinionated framework for state and memory management across Kotlin Multiplatform
#AndroidDev
August 25, 2025 at 4:18 PM
🚨 Amazon's " App Platform " A New Contender for Multiplatform Architecture
It's not every day that Amazon open-sources a framework.
Meet App Platform: a lightweight, opinionated framework for state and memory management across Kotlin Multiplatform
#AndroidDev
It's not every day that Amazon open-sources a framework.
Meet App Platform: a lightweight, opinionated framework for state and memory management across Kotlin Multiplatform
#AndroidDev
🔍 Debugging animation jank in Compose? 90% of devs miss THIS ADB trick (and it changes everything for your performance workflow) 👇
Use this command:
`adb shell screenrecord --bugreport`
It records your app WITH frame-timing overlays. It’s like a slow-mo referee for your UI. 🕵️♂️
#AndroidDev
Use this command:
`adb shell screenrecord --bugreport`
It records your app WITH frame-timing overlays. It’s like a slow-mo referee for your UI. 🕵️♂️
#AndroidDev
August 25, 2025 at 3:14 AM
🔍 Debugging animation jank in Compose? 90% of devs miss THIS ADB trick (and it changes everything for your performance workflow) 👇
Use this command:
`adb shell screenrecord --bugreport`
It records your app WITH frame-timing overlays. It’s like a slow-mo referee for your UI. 🕵️♂️
#AndroidDev
Use this command:
`adb shell screenrecord --bugreport`
It records your app WITH frame-timing overlays. It’s like a slow-mo referee for your UI. 🕵️♂️
#AndroidDev
In a recent issue of our newsletter, Evelin Herrera covered the hidden world of how Android apps get sold. She covered things that get rarely spoken about, including the exact apps buyers are looking for!
www.jetpackcompose.app/newsletter/d...
#AndroidDev
www.jetpackcompose.app/newsletter/d...
#AndroidDev
August 24, 2025 at 6:53 PM
In a recent issue of our newsletter, Evelin Herrera covered the hidden world of how Android apps get sold. She covered things that get rarely spoken about, including the exact apps buyers are looking for!
www.jetpackcompose.app/newsletter/d...
#AndroidDev
www.jetpackcompose.app/newsletter/d...
#AndroidDev
The latest issue of the newsletter just went out! Go grab a coffee and check it out - jetpackcomposeapp.beehiiv.com/p/dispatch-i...
#AndroidDev
#AndroidDev
August 24, 2025 at 4:24 PM
The latest issue of the newsletter just went out! Go grab a coffee and check it out - jetpackcomposeapp.beehiiv.com/p/dispatch-i...
#AndroidDev
#AndroidDev