Mark Murphy's Avatar

Mark Murphy

@commonsware.com

Android app developer. Entrepreneur. Author. Fan of sentence fragments.

759
Followers
142
Following
146
Posts
05.07.2024
Joined
Posts Following

Latest posts by Mark Murphy @commonsware.com

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.

09.03.2026 21:47 πŸ‘ 5 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0

"I promise you you’re not here on earth to provide fucking shareholder value."

I agree! My value does not depend AT ALL on whether or not shareholders are engaging in sexual relations.

.
.
.

Oh, no, wait... that's probably not what @swank.ca meant...

😁

07.03.2026 13:14 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Hey, I just published jetc.dev Newsletter Issue #304! Compose updates! Compose Multiplatform alpha! @aditlal.dev on the Compose styles API! LaTeX rendering! And... a linked list, for realz?!? jetc.dev/issues/304 #JetpackCompose #AndroidDev

03.03.2026 13:59 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

What happens to Square / Block Android OSS projects post layoffs?

Let's start with some context

OSS at Square is mostly a happy accident. Jack hired Bob, who's job was attracking world class engineers, and he did that through talks & OSS.

02.03.2026 16:37 πŸ‘ 81 πŸ” 25 πŸ’¬ 2 πŸ“Œ 1

If it were easy, everyone would do it! 😁

01.03.2026 15:55 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

@commonsware.com coming in with the high and inside fastball

commonsware.com/blog/2026/02...

27.02.2026 13:41 πŸ‘ 2 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

The Kotlin roadmap was just updated! Check out what you can expect the team to work on in the near future.

kotlinlang.org/docs/...

27.02.2026 13:35 πŸ‘ 21 πŸ” 6 πŸ’¬ 1 πŸ“Œ 1

That's rough. Best of luck in the job search! It's a tough market out there...

26.02.2026 22:54 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Almost all of Cash Mobile Engineering was laid off today.

None of us have any clue what their rubric was for choosing who stayed and who went, but whatever it was, I'm on the job market again!

26.02.2026 22:51 πŸ‘ 31 πŸ” 11 πŸ’¬ 5 πŸ“Œ 0
Preview
a cartoon of a bird flying over a desert with a cactus in the background and the words `` meep meep '' . Alt: A segment of a Warner-Brothers cartoon, featuring the Roadrunner racing across a desert road with a cactus in the background and the words "meep meep".
25.02.2026 11:57 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Hey, I just mailed out jetc.dev Newsletter Issue #303! @brwngrldev.bsky.social on reducing development friction! Line graphs! CMP IDE plugin! Syntax highlighting! And... can we *finally* get rid of ViewModel?!? jetc.dev/issues/303 #JetpackCompose #AndroidDev

24.02.2026 13:59 πŸ‘ 8 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

I released jetc.dev Newsletter Issue #302! Compose patch release and alpha release! Compose Multiplatform patch release! Bottom sheets! @eevis.codes on colors and accessibility! And... can we work with Glance?!? jetc.dev/issues/302 #JetpackCompose #AndroidDev

17.02.2026 13:42 πŸ‘ 5 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0

Thanks for including my Android 17 Beta 1 random musing in today's newsletter!

15.02.2026 16:42 πŸ‘ 2 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Relationship Status of minSdk, compileSdk, targetSdk It is year 2026 and yet Android developers continue to be mystified about minSdk, compileSdk, and targetSdk. There are some myths and false claims floating i...

It is the year 2026, people are still confused about compileSdk and targetSdk. (e.g. you can have targetSdk that is higher than compileSdk)

www.liutikas.net/2026/02/13/R...

Maybe this will explain it a bit more.

#android

13.02.2026 21:37 πŸ‘ 15 πŸ” 7 πŸ’¬ 0 πŸ“Œ 0

I sent out jetc.dev Newsletter Issue #301! AI! Orchestration composables! Stability! Instant Compose! jetc.dev/issues/301 #JetpackCompose #AndroidDev

10.02.2026 13:58 πŸ‘ 3 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Post image

Issue #3 of Inclusive Android Apps is live! πŸš€

This one covers the problem of color-only indicators: why relying on color alone excludes users, with code examples for fixing the issue with text, icons, and/or patterns.

Read it: buttondown.com/inclusive-an...

#AndroidDev #InclusiveAndroidApps

10.02.2026 09:45 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

Could be both!

09.02.2026 13:50 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

If you mean a mobile-facing Web API... the risk with multi-MB responses is that mobile bandwidth is not evenly distributed, and low-end devices are still RAM-constrained, even today.

05.02.2026 15:47 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Web service API, SDK/library API, or something else?

05.02.2026 15:38 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

"I was told you're a monster," the hero said.

