World class Android Developers read our newsletter to remain sharp 👉🏻 https://www.jetpackcompose.app/newsletter
Use .aiexclude files—it's like .gitignore but for AI.
Your private code stays private while you still get contextually rich AI suggestions.
#AndroidDev
Use .aiexclude files—it's like .gitignore but for AI.
Your private code stays private while you still get contextually rich AI suggestions.
#AndroidDev
Not anymore. rememberGraphicsLayer() makes it ridiculously simple.
Thread on capturing Composables as images 🧵
#AndroidDev
Not anymore. rememberGraphicsLayer() makes it ridiculously simple.
Thread on capturing Composables as images 🧵
#AndroidDev
📍 Bengaluru (exact location TBD)
🗓️ Jan 4th, 2026
⏰ 5–7 PM
We are bringing together some of the smartest Android engineers in the city for a relaxed evening to hang out, grab a drink, and have fun conversations.
luma.com/vslr0fgc
#AndroidDev
📍 Bengaluru (exact location TBD)
🗓️ Jan 4th, 2026
⏰ 5–7 PM
We are bringing together some of the smartest Android engineers in the city for a relaxed evening to hang out, grab a drink, and have fun conversations.
luma.com/vslr0fgc
#AndroidDev
Rajat Mittal built one that's 88 KILOBYTES. 🤯
How? By ditching native deps and using only Android's built-in PdfRenderer.
Thread on lightweight library design 🧵
#AndroidDev
Rajat Mittal built one that's 88 KILOBYTES. 🤯
How? By ditching native deps and using only Android's built-in PdfRenderer.
Thread on lightweight library design 🧵
#AndroidDev
That's 85% reduction in the number of instructions.
Thread on why manual function inlining matters 🧵
#AndroidDev
That's 85% reduction in the number of instructions.
Thread on why manual function inlining matters 🧵
#AndroidDev
It's understanding your customer and the problems they need solved.
Thread on where Android developers still have the most leverage in this new era of software engineering 🧵
#AndroidDev
It's understanding your customer and the problems they need solved.
Thread on where Android developers still have the most leverage in this new era of software engineering 🧵
#AndroidDev
You peel the carrot, you chop the carrot, you put the carrot in the stew.
You don't suddenly find out that your peeler is several versions behind and they dropped support for carrots in version 4.3 😭😭
#AndroidDev
You peel the carrot, you chop the carrot, you put the carrot in the stew.
You don't suddenly find out that your peeler is several versions behind and they dropped support for carrots in version 4.3 😭😭
#AndroidDev
This from Gabriel Peal perfectly captures where Android is now.
We're not chasing new primitives anymore. We're refining and building on a mature foundation. 🧵
#AndroidDev
This from Gabriel Peal perfectly captures where Android is now.
We're not chasing new primitives anymore. We're refining and building on a mature foundation. 🧵
#AndroidDev
Just kidding, not 🦃 but 🇹🇷
In Turkish, uppercase "i" is "İ" (with a dot!), not "I".
Since toUpperCase() relied on Locale.getDefault(), your code could behave differently depending on location.
#AndroidDev
Just kidding, not 🦃 but 🇹🇷
In Turkish, uppercase "i" is "İ" (with a dot!), not "I".
Since toUpperCase() relied on Locale.getDefault(), your code could behave differently depending on location.
#AndroidDev
There is a must have library that I've never heard about before and now I'll never forget!
www.jetpackcompose.app/newsletter #AndroidDev #JetpackCompose
There is a must have library that I've never heard about before and now I'll never forget!
www.jetpackcompose.app/newsletter #AndroidDev #JetpackCompose
Modifier.dropShadow() Modifier.innerShadow()
No more hacky Canvas drawing or third-party libraries. Native shadows are HERE. 🧵
#AndroidDev #JetpackCompose
Modifier.dropShadow() Modifier.innerShadow()
No more hacky Canvas drawing or third-party libraries. Native shadows are HERE. 🧵
#AndroidDev #JetpackCompose
#AndroidDev
#AndroidDev
You can now enable automated accessibility checks directly in your Espresso tests:
That's it. No more manual a11y audits.
#AndroidDev #JetpackCompose
You can now enable automated accessibility checks directly in your Espresso tests:
That's it. No more manual a11y audits.
#AndroidDev #JetpackCompose
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
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
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
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
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
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
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
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
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
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
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
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 🧈👇