Advertisement Β· 728 Γ— 90

Posts by Rafael Tonholo

Post image

Compose Stability Analyzer 0.7.3 introduces the runtime Compoes state tracking.

By adding the `TraceRecomposition` annotation to your composable function, you can trace all the parameters and in-body Compose states in the logcat.

skydoves.github.io/compose-stab...

4 days ago 7 1 0 0

I will keep an eye there! Thanks for sharing and for this great library!!

1 week ago 2 0 0 0

However, an IntelliJ plugin might be also useful for some functionalities like gutter indications, dependency graph rendering, or even reports. If you are open to contributions, I could try scratching something?

1 week ago 0 0 1 0

Probably. I remember trying that a few months ago on AS and suddenly everything went crazy, but I saw you fixed an issue related to that a few versions ago. I started to try again, I can let you know if anything similar happens again, if you want.

1 week ago 0 0 1 0

Someone just shared, out of the blue, my project on another social media! That is the first time it ever happened and I was so happy to see that!

Sometimes I wonder if I should ever keep working on it, if ever people are using it or not.

It felt heartwarming seeing that, tbh!

1 week ago 2 0 0 0

Yeah, I do that sometimes by disabling the `kotlin.k2.only.bundled.compiler.plugins.enabled`, however the IDE starts to be finicky and often "Redeclaration" issues show... That isn't a bug on Metro, as it happens when I do the same with a compiler plugin I built for testing 😞

1 week ago 0 0 1 0

Metro is so good! If you haven't tried yet, I strongly suggest you to!! I wish IntelliJ allowed non-bundled K2 compiler plugins to contribute their FIR checkers to the IDE so we could see diagnostics in real-time. Perhaps a Metro IntelliJ plugin could bridge the gap until then

1 week ago 5 3 1 0
GitHub - rafaeltonholo/svg-to-compose: A command-line tool and a Gradle Plugin for convert SVG to Android Jetpack Compose Icons. A command-line tool and a Gradle Plugin for convert SVG to Android Jetpack Compose Icons. - rafaeltonholo/svg-to-compose

While the website is fully functional, this is the first version I'm publishing, so feedback is appreciated!

And if you are interested in the project, consider starring it on GitHub and contributing! All contributions are welcome!

Here is the link: github.com/rafaeltonhol...

#AndroidDev #KMP

2 weeks ago 3 0 0 0
Preview
SVG to Compose - Convert SVG and AVD to Compose ImageVector Convert SVG and Android Vector Drawables into Jetpack Compose ImageVector code. CLI tool and Gradle plugin for Kotlin Multiplatform.

I've just released the website for CLI/Gradle Plugin code, built using KMP!

It also features a playground editor where you can convert your SVGs without needing to download anything!

And the best is that everything runs locally on your browser!

svgtocompose.tonholo.dev

#AndroidDev #KMP

2 weeks ago 11 0 1 0
Preview
Compose HotSwan - Android Hot Reload for Jetpack Compose Hot reload your Jetpack Compose UI instantly without rebuilding. Compose HotSwan is a JetBrains IDE plugin for Android developers.

Why Compose HotSwan 🦒

It explains how Compose HotSwan brings true Hot Reload to Android, avoiding rebuilds and app restarts. It enables instant UI updates on a running app while preserving state, improving development speed.

hotswan.dev/docs/how-it-...

3 weeks ago 11 4 1 1
Advertisement
Video

Another tweak.

3 weeks ago 4 1 0 0
Video

One of the biggest gems of Compose Hot Reload is the ability to simulate animation variations directly on real Android devices.

hotswan.dev/docs/support...

3 weeks ago 4 2 1 0
Preview
Introducing our Public Roadmaps - The Thunderbird Blog At Thunderbird, we firmly believe in the strength of listening to our community’s needs and wants, and balancing it with our resources and capabilities. While this has always been part of our ethos, we want to start 2026 by making our goals easier to read and comprehend at roadmaps.thunderbird.net, where you will find our roadmaps […]

We have a shiny new roadmap site, and an equally shiny new blog post to tell our community all about it:

#Thunderbird #OpenSource

blog.thunderbird.net/2026/03/intro…

3 weeks ago 24 8 2 0
Preview
ThunderCast | ThunderCast - S3E1 - Roadmaps ThunderCast, the official Thunderbird podcast is back for another season! Let's kick things off with some insights on our roadmaps and what's ahead for our desktop and email clients.User testing discussions: https://thunderbird.topicbox.com/Roadmaps: https://roadmaps.thunderbird.net/Developer...

Thundercast is back! Our hosts are steering us through the roadmaps for the desktop and mobile clients. Tune in for all the information on what's coming next, and minimal backseat driving.

#Thunderbird #ThunderCast #OpenSource

share.transistor.fm/s/4db3895e

3 weeks ago 6 3 0 0

I can't believe that I will attend KotlinConf this year 😱

3 weeks ago 8 0 0 0

Thanks for sharing that! I will be glad to help test it, or even contribute!

1 month ago 1 0 0 0

When are you planning to release/open source it?

1 month ago 0 0 1 0

I NEED THIS SO MUCH!

1 month ago 3 1 0 0
Preview
Scoping ViewModels in Compose Lifecycle ViewModel 2.11.0-alpha02 introduces rememberViewModelStoreOwner, an API to scope ViewModelStore directly within the Compose hierarchy. Why It Matters Until now, ViewModelStore scoping was ti...

