World class Android Developers read our newsletter to remain sharp 👉🏻 https://www.jetpackcompose.app/newsletter
www.jetpackcompose.app/newsletter
www.jetpackcompose.app/newsletter
❌ Missing content descriptions
❌ Insufficient touch target sizes
❌ Contrast problems
All during your regular UI tests.
Add this to your test setup TODAY. Your users will thank you.
❌ Missing content descriptions
❌ Insufficient touch target sizes
❌ Contrast problems
All during your regular UI tests.
Add this to your test setup TODAY. Your users will thank you.
Your scroll performance will thank you.
We cover more Android tips like these in Dispatch, our newsletter that thousands of Android engineers diligently read 🚀
www.jetpackcompose.app/newsletter
Your scroll performance will thank you.
We cover more Android tips like these in Dispatch, our newsletter that thousands of Android engineers diligently read 🚀
www.jetpackcompose.app/newsletter
Basically every scaled app needs visibility tracking. This single modifier is a must-know and will enable those easier-to-use Modifiers.
Basically every scaled app needs visibility tracking. This single modifier is a must-know and will enable those easier-to-use Modifiers.
✅ Built-in debouncing & throttling
✅ Designed for visibility tracking
✅ Way more efficient for LazyColumn use cases
✅ Only fires on actual position/size changes
Perfect for impression tracking, triggering animations based on scroll position, etc.
✅ Built-in debouncing & throttling
✅ Designed for visibility tracking
✅ Way more efficient for LazyColumn use cases
✅ Only fires on actual position/size changes
Perfect for impression tracking, triggering animations based on scroll position, etc.
If you're using it for visibility tracking or impression logging, you're probably tanking your scroll performance.
If you're using it for visibility tracking or impression logging, you're probably tanking your scroll performance.
www.jetpackcompose.app/newsletter
www.jetpackcompose.app/newsletter
Simply incredible 👏🏻
Simply incredible 👏🏻
But the development experience is light-years ahead.
This is actually a common practice for library maintainers who have the (mis)fortune of maintaining Java libraries.
But the development experience is light-years ahead.
This is actually a common practice for library maintainers who have the (mis)fortune of maintaining Java libraries.
👉 Starting a new project
👉 Dealing with slow build times
👉 Frustrated with DI debugging
Metro deserves serious consideration. It's multiplatform-ready and has excellent IDE integration.
Check it out - github.com/ZacSweers/me...
👉 Starting a new project
👉 Dealing with slow build times
👉 Frustrated with DI debugging
Metro deserves serious consideration. It's multiplatform-ready and has excellent IDE integration.
Check it out - github.com/ZacSweers/me...
This is open source at its finest. One dev solves a problem well enough that a $44B company changes direction
This is open source at its finest. One dev solves a problem well enough that a $44B company changes direction
ABI changes: 47% faster
Non-ABI changes: 56% faster
Clean builds: 25-28% faster
But speed isn't everything. Error messages are clearer because it's ONE framework, not three tools fighting each other.
ABI changes: 47% faster
Non-ABI changes: 56% faster
Clean builds: 25-28% faster
But speed isn't everything. Error messages are clearer because it's ONE framework, not three tools fighting each other.
Square evaluated it, migrated internal apps, ran benchmarks, and said "we're switching."
Square evaluated it, migrated internal apps, ran benchmarks, and said "we're switching."
If you've ever felt frustrated by ViewModel scoping limitations in Compose, give Resaca a try. - github.com/sebaslogen/r...
If you've ever felt frustrated by ViewModel scoping limitations in Compose, give Resaca a try. - github.com/sebaslogen/r...
Plus it's Chris Banes approved, which is basically a seal of quality in the Android world.
Plus it's Chris Banes approved, which is basically a seal of quality in the Android world.
Dialog ViewModels that clean up when dismissed
LazyColumn items with their own business logic
Reusable components with isolated state
Multi-pager screens with per-page ViewModels
Dialog ViewModels that clean up when dismissed
LazyColumn items with their own business logic
Reusable components with isolated state
Multi-pager screens with per-page ViewModels
✅ Survives configuration changes
✅ Survives navigation to backstack
✅ Survives recomposition
❌ Gets cleaned up when truly no longer needed
It's like remember + viewModel() had a baby with good cleanup hygiene.
✅ Survives configuration changes
✅ Survives navigation to backstack
✅ Survives recomposition
❌ Gets cleaned up when truly no longer needed
It's like remember + viewModel() had a baby with good cleanup hygiene.