István Juhos https://istvanjuhos.dev/ Recent content on István Juhos Hugo en-us Sat, 11 Oct 2025 15:00:00 +0200 Compose Multiplatform Preview Tooling Improvements - We're Almost There*! https://istvanjuhos.dev/talks/2025/20251011-a-year-of-compose-multiplatform-preview-tooling-improvements/ Sat, 11 Oct 2025 15:00:00 +0200 https://istvanjuhos.dev/talks/2025/20251011-a-year-of-compose-multiplatform-preview-tooling-improvements/ <h2 id="abstract">Abstract</h2> <p>Not so long ago, working with Compose Multiplatform previews could feel… character-building. Previewing composables from common code often meant jumping through awkward hoops. On top of that, the tooling was lacking in features that Jetpack Compose tooling already had in place for a while.</p> <p>Over the past year, that’s changed drastically. We&rsquo;ve got a new KMP plugin, CMP preview support in common code, Hot Reload, and a lot more refreshing updates.</p> When MediaProjection Isn't Enough - Building a Custom In-App Session Recorder https://istvanjuhos.dev/talks/20250926-when-mediaprojection-isnt-enough/ Fri, 26 Sep 2025 10:00:00 +0100 https://istvanjuhos.dev/talks/20250926-when-mediaprojection-isnt-enough/ Debugging user issues gets so much easier when you can see exactly what they experienced. While off-the-shelf solutions exist to integrate screen recording into our apps, they didn’t give us the quality, flexibility, or control we needed. So, our team built our own native, in-app session recording tool for Android. In this talk, we’ll share why we decided to go in-house, how we tackled the technical and UX hurdles along the way, and what we learned about recording high-quality video and audio data. Practical Tips and Tricks to Improve Your Compose Previews https://istvanjuhos.dev/talks/20250905-practical-tips-and-tricks-to-improve-your-compose-previews/ Thu, 04 Sep 2025 23:00:00 +0100 https://istvanjuhos.dev/talks/20250905-practical-tips-and-tricks-to-improve-your-compose-previews/ Jetpack Compose Preview is a powerful tool that provides real-time feedback on how our composables are rendered and even on how they behave and animate in certain conditions. In this talk, I&rsquo;ll give you some tips and tricks on how we can improve our experience with Previews. Practical Tips and Tricks for Working With Compose Multiplatform Previews https://istvanjuhos.dev/talks/20250603-practical-tips-and-tricks-for-working-with-compose-multiplatform-previews/ Tue, 03 Jun 2025 11:00:00 +0200 https://istvanjuhos.dev/talks/20250603-practical-tips-and-tricks-for-working-with-compose-multiplatform-previews/ Compose Multiplatform is a game-changer for sharing UI across platforms, but things can still get tricky when it comes to previewing those UIs. Jetpack Compose’s tooling in Android Studio is truly powerful, but what about multiplatform Composables? Check out this talk for more details on the topic! Practical Tips and Tricks to Improve Your Compose Previews https://istvanjuhos.dev/talks/20241116-practical-tips-and-tricks-to-improve-your-compose-previews/ Sat, 16 Nov 2024 01:00:00 +0100 https://istvanjuhos.dev/talks/20241116-practical-tips-and-tricks-to-improve-your-compose-previews/ Jetpack Compose Preview is a powerful tool that provides real-time feedback on how our composables are rendered and even on how they behave and animate in certain conditions. In this talk, I&rsquo;ll give you some tips and tricks on how we can improve our experience with Previews. Practical Tips and Tricks to Improve Your Compose Previews https://istvanjuhos.dev/talks/20240916-practical-tips-and-tricks-to-improve-your-compose-previews/ Mon, 16 Sep 2024 15:30:00 +0200 https://istvanjuhos.dev/talks/20240916-practical-tips-and-tricks-to-improve-your-compose-previews/ Jetpack Compose Preview is a powerful tool that provides real-time feedback on how our composables are rendered and even on how they behave and animate in certain conditions. In this talk, I&rsquo;ll give you some tips and tricks on how we can improve our experience with Previews. Practical Tips and Tricks to Improve Your Compose Previews https://istvanjuhos.dev/talks/20240730-practical-tips-and-tricks-to-improve-your-compose-previews/ Tue, 30 Jul 2024 14:22:30 +0200 https://istvanjuhos.dev/talks/20240730-practical-tips-and-tricks-to-improve-your-compose-previews/ Jetpack Compose Preview is a powerful tool that provides real-time feedback on how our composables are rendered and even on how they behave and animate in certain conditions. In this talk, I&rsquo;ll give you some tips and tricks on how we can improve our experience with Previews. Practical Tips and Tricks to Improve Your Compose Previews https://istvanjuhos.dev/talks/2024/20240704-practical-tips-and-tricks-to-improve-your-compose-previews/ Thu, 04 Jul 2024 14:00:00 +0200 https://istvanjuhos.dev/talks/2024/20240704-practical-tips-and-tricks-to-improve-your-compose-previews/ Jetpack Compose Preview is a powerful tool that provides real-time feedback on how our composables are rendered and even on how they behave and animate in certain conditions. In this talk, I&rsquo;ll give you some tips and tricks on how we can improve our experience with Previews. Compose Migration Side Effects - What Can Go Wrong? https://istvanjuhos.dev/talks/2024/20240524-compose-migration-side-effects-what-can-go-wrong/ Fri, 24 May 2024 12:00:01 +0200 https://istvanjuhos.dev/talks/2024/20240524-compose-migration-side-effects-what-can-go-wrong/ Android development has been revolving around the adoption of Compose lately. Compose is still the shiny, new, declarative - and now also multiplatform - way of building UIs. However, there are tons of projects out there that were built with Views, UIKit, or other favored UI solutions of platforms, while engineers also accumulated knowledge about all the quirks, issues, and workarounds with the framework they had to use or have chosen. In this talk, we&rsquo;ll look at some less-than-ideal scenarios when jumping on the Compose train in a project unprepared might cause long-term headaches, and how we can avoid falling into future traps that we unconsciously set up today. Compose Migration Side Effects - What Can Go Wrong? https://istvanjuhos.dev/talks/2024/20240430-compose-migration-side-effects-what-can-go-wrong/ Tue, 30 Apr 2024 18:55:00 +0200 https://istvanjuhos.dev/talks/2024/20240430-compose-migration-side-effects-what-can-go-wrong/ Android development has been revolving around the adoption of Compose lately. Compose is still the shiny, new, declarative - and now also multiplatform - way of building UIs. However, there are tons of projects out there that were built with Views, UIKit, or other favored UI solutions of platforms, while engineers also accumulated knowledge about all the quirks, issues, and workarounds with the framework they had to use or have chosen. In this talk, we&rsquo;ll look at some less-than-ideal scenarios when jumping on the Compose train in a project unprepared might cause long-term headaches, and how we can avoid falling into future traps that we unconsciously set up today. Compose-View Interop in Practice https://istvanjuhos.dev/talks/2024/20240423-compose-view-interop-in-practice/ Tue, 23 Apr 2024 09:30:00 +0200 https://istvanjuhos.dev/talks/2024/20240423-compose-view-interop-in-practice/ If you’re working on an already established, large code base, there’s a good chance that your screens still use Views to some extent. However, these screens should still be maintained to keep UI consistency across your app. In this talk, we’ll look at how we can support the maintenance of such screens and custom UI components with Jetpack Compose’s interoperability features while discussing the ups and downs of having hybrid UIs in our apps. Jetpack Compose - Az Android fejlesztés jövője https://istvanjuhos.dev/talks/2024/20240212-jetpack-compose-future-of-android-dev/ Mon, 12 Feb 2024 19:00:00 +0100 https://istvanjuhos.dev/talks/2024/20240212-jetpack-compose-future-of-android-dev/ A Cubix által szervezett webináriumon, illetve kerekasztal beszélgetlésen Bakos Gáborral, Ekler Péterrel, Péter Gergővel, és Váradi Gáborral beszélgettünk a Jetpack Compose használatáról és helyzetéről az Android fejlesztői világban. Compose-View Interop in Practice https://istvanjuhos.dev/talks/2023/20231202-compose-view-interop-in-practice/ Sat, 02 Dec 2023 00:00:00 +0100 https://istvanjuhos.dev/talks/2023/20231202-compose-view-interop-in-practice/ <h2 id="abstract">Abstract</h2> <p>If you’re working on an already established, large code base, there’s a good chance that your screens still use Views to some extent. However, these screens should still be maintained to keep UI consistency across your app. In this talk, we’ll look at how we can support the maintenance of such screens and custom UI components with Jetpack Compose’s interoperability features while discussing the ups and downs of having hybrid UIs in our apps.</p> Adopting Jetpack Compose Safely https://istvanjuhos.dev/talks/2023/20230929-adopting-jetpack-compose-safely/ Fri, 29 Sep 2023 00:00:00 +0100 https://istvanjuhos.dev/talks/2023/20230929-adopting-jetpack-compose-safely/ <div> <blockquote> <b>Co-speaker</b> - <a href=https://www.marcogomiero.com/>Marco Gomiero</a> </blockquote> </div> <h2 id="abstract">Abstract</h2> <p>If you want to start adopting Jetpack Compose in an existing, large codebase worked on by multiple teams, you can’t just add the dependency and start creating composables right away. In such projects, there are already established conventions and architectural decisions that such a revolutionary change might disrupt.</p> <p>In this talk, we will share our journey of integrating Compose into the TIER app while offering practical tips for tackling common challenges that arise when working with large-scale codebases, like:</p> Adopting Jetpack Compose Safely https://istvanjuhos.dev/talks/2023/20230706-adopting-jetpack-compose-safely/ Thu, 06 Jul 2023 00:00:00 +0200 https://istvanjuhos.dev/talks/2023/20230706-adopting-jetpack-compose-safely/ <div> <blockquote> <b>Co-speaker</b> - <a href=https://www.marcogomiero.com/>Marco Gomiero</a> </blockquote> </div> <h2 id="abstract">Abstract</h2> <p>If you want to start adopting Jetpack Compose in an existing, large codebase worked on by multiple teams, you can’t just add the dependency and start creating composables right away. In such projects, there are already established conventions and architectural decisions that such a revolutionary change might disrupt.</p> <p>In this talk, we will share our journey of integrating Compose into the TIER app while offering practical tips for tackling common challenges that arise when working with large-scale codebases, like:</p> Compose-View Interop in Practice https://istvanjuhos.dev/talks/2023/20230609-compose-view-interop-in-practice/ Fri, 09 Jun 2023 00:00:00 -0700 https://istvanjuhos.dev/talks/2023/20230609-compose-view-interop-in-practice/ If you’re working on an already established, large code base, there’s a good chance that your screens still use Views to some extent. However, these screens should still be maintained to keep UI consistency across your app. In this talk, we’ll look at how we can support the maintenance of such screens and custom UI components with Jetpack Compose’s interoperability features while discussing the ups and downs of having hybrid UIs in our apps. Composing a Design System https://istvanjuhos.dev/talks/2023/20230530-composing-a-design-system/ Tue, 30 May 2023 00:00:00 +0200 https://istvanjuhos.dev/talks/2023/20230530-composing-a-design-system/ <h2 id="abstract">Abstract</h2> <p>At TIER, we took the leap and adopted Jetpack Compose into our quite large code base. One of this journey&rsquo;s most significant milestones was having our design system, Octopus, implemented in pure Compose UI. In this talk, I present how we built Octopus with Compose, what we gained by reimplementing components instead of wrapping existing Views in <code>AndroidView</code>, and how we managed to support the still-View-based parts of our app with Compose.</p> How to Test Your Compose UI (short) https://istvanjuhos.dev/talks/2023/20230204-how-to-test-your-compose-ui/ Sat, 04 Feb 2023 00:00:00 +0100 https://istvanjuhos.dev/talks/2023/20230204-how-to-test-your-compose-ui/ <blockquote> <p>Note: This is a shortened version of <a href="https://istvanjuhos.dev/talks/2022/20221005-how-to-test-your-compose-ui/">How to Test Your Compose UI</a>.</p></blockquote> <h2 id="abstract">Abstract</h2> <p>While Compose is easy to adopt, not creating legacy code right at the start of such a journey requires extra planning, awareness, and, most importantly, testing. We&rsquo;ll have a look at how we can test pure Compose UIs as well as hybrid ones that have Views and composables too.</p> <p>In this talk, we&rsquo;ll learn what the semantics tree is, its relation to the composition, how we can manipulate it in composables using the Semantics modifier, how we can implement composables with testability in mind, and how we can test pure Compose, and hybrid UIs.</p> Working with Workmanager https://istvanjuhos.dev/talks/2020/20200130-working-with-workmanager/ Mon, 30 Jan 2023 00:00:00 +0100 https://istvanjuhos.dev/talks/2020/20200130-working-with-workmanager/ A talk about the basic concepts of WorkManager and how to use the library. Given at the Android Budapest Meetup in 2019. Composing an Octopus https://istvanjuhos.dev/talks/2022/20221201-composing-an-octopus/ Thu, 01 Dec 2022 00:00:00 +0100 https://istvanjuhos.dev/talks/2022/20221201-composing-an-octopus/ <h2 id="abstract">Abstract</h2> <p>At TIER, we’re in the process of adopting Jetpack Compose into our quite large code base. One of the most significant milestones of this journey was to have our design system, Octopus, implemented in pure Compose UI. In this talk, I’ll present how we built Octopus Compose, and what we gained by reimplementing components instead of wrapping existing Views in AndroidView.</p> <div> <h2>Check out the slides</h2> <div> <iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/40938d4494204828bca99c90cf17a8f0" title="Composing an Octopus" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 720px; height: 405px;" data-ratio="1.7777777777777777"></iframe> </div> </div> <div> <h2>Watch this talk</h2> <div> <iframe width="720" height="405" src="https://www.youtube.com/embed/ajYg_HaDfys" title="Composing an Octopus • István Juhos (TIER)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> </div> </div> <h2>Resources</h2> <ul class="resource-list"> <li> <p> <strong>Jetpack Compose design system docs</strong> <br> <a href=https://developer.android.com/jetpack/compose/designsystems>https://developer.android.com/jetpack/compose/designsystems</a> </p> Adopting Jetpack Compose Safely https://istvanjuhos.dev/talks/2022/20221124-adopting-jetpack-compose-safely/ Thu, 24 Nov 2022 00:00:00 +0100 https://istvanjuhos.dev/talks/2022/20221124-adopting-jetpack-compose-safely/ <h2 id="abstract">Abstract</h2> <p>If you want to start adopting Jetpack Compose in an existing, large codebase, worked on by multiple teams, you can’t just add the dependency and start creating composables right away.</p> <p>In such projects, there are already established conventions, processes, and architecture decisions that will be disrupted with such a revolutionary change as Compose, since it requires a mental model shift towards declarative patterns.</p> <p>In this talk, we will show the process that led us to a harmless integration of Compose into the TIER application, focusing on tooling, architectural changes, the evolution of our design system, and how we managed to get our developers onboard for all of the above.</p> How to Test Your Compose UI https://istvanjuhos.dev/talks/2022/20221005-how-to-test-your-compose-ui/ Wed, 05 Oct 2022 00:00:00 +0100 https://istvanjuhos.dev/talks/2022/20221005-how-to-test-your-compose-ui/ <h2 id="abstract">Abstract</h2> <p>While Compose is easy to adopt, not creating legacy code right at the start of such a journey requires some extra planning, awareness, and, most importantly, testing. We&rsquo;ll have a look at how we can test pure Compose UIs as well as hybrid ones that have Views and composables too.</p> <p>In this talk, we&rsquo;ll learn what the semantics tree is, what is its relation to the composition, how we can manipulate it in composables using the Semantics modifier, how we can implement composables with testability in mind, and how we can test pure Compose and hybrid UIs.</p> How to Test Your Compose UI https://istvanjuhos.dev/talks/2022/20220707-how-to-test-your-compose-ui/ Thu, 07 Jul 2022 00:00:00 +0100 https://istvanjuhos.dev/talks/2022/20220707-how-to-test-your-compose-ui/ <h2 id="abstract">Abstract</h2> <p>While Compose is easy to adopt, not creating legacy code right at the start of such a journey requires some extra planning, awareness, and most importantly, testing. We&rsquo;ll have a look at how we can test pure Compose UIs as well as hybrid ones that have Views and composables too. In this talk, we&rsquo;ll learn what the semantics tree is, what is its relation to the composition, how we can manipulate it in composables using the Semantics modifier, how we can implement composables with testability in mind, and how we can test pure Compose and hybrid UIs.</p> Flutter Under the UI https://istvanjuhos.dev/talks/2022/20220526-flutter-under-the-ui/ Thu, 26 May 2022 00:00:00 +0100 https://istvanjuhos.dev/talks/2022/20220526-flutter-under-the-ui/ <h2 id="abstract">Abstract</h2> <p>As Flutter app developers, we should take care of much more than UI tasks while developing applications for supported platforms. UI and app state handling, dependency injection, networking, and so on are all on the menu, just as in any other app development domain. This talk highlights some frequently used architectures and packages preferred by the Flutter community itself. Presented at the May 2022 installment of the HWSW free! meetup series (online) in Hungarian.</p> How to Test Your Compose UI https://istvanjuhos.dev/talks/2022/20220503-how-to-test-your-compose-ui/ Tue, 03 May 2022 00:00:00 +0100 https://istvanjuhos.dev/talks/2022/20220503-how-to-test-your-compose-ui/ <h2 id="abstract">Abstract</h2> <p>Jetpack Compose is the new and shiny framework that can finally replace XMLs and the View system in Android projects. While Compose is easy to adopt, not creating legacy code right at the start of such a journey requires some extra planning, awareness, and testing. In this talk, you&rsquo;ll have a quick look at how you can set up, write, and run Compose UI tests and how to write testable composables.</p> Jetpack Compose - The Future of Android Development https://istvanjuhos.dev/talks/2022/20220420-jetpack-compose-the-future-of-android-development/ Wed, 20 Apr 2022 00:00:00 +0100 https://istvanjuhos.dev/talks/2022/20220420-jetpack-compose-the-future-of-android-development/ <h2 id="abstract">Abstract</h2> <p>In this talk, we take a glimpse at what Jetpack Compose is in a nutshell, how we can start building an app with it, and how we can introduce it to an existing project. Presented at a Webuni Android webinar on 2022.04.20., online, in Hungarian.</p> <div> <h2>Check out the slides</h2> <div> <iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/99e9ff8e4d994f3e94c4a4a6f948120f" title="Jetpack Compose - The Future of Android Development (Extended)" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 720px; height: 405px;" data-ratio="1.78343949044586"></iframe> </div> </div> <div> <h2>Watch this talk</h2> <div> <iframe width="720" height="405" src="https://www.youtube.com/embed/gQBOYHHHBhA" title="Online webinárium az Android fejlesztés jövőjéről: Jetpack Compose" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> </div> </div> <h2>Resources</h2> <ul class="resource-list"> <li> <p> <strong>The demo project</strong> <br> <a href=https://github.com/stewemetal/android-view-vs-compose>https://github.com/stewemetal/android-view-vs-compose</a> </p> Jetpack Compose - The Future of Android UI in a Nutshell https://istvanjuhos.dev/talks/2021/20211208-jetpack-compose-the-future-of-android-ui-in-a-nutshell/ Wed, 08 Dec 2021 00:00:00 +0100 https://istvanjuhos.dev/talks/2021/20211208-jetpack-compose-the-future-of-android-ui-in-a-nutshell/ <h2 id="abstract">Abstract</h2> <p>In this talk, we take a glimpse at what Jetpack Compose is in a nutshell, and how will it transform how we write Android apps in the near future. Presented at the HWSW free! mobile development meetup on 2021.12.08., online, in Hungarian.</p> <div> <h2>Check out the slides</h2> <div> <iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/4fd47a960cd74a5da559556dc300180f" title="Jetpack Compose - The Future of the Android UI in a Nutshell" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 720px; height: 405px;" data-ratio="1.78343949044586"></iframe> </div> </div> <div> <h2>Watch this talk</h2> <div> <iframe width="720" height="405" src="https://www.youtube.com/embed/W_s0h4frgLw" title="Jetpack Compose - az Android UI jövője dióhéjban" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> </div> </div> <h2>Resources</h2> <ul class="resource-list"> <li> <p> <strong>The demo project</strong> <br> <a href=https://github.com/stewemetal/hwsw_meetup_compose_demo>https://github.com/stewemetal/hwsw_meetup_compose_demo</a> </p> Flutter App Architektúrák https://istvanjuhos.dev/talks/2020/20200721-flutter-app-architekturak/ Tue, 21 Jul 2020 00:00:00 +0100 https://istvanjuhos.dev/talks/2020/20200721-flutter-app-architekturak/ Flutter seems to be all about Widgets, especially UI Widgets. But as app developers, we should take care about much more while developing applications on any platform. App Architecture Concept in Flutter https://istvanjuhos.dev/talks/2020/20200206-app-architecture-concept-in-flutter/ Thu, 06 Feb 2020 00:00:00 +0100 https://istvanjuhos.dev/talks/2020/20200206-app-architecture-concept-in-flutter/ A talk about an MVI-ish, MVVM-ish, clean Flutter app architecture concept. Given at the Flutter Budapest Meetup in 2020. Simplifying Background Tasks with Workmanager https://istvanjuhos.dev/talks/2019/20190507-simplifying-background-tasks-with-workmanager/ Tue, 07 May 2019 00:00:00 +0100 https://istvanjuhos.dev/talks/2019/20190507-simplifying-background-tasks-with-workmanager/ This talk is a short intro to the WorkManager Android library. Given at Google I/O Extended, Budapest, in 2019.