Just published "Scoping ViewModels in Compose".

marcellogalhardo.dev/posts/scopin...

#AndroidDev #Kotlin #KMP #CMP

1 month ago 23 5 0 0
A screenshot of code that reads:

// Create a Recomposition Tracking Rule
@get:Rule
val composeTestRule = createRecompositionTrackingRule()

@Test
fun incrementCounter_onlyValueRecomposes() {
  // Perform an action
  composeTestRule.onNodeWithTag("inc_button")
    .performClick()

  // Assert that Composables change like you expect
  composeTestRule.onNodeWithTag("counter_value")
    .assertRecompositions(exactly = 1)

  // Or assert that they remain stable
  composeTestRule.onNodeWithTag("counter_title")
    .assertStable() // asserts recompositions = 0
}

A screenshot of code that reads: // Create a Recomposition Tracking Rule @get:Rule val composeTestRule = createRecompositionTrackingRule() @Test fun incrementCounter_onlyValueRecomposes() { // Perform an action composeTestRule.onNodeWithTag("inc_button") .performClick() // Assert that Composables change like you expect composeTestRule.onNodeWithTag("counter_value") .assertRecompositions(exactly = 1) // Or assert that they remain stable composeTestRule.onNodeWithTag("counter_title") .assertStable() // asserts recompositions = 0 }

Today I’m open-sourcing Dejavu!

Testing UI performance in Jetpack Compose is frustrating. We profile and watch tools, yet regressions still creep in.

I built Dejavu to make recomposition behavior something you can actually test.

1 month ago 40 11 7 0
Advertisement
Video

🫨 Trying to build a library out of the snappy drag thing that I build for one of my apps. #JetpackCompose

1 month ago 17 2 1 1
Post image Post image Post image

Everything's coming up roses in Pasadena for @socallinuxexpo.bsky.social! Come visit us in the Expo Hall at booth 221 to chat with our team, learn what we're up to, and grab some stickers from:

14:00-18:00 Today
10:00-18:00 Saturday
10:00-14:00 Sunday

#Thunderbird #SCaLE23x

1 month ago 17 2 1 0
Preview
Illustrating Roc's World: A Spotlight on Michaela Martin - The Thunderbird Blog Design artist Michaela Martin shows us how she expanded our mascot Roc's world and brought it to vivid, illustrated life.

We're excited to shine a light on Michaela Martin, the design artist behind our appeal illustrations. We chat about her background, her process, and how Roc and his world went from first sketches to final drafts. 🎨

#Thunderbird #Illustration

blog.thunderbird.net/2026/03/desi...

1 month ago 9 1 0 0

πŸŽ™οΈCheck out the new @fragmentedpodcast.com episode on subagents!
They can be a huge unlock once you understand how it all works and you can get real benefits without having to a swarm them.

@kau.sh and I built an RTS mental model for how they work (yes, we did that). Check it out!

1 month ago 6 2 0 0

new episode is out! spot the easter πŸ₯š?

recent models have shown massive improvement owing to clever use of "modes" and subagent dispatch. it really clicked for me after chatting with @iurysouza.dev

listen to improve your fundamentals! (not just tactics).

1 month ago 9 2 0 0
Preview
Mobile Progress Report: February 2026 - The Thunderbird Blog In the first Mobile Progress Report of 2026, we're going over our plans and priorities for the Android and iOS Thunderbird apps.

And our Mobile Progress Report provides an early look into how development on Android AND iOS (!) will take shape over the coming year.

#Thunderbird #Android #iOS #OpenSource

blog.thunderbird.net/2026/02/mobi...

2 months ago 18 3 0 0
CHAOSSCon EU 2026 - Schedule and Speakers - CHAOSS CHAOSScon Europe 2025, co-located with FOSDEM in Brussels, Belgium on Thursday, January 30, 2025.

Heading to CHAOSSCon at @fosdem.org? Be sure to check out @linuxflower.bsky.social and Wayne Mery's Lunch and Learn on Thursday Jan 29 at 13:00 on how we're using community metrics and how we can improve!

#Thunderbird #OpenSource #Community

chaoss.community/chaosscon-20...

2 months ago 8 2 1 0
Preview
CI Runners Suddenly Failing with 403 Forbidden for Maven/Gradle Repositories (ubuntu-latest) Β· Issue #4180 Β· actions/runner Since today, our CI pipelines running on ubuntu-latest and other hosted runners have started failing while downloading dependencies from Maven/Gradle repositories, returning HTTP 403 Forbidden erro...

Heads up it looks like Sonatype is starting to enforce stricter throttling on Maven Central.

If you see 429/403 errors from your runneres, you're not alone.

github.com/actions/runn...
www.sonatype.com/blog/maven-c...

3 months ago 5 2 1 0
Preview
GitHub - rafaeltonholo/agp-intellij-compatibility-matrix: Compatibility Matrix for Android Gradle Plugin and Intellij Compatibility Matrix for Android Gradle Plugin and Intellij - rafaeltonholo/agp-intellij-compatibility-matrix

I've just added the latest version, but I'm planning to add the previous ones as well.
If you want to help, here is the repo: github.com/rafaeltonhol...

#android #kmp #AndroidDev #intellij

3 months ago 2 0 0 0
Advertisement

For that reason, I'm starting to track the versions in a Git repository to serve as a compatibility matrix until a better solution is available.

3 months ago 0 0 1 0