Sign in

Alex Zhukovich

@alexzh.com
49 followers 54 following 141 posts

Android Engineer & author at alexzh.com.

PostsRepliesMedia
Alex Zhukovich @alexzh.com · 02/07/2026
Did you know there are multiple Floating Action Button components available in different sizes? • SmallFloatingActionButton • FloatingActionButton • MediumFloatingActionButton • LargeFloatingActionButton #AndroidDev #JetpackCompose
140
Alex Zhukovich @alexzh.com · 25/06/2026
1/ Your component screenshot tests are all green, but your app might still have visual issues. Both component and screen tests share the same goal, improving visual quality, but they serve different purposes: #AndroidDev #ScreenshotTesting #SoftwareQuality
140
Alex Zhukovich @alexzh.com · 23/06/2026
Did you know that buttons in Jetpack Compose have predefined constants for button height and icon size for these button sizes: • Extra small • Medium • Large • Extra large Knowing the button size, you can calculate the recommended font size based on the button height. #AndroidDev #JetpackCompose
140
Alex Zhukovich @alexzh.com · 16/06/2026
FlexBox component was added to Jetpack Compose. It's a container that lays out items in one of the following directions: • Row • Column • RowReverse • ColumnReverse You’ll need "foundation-layout:1.12.0-alpha03" to try it out. #AndroidDev #JetpackCompose
130
Alex Zhukovich @alexzh.com · 10/06/2026
A nice surprise this morning: my book Mastering Android Screenshot Testing is being featured on the Leanpub homepage 🎉 Thank you to everyone who grabbed an early copy. More chapters are on the way! The 10% launch discount is still available: leanpub.com/mastering-a...
010
Alex Zhukovich @alexzh.com · 10/06/2026
Grid component was added to Jetpack Compose. It lets you build two-dimensional layouts. You’ll need "foundation-layout:1.12.0-alpha03" to try it out. #AndroidDev #JetpackCompose
120
Alex Zhukovich @alexzh.com · 05/06/2026
Mastering Android Screenshot Testing is now available. 10 chapters (50% of the full book). Here's what's inside ⬇️ • Why and when to use screenshot testing • Framework comparison: Android Testify, ComposePreview Screenshot Testing, Dropshots, Paparazzi, Roborazzi, Shot
100
Alex Zhukovich @alexzh.com · 19/05/2026
Here's the problem: Devs change screenshot test thresholds thinking 2% is small and safe. Here's the math for a Pixel 10 (1080 × 2424 = 2,617,920 pixels): a 2% threshold allows 52,358 pixels to be completely different before a test fails.
100
Alex Zhukovich @alexzh.com · 05/03/2026
2.5 years: 1,000+ hours of writing, 2 full drafts, and over 50,000 words, and that's not even counting the code. I'm writing a book on Android screenshot testing, and the first release is coming in April 2026. Here's what it covers ⬇️
100
Alex Zhukovich @alexzh.com · 18/02/2026
Your date formatter may work locally, but break elsewhere. SimpleDateFormat(...) and DateTimeFormatter.ofLocalizedDate(...) do not guarantee the result your users expect. Use DateFormat.getBestDateTimePattern() for the right locale pattern. #AndroidDev
020
Alex Zhukovich @alexzh.com · 10/02/2026
"Just display the number. What could go wrong?" Localize your app into Arabic and find out. Instead of using raw numbers in your UI, use NumberFormat. Not only digits depend on the locale, but also decimal separators, thousand groupings, and many other formatting conventions.
000
Alex Zhukovich @alexzh.com · 29/01/2026
Last week I published a short article about a small but annoying problem with PreviewParameterProvider in Jetpack Compose. If you've ever used PreviewParameterProvider, you know the pain: your previews have names like "uiState 0", "uiState 1", "uiState 2". Here's how to fit ⬇️
110
Alex Zhukovich @alexzh.com · 20/01/2026
How many preview functions do you use per component or screen in Jetpack Compose? If it's more than two, consider using PreviewParameterProvider. Less code. Same coverage. #AndroidDev #JetpackCompose
020
Alex Zhukovich @alexzh.com · 02/12/2025
Compose Preview Screenshot Testing forces moving your previews into the "screenshotTest" source set, which leads to code duplication or losing your previews. Instead, reuse your preview functions in the screenshotTest source set. Previews + screenshot tests. No duplication. #AndroidDev
010
Alex Zhukovich @alexzh.com · 30/10/2025
1/3 Foldable devices always use the medium window size class. I believed this too. Then I opened my app on a Pixel 9 Pro Fold and was surprised that the "foldable" layout was skipped, and the "tablet" layout appeared on the screen. #AndroidDev #KMP #MaterialDesign
120
Alex Zhukovich @alexzh.com · 24/10/2025
Did you know that the OutputTransformation API lets you format text fields in Jetpack Compose in real time? Here's how to improve entering a card number. You can also use it for phone numbers, dates, postcodes, and more. Do you already use OutputTransformation in your project?
010
Alex Zhukovich @alexzh.com · 25/09/2025
The ButtonGroup component from Material 3 Expressive replaces the SegmentedButtons component. It supports more shapes and includes overflow buttons for additional components that can't fit on the screen. #JetpackCompose
000
Alex Zhukovich @alexzh.com · 18/09/2025
Compose Multiplatform 1.9.0 is here! It now supports parameters for preview functions, including: • name • group • locale • widthDp • heightDp • showBackground • backgroundColor More details: github.com/JetBrains/c...
000
Alex Zhukovich @alexzh.com · 17/09/2025
3. Number formatting varies between countries. Let's compare: • US: 12,345,678.9 • FR: 12 345 678,9 Use "NumberFormat.getNumberInstance(locale)." for number formatting. Which of these has caused issues in your apps?
000
Alex Zhukovich @alexzh.com · 17/09/2025
2. Date formats are often a reason for user confusion. Is "01/02/2025" January 2nd or February 1st? Actually, it depends on the locale. • US: MM/DD/YYYY • UK: DD/MM/YYYY Use "DateTimeFormatter" to format dates based on locale. Apply a similar approach to time formatting.
100
Alex Zhukovich @alexzh.com · 17/09/2025
1. Currency formatting differs by country: • US: $1,234.56 • DE: 1.234,56 € Use "NumberFormat.getCurrencyInstance(locale)" for proper currency symbol positioning.
100
Alex Zhukovich @alexzh.com · 30/08/2025
Need to build list and detail screens in your Jetpack Compose project that adapt to different device types? Check out the ListDetailPaneScaffold component from the Material3 adaptive-layout dependency.
010
Alex Zhukovich @alexzh.com · 14/08/2025
Did you know you can control the tooltip's position relative to its anchor starting from "material3:1.5.0-alpha01"? Tooltips support the following positions: • Above • Below • Start • End
000
Alex Zhukovich @alexzh.com · 23/07/2025
Here is one more reason why you need visual tests which will verify your components and screens against system configuration options, like font scale. Remember: Not everyone uses the default font size.
000
Alex Zhukovich @alexzh.com · 13/07/2025
Did you know that Material 3 Expressive introduces many additional shapes that you can use in Jetpack Compose?
100
Alex Zhukovich @alexzh.com · 02/07/2025
Want to see how your UI adapts to different wallpapers? You can preview dynamic colors directly in Android Studio using the "wallpaper" parameter for preview annotation. Does your app support dynamic colors?
000
Alex Zhukovich @alexzh.com · 18/06/2025
Compose Multiplatform 1.8.2 is now available. With this update, you can use preview parameters for Compose Multiplatform previews. ⚠️ Currently, the multiple previews are rendered in IntelliJ IDEA 2025.1.2 (stable version) and not rendered in Android Studio.
000
Alex Zhukovich @alexzh.com · 17/06/2025
Are you looking for a simple way to give access to important actions and keep the UI clean? Then, try HorizontalFloatingToolbar. It was recently released as part of Material 3 Expressive components. ⚠️ Currently in alpha #AndroidDev #MaterialDesign #JetpackCompose
120
Alex Zhukovich @alexzh.com · 05/06/2025
In Android Studio Narwhal, you can visually configure a preview for composable functions by clicking the gear icon next to your preview function.
000
Alex Zhukovich @alexzh.com · 03/06/2025
Ensure that your composable function is accessible. Do you have a preview for your UI? Then, verify it by selecting "Start UI Check Mode" for your preview in Android Studio. This feature works for Compose Multiplatform code, too. (tested it in Android Studio Narwhal).
000
Alex Zhukovich @alexzh.com · 30/05/2025
Did you know you can activate TalkBack to verify your application on an Android emulator using the "Device UI shortcut" menu in Android Studio?
010
Alex Zhukovich @alexzh.com · 29/04/2025
Starting with Jetpack Compose 1.8.0, you have access to additional text overflow options. Here are the available options: • Ellipsis • StartEllipsis • MiddleEllipsis
000
Alex Zhukovich @alexzh.com · 25/04/2025
Recently, Jetpack Compose 1.8.0 was released and it allows to adjust the text size to the size of the container. Jetpack Compose 1.8.0 is available as part of the BOM: 2025.04.01 implementation(platform("androidx.compose:compose-bom:2025.04.01"))
010
Alex Zhukovich @alexzh.com · 23/04/2025
Did you know you can change the color mode and font size from the "Running Devices" panel in Android Studio without accessing the settings? By using the "Device UI Shortcuts" feature, you can adjust: • Color mode • Navigation mode (gesture, buttons) • Font size • Display size
000
Alex Zhukovich @alexzh.com · 19/04/2025
I've just completed the "Visual Testing Tools and Services" section of my book on visual testing for Android projects. I'd love to hear from developers and QA engineers: What screenshot testing tools do you use alongside screenshot testing frameworks?
100
Alex Zhukovich @alexzh.com · 11/04/2025
Android Studio Narwhal now includes a "Generate Preview" with Gemini. My thoughts after playing with it: • It generates fake data for previews • It struggles with custom types • It needs modification, but it speeds up the process In the future, it might be a helpful tool for adding visual tests.
010
Alex Zhukovich @alexzh.com · 02/04/2025
Starting from Android Studio Narwhal, you can use the preview for common composable functions in Kotlin Multiplatform.
110
Alex Zhukovich @alexzh.com · 18/03/2025
Starting from version 1.4.0-alpha10 of Compose Material3, the TabRow is deprecated. Instead, you need to use PrimaryTabRow or SecondaryTabRow components.
000
Alex Zhukovich @alexzh.com · 14/03/2025
Visual issues can damage trust in your brand and ruin your app rating. My new article explores how visual tests can detect pixel-perfect issues in your Android application: alexzh.com/why-visual-... Learn how to catch visual bugs before release, like those shown in this image.
000
Alex Zhukovich @alexzh.com · 11/03/2025
Did you know you can control how many cells an item will use in the LazyVerticalGrid in Jetpack Compose? The "span" parameter is here to help. You can use it with "item" and "items" functions.
000
Alex Zhukovich @alexzh.com · 06/03/2025
Jetpack Compose has multiple preview functions that can speed up your development process: • PreviewLightDark • PreviewFontScales • PreviewScreenSizes • PreviewDynamicColors
030
Alex Zhukovich @alexzh.com · 04/03/2025
Did you know you can use "NavigationSuiteScaffold" to simplify switching between navigation UIs for different window sizes in Jetpack Compose?
010
Alex Zhukovich @alexzh.com · 27/02/2025
1/4 Stop writing endless screenshot tests. Android developers waste hours writing almost identical screenshot tests. Here’s a tip to write less code without compromising coverage: • Replace multiple test cases with parameterized tests • Configure valid input parameters for every test
121
Alex Zhukovich @alexzh.com · 18/02/2025
Starting from version "1.4.0-alpha08" the "Material 3" library introduces the "TimePickerDialog" component in Jetpack Compose. #AndroidDev #JetpackCompose
020
Alex Zhukovich @alexzh.com · 11/02/2025
To activate this feature in IntelliJ IDEA 2025.1 EAP, install the "Android Design Tools" plugin and add the following dependency.
000
Alex Zhukovich @alexzh.com · 11/02/2025
If you're using IntelliJ IDEA 2025.1 EAP, you can now render previews for common code. Now we can render previews of composable multiplatform code in both IntelliJ IDEA and Fleet IDEs.
100
Alex Zhukovich @alexzh.com · 04/02/2025
Starting from version "1.4.0-alpha07" the "Material 3" library introduces the "TwoRowsTopAppBar" component in Jetpack Compose. #AndroidDev #JetpackCompose
000
Alex Zhukovich @alexzh.com · 22/01/2025
Need to style text in Jetpack Compose? The AnnotatedString is a simple option, but it often involves a lot of boilerplate code. You can use the AnnotatedString.fromHtml function to avoid manual text styling. The string can be stored in resources or in a separate file. #JetpackCompose
040
Alex Zhukovich @alexzh.com · 17/01/2025
Starting from version "1.4.0-alpha06" of the "Material 3" library introduces the VerticalSlider in Jetpack Compose! Want to flip the slider's direction? Use the "reverseDirection" parameter. #AndroidDev #JetpackCompose
010
Alex Zhukovich @alexzh.com · 09/01/2025
Did you know that the "fillMaxWidth," "fillMaxHeight," and "fillMaxSize" modifiers have a "fraction" parameter? #JetpackCompose
000