Writing interactive screenshot tests in Compose UI with Touch Robot
Saket Narayanby Saket Narayan·24 May 2026
- Shipped an expandable header that broke mid-scroll. Went unnoticed for a week. - Broke highlighting of hyperlinks in text for the third time.
Generating rich link previews 10x faster
Saket Narayanby Saket Narayan·23 Dec 2025
unfurl is one of my favorite open source libraries. Not because it’s clever or complex, but because it’s a tiny kotlin library that does one thing well: generate rich link previews by extracting...
The pursuit of fast feedback loops in Android development
Saket Narayanby Saket Narayan·27 Nov 2024
Sebastian Sellmair from JetBrains recently showed off a prototype of hot-reloading Compose UI code for deploying changes without rebuilding the project. It looks exciting and I want it to succeed.
Building a sub-sampling image viewer for Compose UI
Saket Narayanby Saket Narayan·9 Aug 2023
How do you display a 100mb image on Android without running into OutOfMemoryError? You can’t. But you can cheat.
Drawing custom text spans in Compose UI
Saket Narayanby Saket Narayan·12 Jul 2022
While exploring how text paragraphs are rendered in Compose UI, I nerd sniped myself into porting squiggly underlines from Sam Ruston’s Buzzkill app.
Great teams merge fast
Saket Narayanby Saket Narayan·23 Feb 2021
One of the many things I was constantly amazed about during my first few weeks at Square/Cash App was seeing how fast this team shipped code.
Avoiding fake italic and bold text on Android
Saket Narayanby Saket Narayan·18 Dec 2019
Changing line heights in Android using LineHeightSpan has this ugly side-effect where the cursor ends up being very tall, extending till the full line height instead of just the text height.
Reinventing the dial-up modem
Saket Narayanby Saket Narayan·18 Aug 2019
While working on a healthcare app called Simple at my previous company, we wanted to improve how nurses follow up with their patients.
Sunsetting Dank
Saket Narayanby Saket Narayan·15 Dec 2018
I’ve been trying to write this post for a while, but I kept throwing my words in the bin in hopes that things will improve. I believe it’s now time to put an end to this.
Smoothly reacting to keyboard visibility changes in Android
Saket Narayanby Saket Narayan·5 Oct 2018
When people use Dank, one of the terms they use to describe it is fluid. The app makes a good use of motion to indicate changes on the screen, but I think one of my favorite reasons why the app...
Introducing InboxRecyclerView
Saket Narayanby Saket Narayan·14 Sept 2018
When Google released Inbox for Android some 4 years ago, their UI was rad. I was obsessed with the navigation transition, where emails expanded from their list item when clicked, pushing all other...
Designing a flick dismissible image viewer
Saket Narayanby Saket Narayan·15 Aug 2018
While working on Dank, my primary goal was to ensure that user generated content on Reddit receive as much attention in the app as possible, while letting the UI take a back-seat.
Band-aiding legacy networking libraries with Retrofit and OkHttp
Saket Narayanby Saket Narayan·30 Apr 2018
When Uncommon was brought in to refactor a big legacy app last year, we found ourselves in a strange situation.
Android: Displaying HTML tags on TextView the right way
Saket Narayanby Saket Narayan·29 Jun 2017
While going through the codebase of a former client, I found that I was using four different ways for showing HTML on Android.
Tips for Android Nougat's bundled notifications
Saket Narayanby Saket Narayan·31 May 2017
I’ve been working on implementing bundled notifications in my app, which is by far one of my favourite features about Android 7.0 Nougat.
A better way to handle links in TextView
Saket Narayanby Saket Narayan·11 Sept 2016
There are two ways of “linkifying” URLs in a TextView. First, as an XML attribute: <TextView ... android:autoLink="phone|web" /> and second, programmatically: TextView textView = (TextView)...
Your filters hide everything on this page. Adjust them in preferences.