"So they say," said the monster.

"But you're beautiful!"

"Thank you."

"Have you always been a monster?"

"Heh. I was a young maiden. But I did something forbidden."

"And became a monster?"

"Got named a monster."

"What did you do?"

"I hit back."

04.02.2026 18:38 πŸ‘ 1104 πŸ” 387 πŸ’¬ 4 πŸ“Œ 12

OK, I mailed out jetc.dev Newsletter Issue #300! It's the tri-centennial issue! Bug fixes! @sinasamaki.com on dials! onGloballyPositioned! APK slimming! And... can we have a slice of a font?!? jetc.dev/issues/300 #JetpackCompose #AndroidDev

03.02.2026 13:57 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

Awesome, thanks!

01.02.2026 21:32 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Screenshot from Mike Masnick's blog post, showing a "Connecting to Bluesky..." banner after the end of the post and before the Responses section

Screenshot from Mike Masnick's blog post, showing a "Connecting to Bluesky..." banner after the end of the post and before the Responses section

Nice writeup!

Possible bug with the site: there is a "Connecting to Bluesky" banner below the last paragraph and before the Responses section. I get it with Firefox, Chrome, and Brave, so it's not browser-specific.

01.02.2026 21:09 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

@mikepenz.dev Thank you for your Compose multiplatform material Markdown library. I'm using it in a couple places. It's great!

30.01.2026 14:51 πŸ‘ 4 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0

I just mailed out jetc.dev Newsletter Issue #299! Security! PinnableContainer! Nested scrolling! tvOS for Compose Multiplatform! And... will the Kotlinlang Slack archive ever get updated?!? jetc.dev/issues/299 #JetpackCompose #AndroidDev

27.01.2026 13:57 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

OK, I released jetc.dev Newsletter Issue #298! Compose Multiplatform 1.10! πŸŽ‰ Compose Hot Reload! @eevis.codes on bottom nav bar accessibility! Responsive tab rows! And... a no-Chromium desktop WebView?!? jetc.dev/issues/298 #JetpackCompose #AndroidDev

20.01.2026 13:58 πŸ‘ 7 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0

It certainly would not surprise me if what's being portrayed there is reality, or close to it. But Ed Zitron is pretty deep in the AI weeds, so I give his take a fair bit of credibility.

And I had forgotten that Salesforce bought Slack. ☹️

17.01.2026 18:39 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

FWIW, bsky.app/profile/edzi... suggests that these articles are based on a sketchy source.

17.01.2026 18:30 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
A group of six nature valentines. A picture of a bog with pitcher plants, with text saying "Our love is like a bog. Built up over time, resistant to decay, deeply interesting to just a small number of people." A yellow slime mold stretching out and exploring. "Our love is like a slime mold. Collaborative, complex, at times unnerving to behold." A piece of limestone with a small trilobite in the corner. "Our love is like limestone. Layered, useful for many purposes, shaped by the friends we met along the way." A ring-billed gull with a french fry on a beach. "Our love is like a ring-billed gull. Abundant, found in North America, sometimes sustained by french fries." An Atlantic horseshoe crab walking on the sand. "Our love is like a horseshoe crab. Tough, timeless, unrelated to true crabs." A drawing of the phosphorus cycle, with arrows connecting various parts of a scene, including algae and fish and a farm and a river and a forest. "Our love is like the phosphorus cycle. Important, really hard to draw."

A group of six nature valentines. A picture of a bog with pitcher plants, with text saying "Our love is like a bog. Built up over time, resistant to decay, deeply interesting to just a small number of people." A yellow slime mold stretching out and exploring. "Our love is like a slime mold. Collaborative, complex, at times unnerving to behold." A piece of limestone with a small trilobite in the corner. "Our love is like limestone. Layered, useful for many purposes, shaped by the friends we met along the way." A ring-billed gull with a french fry on a beach. "Our love is like a ring-billed gull. Abundant, found in North America, sometimes sustained by french fries." An Atlantic horseshoe crab walking on the sand. "Our love is like a horseshoe crab. Tough, timeless, unrelated to true crabs." A drawing of the phosphorus cycle, with arrows connecting various parts of a scene, including algae and fish and a farm and a river and a forest. "Our love is like the phosphorus cycle. Important, really hard to draw."

Nature valentines. This comic is now available as a set of 6 Valentines cards: topatoco.com/collections/...

15.01.2026 14:00 πŸ‘ 1237 πŸ” 434 πŸ’¬ 14 πŸ“Œ 10

I just published jetc.dev Newsletter Issue #297! Memory leaks! Image-loading libraries! Screenshot testing! SVGs! jetc.dev/issues/297 #JetpackCompose #AndroidDev

13.01.2026 13:56 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0