video content http://feed.informer.com/digests/IXOCOEVQJK/feeder video content Respective post owners and feed distributors Thu, 26 May 2016 12:57:40 +0000 Feed Informer http://feed.informer.com/ How Mecha BREAK is driving PC-only growth on Google Play Games http://android-developers.googleblog.com/2025/06/how-mecha-break-is-driving-pc-only-growth-google-play-games.html Android Developers Blog urn:uuid:778609b0-28bc-d7ed-87f5-1fcee667ced0 Wed, 25 Jun 2025 17:19:15 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhSUth8Cfei07GK2l51NX2C3YZtpNSL5boOVFQLAwGomJ_ofC2hBgZWLrRHBeAYpVSK18XagoymwSCydKpT3vGNsZD-D1Gv4NxQUSw_C1d6L6V57lplspNoDyEjT8PcMZynJjTWZ7MYIaoQlibQZxHMoXAlpNV7fbYZAQ0H2W2Y9KAPNj3G_SDjvExxA/s1600/MechaBreak_Game_Footage_1200%E2%80%8A%C3%97%E2%80%8A675_25FPS%20low.gif" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhSUth8Cfei07GK2l51NX2C3YZtpNSL5boOVFQLAwGomJ_ofC2hBgZWLrRHBeAYpVSK18XagoymwSCydKpT3vGNsZD-D1Gv4NxQUSw_C1d6L6V57lplspNoDyEjT8PcMZynJjTWZ7MYIaoQlibQZxHMoXAlpNV7fbYZAQ0H2W2Y9KAPNj3G_SDjvExxA/s1600/MechaBreak_Game_Footage_1200%E2%80%8A%C3%97%E2%80%8A675_25FPS%20low.gif" style="display: none;" /> <em>Posted by Kosuke Suzuki – Director, Games on Google Play</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL08W-jxKKecewII5TdqX34k7pNAtle6IRXK9cGLQcR5hUVEP7FjuojsTg_h9HaCemFud6Tnqhx1b7USsjbpxHKOwvnEpi49gDaNMJFXkuUeTwJ4-WcIlLne6QA1DTl_fuGIJ5Mrr_Ar-pC3E4gmdTHK44nhgSJ2jgSCN2guw-LE8atMhuvqI49qEi1lo/s1600/Mecha-Break-Case-Study-banner.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL08W-jxKKecewII5TdqX34k7pNAtle6IRXK9cGLQcR5hUVEP7FjuojsTg_h9HaCemFud6Tnqhx1b7USsjbpxHKOwvnEpi49gDaNMJFXkuUeTwJ4-WcIlLne6QA1DTl_fuGIJ5Mrr_Ar-pC3E4gmdTHK44nhgSJ2jgSCN2guw-LE8atMhuvqI49qEi1lo/s1600/Mecha-Break-Case-Study-banner.png" /></a> <p>On July 1, Amazing Seasun Games is set to unveil its highly anticipated action shooting game - <i><a href="https://play.google.com/pc-store/games/details?id=com.xishanju.mechabreak" target="_blank">Mecha BREAK</a></i>, with a multiplatform launch across PC and Console. A key to their PC growth strategy is <a href="https://play.google.com/googleplaygames" target="_blank">Google Play Games on PC</a>, enabling the team to build excitement with a pre-registration campaign, maximize revenue with PC earnback, and ensure a secure, top-tier experience on PC.</p> <h2><span style="font-size: x-large;">Building momentum with pre-registration</span></h2> <p>With a legacy of creating high-quality games since 1995, Amazing Seasun Games has already seen Mecha BREAK attract over 3.5 million players during the last beta test. To build on this momentum, the studio is bringing their game to Google Play Games on PC to open pre-registration and connect with its massive player audience.</p> <blockquote><i>"We were excited to launch on Google Play Games on PC. We want to make sure all players can enjoy the Mecha BREAK experience worldwide."</i> <div><b>- Kris Kwok, Executive Producer of Mecha BREAK and CEO of Amazing Seasun Games</b></div></blockquote> <image><div style="text-align: center;"><img alt="screenshot of Mecha BREAK's pre-registration on Google Play Games on PC homepage" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxb_EeR9rPuh51QH-bwuWo4nMeyAmO7wCQjO_SmumdZC3GfFwzPYOWnLgPG79WPSCTn0rrbX3NpsFlybatvY9-OAWco1AD4NxDaiR8mnGeUWPVbBfc3MRHEJmO4KhvEclT3-Z9y1X4H-k23dFE9HvIfDWJol2qNhEWQf0SzPhzuE4Nde8Jj7GstBEcbA/s1600/Mecha-Break-Case-Study-meta.png" width="100%" /></div><imgcaption><center><em>Mecha BREAK pre-registration on Google Play Games on PC homepage</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Accelerating growth with the Native PC program</span></h2> <p><i>Mecha BREAK</i>'s launch strategy includes leveraging the <a href="https://play.google.com/console/about/programs/gpgonpc/#bring-your-native-pc-games-to-the-google-play-ecosystem" target="_blank">native PC earnback</a>, a program that gives native PC developers the opportunity to unlock up to 15% in additional earnback.</p> <p>Beyond earnback, the program offers comprehensive support for PC game development, distribution, and growth. Developers can manage PC builds in Play Console, simplifying the process of packaging PC versions, configuring releases, and managing store listings. Now, you can also view PC-specific sales reports, providing a more precise analysis of your game's financial performance.</p> <h2><span style="font-size: x-large;">Delivering a secure and high quality PC experience</span></h2> <p>Mecha BREAK is designed to deliver an intense and high-fidelity experience on PC. Built on a cutting-edge, proprietary 3D engine, the game offers players three unique modes of fast-paced combat on land and in the air.</p> <ul><ul> <li><b>Diverse combat styles:</b> Engage in six-on-six hero battles, three-on-three matches, or the unique PvPvE extraction mode "Mashmak".</li></ul><ul> <li><b>Free customization options:</b> Create personalized characters with a vast array of colors, patterns and gameplay styles, from close-quarters brawlers to long-range tactical units.</li> </ul></ul> <image><div style="text-align: center;"><img alt="moving image of Mecha BREAK's gameplay on Google Play Games on PC" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhSUth8Cfei07GK2l51NX2C3YZtpNSL5boOVFQLAwGomJ_ofC2hBgZWLrRHBeAYpVSK18XagoymwSCydKpT3vGNsZD-D1Gv4NxQUSw_C1d6L6V57lplspNoDyEjT8PcMZynJjTWZ7MYIaoQlibQZxHMoXAlpNV7fbYZAQ0H2W2Y9KAPNj3G_SDjvExxA/s1600/MechaBreak_Game_Footage_1200%E2%80%8A%C3%97%E2%80%8A675_25FPS%20low.gif" width="100%" /></div><imgcaption><center><em>Mecha BREAK offers a high-fidelity experience on PC</em></center></imgcaption></image><br /> <p>The decision to integrate with Google Play Games on PC was driven by the platform's robust security infrastructure, including tools such as <a href="https://developer.android.com/google/play/integrity/overview" target="_blank">Play Integrity API</a>, supporting large-scale global games like <i>Mecha BREAK</i>.</p> <blockquote><i>"Mecha BREAK’s multiplayer setting made Google Play Games a strong choice, as we expect exceptional operational stability and performance. The platform also offers advanced malware protection and anti-cheat capabilities."</i> <div><b> - Kris Kwok, Executive Producer of Mecha BREAK and CEO of Amazing Seasun Games</b></div></blockquote> <h2><span style="font-size: x-large;">Bring your game to Google Play Games on PC</span></h2> <p>This year, the <a href="https://play.google.com/console/about/programs/gpgonpc/" target="_blank">native PC program</a> is open to all PC games, including PC-only titles. If you're ready to expand your game's reach and accelerate its growth, learn more about the eligibility requirements and how to join the program today.</p><br /> <div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/s260/lockup_ic_Google_Play_H_260x53px_clr.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="53" data-original-width="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/s200/lockup_ic_Google_Play_H_260x53px_clr.png" width="200" /></a></div> Android case study gaming Google Play Google Play Games Google Play Games on PC PC gaming Android Developers Top 3 Updates for Android Developer Productivity @ Google I/O ‘25 http://android-developers.googleblog.com/2025/06/top-3-updates-for-android-developer-productivity-google-io-25.html Android Developers Blog urn:uuid:c5ea7b74-505e-7aa7-6d28-9b7eef70519f Mon, 23 Jun 2025 17:01:00 +0000 <meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn1LmZMek4uOoAaQ_DeKUdl4rpvQcucsN7FfiN0VHWEtEnKMwAvmi9N5V71fj-nswyEqOKNI6ohM-taUgODmJh3WZLfO1W7imcMthWhkPDo8u4w0y22lipfPkMZzHRqW5Rt4A5tRfqQEa9L3SojYyC2EeFtWAfOwnWADRWX0WjEhwP1sP7Qn_LWt6p5FU/s1600/developer-productivity-meta.png"> <img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn1LmZMek4uOoAaQ_DeKUdl4rpvQcucsN7FfiN0VHWEtEnKMwAvmi9N5V71fj-nswyEqOKNI6ohM-taUgODmJh3WZLfO1W7imcMthWhkPDo8u4w0y22lipfPkMZzHRqW5Rt4A5tRfqQEa9L3SojYyC2EeFtWAfOwnWADRWX0WjEhwP1sP7Qn_LWt6p5FU/s1600/developer-productivity-meta.png"> <em>Posted by Meghan Mehta – Android Developer Relations Engineer</em> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="-GikklXjkgM" width="100%" height="413" src="https://www.youtube.com/embed/-GikklXjkgM"></iframe> <h2><span style="font-size: x-large">#1 Agentic AI is available for Gemini in Android Studio</span></h2> <p><a href="https://developer.android.com/gemini-in-android" target="_blank">Gemini in Android Studio</a> is the AI-powered coding companion that makes you more productive at every stage of the dev lifecycle. At Google I/O 2025 we previewed new agentic AI experiences: <a href="https://www.youtube.com/watch?v=mP1tlIKK0R4" target="_blank">Journeys</a> for Android Studio and <a href="https://www.youtube.com/watch?v=ubyPjBesW-8" target="_blank">Version Upgrade Agent</a>. These innovations make it easier for you to build and test code. We also announced <a href="https://android-developers.googleblog.com/2025/06/agentic-ai-takes-gemini-in-android-studio-to-next-level.html" target="_blank">Agent Mode</a>, which was designed to handle complex, multi-stage development tasks that go beyond typical AI assistant capabilities, invoking multiple tools to accomplish tasks on your behalf. We’re excited to see how you leverage these <a href="https://android-developers.googleblog.com/2025/06/agentic-ai-takes-gemini-in-android-studio-to-next-level.html" target="_blank">agentic AI experiences which are now available</a> in the latest <a href="https://developer.android.com/studio/preview" target="_blank">preview version of Android Studio</a> on the canary release channel.</p> <p>You can also use Gemini to automatically generate Jetpack Compose previews, as well as transform UI code using natural language, saving you time and effort. Give Gemini more context by attaching images and project files to your prompts, so you can get more relevant responses. And if you’re looking for enterprise-grade privacy and security features backed by Google Cloud, <a href="https://developer.android.com/gemini-for-businesses" target="_blank">Gemini in Android Studio for businesses</a> is now available. Developers and admins can unlock these features and benefits by subscribing to <a href="https://codeassist.google/products/business" target="_blank">Gemini Code Assist</a> Standard or Enterprise editions.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="KXKP2tDPW4Y" width="100%" height="413" src="https://www.youtube.com/embed/KXKP2tDPW4Y"></iframe> <h2><span style="font-size: x-large">#2 Build better apps faster with the latest stable release of Jetpack Compose</span></h2> <p><a href="https://developer.android.com/compose" target="_blank">Compose</a> is our recommended UI toolkit for Android development, used by over <a href="https://developer.android.com/compose#apps-built-with-compose" target="_blank">60% of the top 1K apps on Google Play</a>. We released a <a href="https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html" target="_blank">new version of our Jetpack Navigation library: Navigation 3</a>, which has been rebuilt from the ground up to give you more flexibility and control over your implementation. We unveiled the new <a href="https://m3.material.io/blog/building-with-m3-expressive?utm_source=blog&amp;utm_medium=motion&amp;utm_campaign=IO25" target="_blank">Material 3 Expressive</a> update which provides tools to enhance your product's appeal by harnessing emotional UX, making it more engaging, intuitive, and desirable for your users. The <a href="https://android-developers.googleblog.com/2025/04/whats-new-in-jetpack-compose-april-25.html" target="_blank">latest stable Bill of Materials (BOM) release</a> for Compose adds new features such as autofill support, auto-sizing text, visibility tracking, animate bounds modifier, accessibility checks in tests, and more! This release also includes significant rewrites and improvements to multiple sub-systems including semantics, focus and text optimizations.</p> <p>These optimizations are available to you with no code changes other than upgrading your Compose dependency. If you’re looking to try out new Compose functionality, the <a href="https://developer.android.com/develop/ui/compose/bom#what_if_i_want_to_try_out_alpha_or_beta_releases_of_compose_libraries" target="_blank">alpha BOM</a> offers new features that we're working on including pausable composition, updates to LazyLayout prefetch, context menus, and others. Finally, we've added Compose support to <a href="https://github.com/android/platform-samples/tree/main/samples/camera/camerax/src/main/java/com/example/platform/camerax/basic/CameraXBasic.kt" target="_blank">CameraX</a> and <a href="https://developer.android.com/media/media3/ui/compose" target="_blank">Media3</a>, making it easier to integrate camera capture and video playback into your UI with Compose idiomatic components.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="89UusPuz8q4" width="100%" height="413" src="https://www.youtube.com/embed/89UusPuz8q4"></iframe> <h2><span style="font-size: x-large">#3 The new Kotlin Multiplatform (KMP) shared module template helps you share business logic</span></h2> <p>KMP enables teams to deliver quality Android and iOS apps with less development time. The KMP ecosystem continues to grow: last year alone, over 900 new KMP libraries were published. At Google I/O we released a new Android Studio <a href="https://developer.android.com/kotlin/multiplatform/migrate" target="_blank">KMP shared module template</a> to help you craft and manage business logic, updated <a href="https://developer.android.com/kotlin/multiplatform" target="_blank">Jetpack libraries</a> and new codelabs (<a href="https://developer.android.com/codelabs/kmp-get-started" target="_blank">Getting started with Kotlin Multiplatform</a> and <a href="https://developer.android.com/codelabs/kmp-migrate-room" target="_blank">Migrating your Room database to KMP</a>) to help you get started with KMP. We also shared <a href="https://android-developers.googleblog.com/2025/05/android-kotlin-multiplatform-google-io-kotlinconf-2025.html" target="_blank">additional announcements</a> at KotlinConf.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="gP5Y-ct6QXI" width="100%" height="413" src="https://www.youtube.com/embed/gP5Y-ct6QXI"></iframe><br/> <p>Learn more about <a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc8I-QieOH8BHBdXBu_m6qB6" target="_blank">what we announced at Google I/O 2025</a> to help you build better apps, faster.</p> Android Android Development Android Studio Developer Productivity Gemini Google I/O Jetpack Compose Kotlin Multiplatform Android Developers Agentic AI takes Gemini in Android Studio to the next level http://android-developers.googleblog.com/2025/06/agentic-ai-takes-gemini-in-android-studio-to-next-level.html Android Developers Blog urn:uuid:cfd8403d-fab6-7a0d-75b0-7c0fe3a5864c Mon, 23 Jun 2025 17:00:00 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ3Vmdz70OU49TvruUdrMujKEp5PyTvsWP70-nQ071f5KypREpfA18DzW4dwp_WHeZSTW-uFaIL05ZnKNDCzdPr6og0GzN7rAiMOlO3xtxKpOWNQfca4oggymaio8cSpAkEX_pd70ltlPTpwvWx_MckKTdgYtgHG5G-mb-d5T-bIgBccX47QebsDzdxTQ/s1600/AgenticAI_SocialLoop_1280x720_01.gif" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ3Vmdz70OU49TvruUdrMujKEp5PyTvsWP70-nQ071f5KypREpfA18DzW4dwp_WHeZSTW-uFaIL05ZnKNDCzdPr6og0GzN7rAiMOlO3xtxKpOWNQfca4oggymaio8cSpAkEX_pd70ltlPTpwvWx_MckKTdgYtgHG5G-mb-d5T-bIgBccX47QebsDzdxTQ/s1600/AgenticAI_SocialLoop_1280x720_01.gif" style="display: none;" /> <em>Posted by <a href="https://x.com/sandhyam1312" target="_blank">Sandhya Mohan</a> – Product Manager, and <a href="https://bsky.app/profile/josealcerreca.bsky.social" target="_blank">Jose Alcérreca</a> – Developer Relations Engineer </em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAN3pixiL5jrI5QCjO0VlwcuXbmdV8VNvHkVDqRmGnup7p98ECZfvS0F1wg1JoHFuyIlYLwJdty5Mcs2y9e0JGbP3sbEd5rXIPo5oKtn9bPOsNzUde_ZaKd3adWMPLernVzOTJsfitBsj3JSYlzKs9EoUPDW6vFmvw_0-tln1c37X3XhC_4NjXl_tiCqI/s1600/agentic-ai-gemini-android-studio-banner.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAN3pixiL5jrI5QCjO0VlwcuXbmdV8VNvHkVDqRmGnup7p98ECZfvS0F1wg1JoHFuyIlYLwJdty5Mcs2y9e0JGbP3sbEd5rXIPo5oKtn9bPOsNzUde_ZaKd3adWMPLernVzOTJsfitBsj3JSYlzKs9EoUPDW6vFmvw_0-tln1c37X3XhC_4NjXl_tiCqI/s1600/agentic-ai-gemini-android-studio-banner.png" /></a> <p>Software development is undergoing a significant evolution, moving beyond reactive assistants to <b>intelligent agents</b>. These agents don't just offer suggestions; they can <b>create execution plans</b>, utilize external tools, and make complex, multi-file changes. This results in a more capable AI that can <b>iteratively solve challenging problems</b>, fundamentally changing how developers work.</p> <p>At Google I/O 2025, we <a href="https://youtu.be/KXKP2tDPW4Y?si=y1xMu4MTESO420VD&amp;t=895" target="_blank">offered a glimpse into our work</a> on agentic AI in Android Studio, the integrated development environment (IDE) focused on Android development. We showcased that by combining agentic AI with the built-in portfolio of tools inside of Android Studio, the IDE is able to assist you in developing Android apps in ways that were never possible before. We are now incredibly excited to announce the next frontier in Android development with <b>the availability of 'Agent Mode' for Gemini in Android Studio</b>.</p> <p>These features are available in the latest <a href="https://developer.android.com/studio/preview" target="_blank">Android Studio Narwhal Feature Drop Canary</a> release, and will be rolled out to <a href="https://developer.android.com/gemini-for-businesses" target="_blank">business tier subscribers</a> in the coming days. As with all new Android Studio features, we invite developers to <a href="https://developer.android.com/studio/report-bugs" target="_blank">provide feedback</a> to direct our development efforts and ensure we are creating the tools you need to build better apps, faster.</p> <h2><span style="font-size: x-large;">Agent Mode</span></h2> <p>Gemini in Android Studio's <a href="http://d.android.com/studio/preview/gemini/agent-mode" target="_blank">Agent Mode</a> is a new experimental capability designed to handle complex development tasks that go beyond what you can experience by just chatting with Gemini.</p> <p>With Agent Mode, you can describe a complex goal in natural language — from generating unit tests to complex refactors — and the agent formulates an execution plan that can span multiple files in your project and executes under your direction. Agent Mode uses a range of IDE tools for reading and modifying code, building the project, searching the codebase and more to help Gemini complete complex tasks from start to finish with minimal oversight from you.</p> <p>To use Agent Mode, click Gemini in the sidebar, then select the Agent tab, and describe a task you'd like the agent to perform. Some examples of tasks you can try in Agent Mode include:</p> <ul><ul> <li>Build my project and fix any errors</li> <li>Extract any hardcoded strings used across my project and migrate to strings.xml</li> <li>Add support for dark mode to my application</li> <li>Given an attached screenshot, implement a new screen in my application using Material 3</li> </ul></ul> <p>The agent then suggests edits and iteratively fixes bugs to complete tasks. You can review, accept, or reject the proposed changes along the way, and ask the agent to iterate on your feedback.</p> <image><div style="text-align: center;"><img alt="moving image showing Gemini breaking tasks down into a plan with simple steps, and the list of IDE tools it needs to complete each step" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_iWsYepnNDH7Gj19bjf08zQvaLX81l-vqUm7Oaw-rAb8Dzw23Fx_hpexPG-RjUs8jGdhnODTL6JpLY6A5n5KuyKct4Ah9rcRfBvWDV4eWNWKeAMdBPP-CPNB9q0jFZC1OTcZg1vH_WI-ivSr508alXcWavPHA5V7d_SDSTQZ4_numO5qVCrFlqMO7RtQ/s1600/gemini-in-android-studio.gif" /></div><imgcaption><center><em>Gemini breaks tasks down into a plan with simple steps. It also shows the list of IDE tools it needs to complete each step.</em></center></imgcaption></image><br /> <p>While powerful, you are firmly in control, with the ability to review, refine and guide the agent’s output at every step. When the agent proposes code changes, you can choose to accept or reject them.</p> <image><div style="text-align: center;"><img alt="screenshot of Gemini in Android Studio showing the Agent prompting the user to accept or reject a change" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_MOdlWuZ1kh64G_VA_8U2-MRWHU7zOs3RS9ir8DLfnAJTf3OiCGTqwuKtq8pNeawRtHUUQasiHRpRKX7uu5xfh0jXL276SpjL-gmPZQu_1Nr-lD5IESidnO_EfuI-XPW2b-D2anB5ENSVXUCUVwuKWGYKLrNSxtfjKDIoo2IsaGivL-DvFbhjKbq9QNk/s1600/agent-in-gemini-android-studio.png" /></div><imgcaption><center><em>The Agent waits for the developer to approve or reject a change.</em></center></imgcaption></image><br /> <p>Additionally, you can enable “Auto-approve” if you are feeling lucky #GenerativeAI Agentic AI Android Studio app development code completion Developer Tools Gemini Narwhal Canary Android Developers Top 3 things to know for AI on Android at Google I/O ‘25 http://android-developers.googleblog.com/2025/06/top-3-updates-for-ai-on-android-google-io.html Android Developers Blog urn:uuid:f8cac2fb-68fe-208c-76c7-9336a60a482b Mon, 23 Jun 2025 16:59:48 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGrbvjPNwEv5vrSrbuXf6hzYltmdc-6vYGCwiILsy8AB8SZQBiLimrvJaGham-g7COGhcJLle_PkZY6cvIOU4lTqSqZbNRiGNv56eQwTHcR9g5QZUUYuogdCAEk5-5aXlMDaRSH2irUF76DehM0CQ0mJ0zkUfpzNePmViElp4SivlJGqi03CrIYbXTUAU/s1600/AI-on-Android.gif" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGrbvjPNwEv5vrSrbuXf6hzYltmdc-6vYGCwiILsy8AB8SZQBiLimrvJaGham-g7COGhcJLle_PkZY6cvIOU4lTqSqZbNRiGNv56eQwTHcR9g5QZUUYuogdCAEk5-5aXlMDaRSH2irUF76DehM0CQ0mJ0zkUfpzNePmViElp4SivlJGqi03CrIYbXTUAU/s1600/AI-on-Android.gif" style="display: none;" /> <em>Posted by Kateryna Semenova – Sr. Developer Relations Engineer</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOX2BHr_Vzaux-H3QG3ocu_7B6V6uT2JsGWJv7B_2V2I-1DBa6V6vTD5DwsI-2p0gI3d8oo7CvisFNSWtqSj6InVlxsGiPAP9eJyaveQGKgoWgGyzTWbdALv0sWXL2qzqN6RDkpG4BcIISye0Iu0aemgtJp8YhxYZ4HtG0TFOLYKrbS1A6L0qtLkcylxQ/s1600/android-spotlight-ai-on-android-banner.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOX2BHr_Vzaux-H3QG3ocu_7B6V6uT2JsGWJv7B_2V2I-1DBa6V6vTD5DwsI-2p0gI3d8oo7CvisFNSWtqSj6InVlxsGiPAP9eJyaveQGKgoWgGyzTWbdALv0sWXL2qzqN6RDkpG4BcIISye0Iu0aemgtJp8YhxYZ4HtG0TFOLYKrbS1A6L0qtLkcylxQ/s1600/android-spotlight-ai-on-android-banner.png" /></a> <p>AI is reshaping how users interact with their favorite apps, opening new avenues for developers to create intelligent experiences. At Google I/O, we showcased how Android is making it easier than ever for you to build smart, personalized and creative apps. And we’re committed to providing you with the tools needed to innovate across the full development stack in this evolving landscape.</p> <p>This year, we focused on making AI accessible across the spectrum, from on-device processing to cloud-powered capabilities. Here are the top 3 announcements you need to know for building with AI on Android from Google I/O ‘25:</p> <h2><span style="font-size: x-large;">#1 Leverage the efficiency of Gemini Nano for on-device AI experiences</span></h2> <iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/mP9QESmEDls" width="100%" youtube-src-id="mP9QESmEDls"></iframe> <p>For on-device AI, we <a href="https://android-developers.googleblog.com/2025/05/on-device-gen-ai-apis-ml-kit-gemini-nano.html" target="_blank">announced a new set of ML Kit GenAI APIs</a> powered by Gemini Nano, our most efficient and compact model designed and optimized for running directly on mobile devices. These APIs provide high-level, easy integration for common tasks including text summarization, proofreading, rewriting content in different styles, and generating image description. Building on-device offers significant benefits such as local data processing and offline availability at no additional cost for inference. To start integrating these solutions explore the <a href="http://goo.gle/mlkit-genai" target="_blank">ML Kit GenAI documentation</a>, the <a href="https://github.com/android/ai-samples/tree/main/ai-catalog" target="_blank">sample on GitHub</a> and watch the "<a href="https://youtu.be/mP9QESmEDls?feature=shared" target="_blank">Gemini Nano on Android: Building with on-device GenAI</a>" talk.</p> <h2><span style="font-size: x-large;">#2 Seamlessly integrate on-device ML/AI with your own custom models</span></h2> <iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/xLmJJk1gbuE" width="100%" youtube-src-id="xLmJJk1gbuE"></iframe> <p><a href="https://ai.google.dev/edge" target="_blank">The Google AI Edge</a> platform enables building and deploying a wide range of pretrained and custom models on edge devices and supports various frameworks like TensorFlow, PyTorch, Keras, and Jax, allowing for more customization in apps. The platform now also offers <a href="https://developers.googleblog.com/en/litert-maximum-performance-simplified" target="_blank">improved support</a> of on-device hardware accelerators and a new <a href="https://cloud.google.com/blog/products/ai-machine-learning/ai-edge-portal-brings-on-device-ml-testing-at-scale" target="_blank">AI Edge Portal</a> service for broad coverage of on-device benchmarking and evals. If you are looking for GenAI language models on devices where Gemini Nano is not available, you can use other open models via the <a href="https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference/android" target="_blank">MediaPipe LLM Inference API</a>.</p> <p>Serving your own custom models on-device can pose challenges related to handling large model downloads and updates, impacting the user experience. To improve this, we’ve launched <a href="https://developer.android.com/google/play/on-device-ai" target="_blank">Play for On-Device AI</a> in beta. This service is designed to help developers manage custom model downloads efficiently, ensuring the right model size and speed are delivered to each Android device precisely when needed.</p> <p>For more information watch “<a href="https://www.youtube.com/watch?v=xLmJJk1gbuE" target="_blank">Small language models with Google AI Edge</a>” talk.</p> <h2><span style="font-size: x-large;">#3 Power your Android apps with Gemini Flash, Pro and Imagen using Firebase AI Logic </span></h2> <iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/U8Nb68XsVY4" width="100%" youtube-src-id="U8Nb68XsVY4"></iframe> <p>For more advanced generative AI use cases, such as complex reasoning tasks, analyzing large amounts of data, processing audio or video, or generating images, you can use larger models from the Gemini Flash and Gemini Pro families, and Imagen running in the cloud. These models are well suited for scenarios requiring advanced capabilities or multimodal inputs and outputs. And since the AI inference runs in the cloud any Android device with an internet connection is supported. They are easy to integrate into your Android app by using <a href="http://developer.android.com/ai/gemini" target="_blank">Firebase AI Logic</a>, which provides a simplified, secure way to access these capabilities without managing your own backend. Its SDK also includes support for conversational AI experiences using the <a href="https://firebase.google.com/docs/vertex-ai/live-api" target="_blank">Gemini Live API</a> or generating custom contextual visual assets with <a href="http://d.android.com/ai/imagen" target="_blank">Imagen</a>. To learn more, check out our <a href="https://github.com/android/ai-samples/tree/main/ai-catalog" target="_blank">sample on GitHub</a> and watch "<a href="https://www.youtube.com/watch?v=U8Nb68XsVY4" target="_blank">Enhance your Android app with Gemini Pro and Flash, and Imagen</a>" session.</p> <p>These powerful AI capabilities can also be brought to life in immersive Android XR experiences. You can find corresponding <a href="http://d.android.com/develop/xr" target="_blank">documentation</a>, <a href="http://goo.gle/android-xr-samples" target="_blank">samples</a> and the technical session: "<a href="https://www.youtube.com/watch?v=YYMt7Ddzz6Y&amp;list=PLWz5rJ2EKKc_HBZR5747Ux5mp8M27xgb0" target="_blank">The future is now, with Compose and AI on Android XR</a>".</p> <image><div style="text-align: center;"><img alt="Flow cahrt demonstrating Firebase AI Logic integration architecture" border="0" height="399" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlxyIIF3CslZqqFJmWV3bRwrvarojbJBLpu3dZJhgwVHbVtkZP0RwhaasWoakGVkVkzTNU522cbjuOopVVP7WiWa2GdGNoV9gBNiZ0dPpClFULesarMqpyqFgqAU8CM7tsPNdCIg5SJLuytl2_RPlM8LZafBz5oFKK5GZCSUjtBQQKQMLkXRIuQ-r-TiI/w640-h399/Firebase-AI-Logic-integration-architecture.jpg" width="640" /></div><imgcaption><center><em><b>Figure 1:</b> Firebase AI Logic integration architecture</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Get inspired and start building with AI on Android today</span></h2> <p>We released a new <a href="https://android-developers.googleblog.com/2025/05/androidify-building-ai-driven-experiences-jetpack-compose-gemini-camerax.html" target="_blank">open source app, Androidify</a>, to help developers build AI-driven Android experiences using Gemini APIs, ML Kit, Jetpack Compose, CameraX, Navigation 3, and adaptive design. Users can create personalized Android bot with Gemini and Imagen via the Firebase AI Logic SDK. Additionally, it incorporates ML Kit pose detection to detect a person in the camera viewfinder. The full code sample is <a href="http://github.com/android/androidify" target="_blank">available on GitHub</a> for exploration and inspiration. Discover additional AI examples in our <a href="https://github.com/android/ai-samples/tree/main/ai-catalog" target="_blank">Android AI Sample Catalog</a>.</p> <image><div style="text-align: center;"><img alt="moving image of the Androidify app on a mobile device, showing a fair-skinned woman with blond hair wearing a red jacket with black shirt and pants and a pair of sunglasses converting into a 3D image of a droid with matching skin tone and blond hair wearing a red jacket with black shirt and pants and a pair of sunglasses" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZXikUZH5SUQtydBcaXw3nraWM-YyMl-X6wRFbfwmFuMeIyttXSzVEU4Gzyvx5jtXp1AYcnFu_sr6OzGYmhUDpnVTIdPW8ZBzYM-alwIeGu0BILeZ4_VV0oirOGqSS7C0rng1qzSSK1MLnsdBqOlhj4eUiSnYz3qn3YWFn5BKx5xiHbVYlr43zDsh_0p4/w288-h640/Androidify-photo-to-droid-bot-demo.gif" width="288" /></div><imgcaption><center><em>The original image and <i>Androidifi-ed</i> image</em></center></imgcaption></image><br /> <p>Choosing the right Gemini model depends on understanding your specific needs and the model's capabilities, including modality, complexity, context window, offline capability, cost, and device reach. To explore these considerations further and see all our announcements in action, check out the <a href="https://goo.gle/io25-build-with-ai" target="_blank">AI on Android at I/O ‘25 playlist on YouTube</a> and check out our <a href="https://developer.android.com/ai" target="_blank">documentation</a>.</p> <p>We are excited to see what you will build with the power of Gemini!</p> #GenerativeAI AI Edge Androidify Firebase AI Logic Gemini Nano Google I/O 2025 machine learning ML Kit on-device AI Android Developers I/O 2025: What's new in Google Play http://android-developers.googleblog.com/2025/05/io-2025-whats-new-in-google-play.html Android Developers Blog urn:uuid:639ea394-9044-2e86-140d-4b45b641b429 Thu, 22 May 2025 17:51:13 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgbUsWApjG8FwIqgCf8yKKJPi5tzzhLbWPZ0J1TmGzI3cNdC3HRzD4wy0WI2a-QGNdsQgfelVe4_s5TCnY7xsgWtySClo3rvGgT0OAuSu8kOT-1ROX1DOHfJl_1npzLTXUnTpM3alzhUOkYmHWL8c-KRqVEZ498rsNh6ziidsQtrgBnKqXdz8HKs4CbuE/s1600/google-io-whats-new-in-play-meta.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgbUsWApjG8FwIqgCf8yKKJPi5tzzhLbWPZ0J1TmGzI3cNdC3HRzD4wy0WI2a-QGNdsQgfelVe4_s5TCnY7xsgWtySClo3rvGgT0OAuSu8kOT-1ROX1DOHfJl_1npzLTXUnTpM3alzhUOkYmHWL8c-KRqVEZ498rsNh6ziidsQtrgBnKqXdz8HKs4CbuE/s1600/google-io-whats-new-in-play-meta.png" style="display: none;" /> <em>Posted by Paul Feng, VP of Product Management, Google Play</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwq-OmkcDbU1aI2R5K-5G_buGNTeuXUiJAfBFZUOLRhdxzLz2LdQWPE76VoouXbOP-qVAj2lDeD15bxlJ0dpzBIwc_Sti2gyBVCkXE6ZQ4mtr6qqhrPE10zgf3MDWFiK4wIpuf1wPb8ZOGUtfktLA2e3ySfZi8deGcwezsdKkgimM9jYY_WOu9y8Y7Q20/s1600/google-io-whats-new-in-play.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwq-OmkcDbU1aI2R5K-5G_buGNTeuXUiJAfBFZUOLRhdxzLz2LdQWPE76VoouXbOP-qVAj2lDeD15bxlJ0dpzBIwc_Sti2gyBVCkXE6ZQ4mtr6qqhrPE10zgf3MDWFiK4wIpuf1wPb8ZOGUtfktLA2e3ySfZi8deGcwezsdKkgimM9jYY_WOu9y8Y7Q20/s1600/google-io-whats-new-in-play.png" /></a> <p>At Google Play, we're dedicated to helping people discover experiences they'll love, while empowering developers like you to bring your ideas to life and build successful businesses.</p> <p>At this year’s Google I/O, we unveiled the latest ways we’re empowering your success with new tools that provide robust testing and actionable insights. We also showcased how we’re continuing to build a content-rich Play Store that fosters repeat engagement alongside new subscription capabilities that streamline checkout and reduce churn.</p> <p>Check out all exciting developments from I/O that will help you grow your business on Google Play. Continue reading or watch the session to dive in.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="POUqfDBtRbg" width="100%" height="413" src="https://www.youtube.com/embed/POUqfDBtRbg"></iframe> <h2><span style="font-size: x-large;">Helping you succeed every step of the way</span></h2> <p>Last month, we introduced our <a href="https://android-developers.googleblog.com/2025/04/play-console-insights.html" target="_blank">latest Play Console updates</a> focused on improving quality and performance. A redesigned app dashboard centered around four developer objectives (Test and release, Monitor and improve, Grow users, Monetize) and new Android vitals metrics offer quick insights and actionable suggestions to proactively improve the user experience.</p> <h3><span style="font-size: large;">Get more actionable insights with new Play Console overview pages</span></h3> <p>Building on these updates, we've launched dedicated overview pages for two developer objectives: Test and release and Monitor and improve. These new pages bring together more objective-related metrics, relevant features, and a "Take action" section with contextual, dynamic advice. Overview pages for Grow and Monetize will be coming soon.</p> <h3><span style="font-size: large;">Halt fully-rolled out releases when needed</span></h3> <p>Historically, a release at 100% live meant there was no turning back, leaving users stuck with a flawed version until a new update rolled out. Soon, you'll be able to halt fully-live releases, through Play Console and the Publishing API to stop the distribution of problematic versions to new users.</p> <image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjanjLfiK0VD0n8uZB8ZIid3_AIcnt9Xf0eCn-v9D3HaBBjClnaBteJLf68q56CRsoxilZKes0kFDjuzmCpF_xqsYwyZ1r8SMPhjcaGNgc7Tx8UAtrxKFFLKovZEhL4xREUO-hDqUAci-uw9lFrEfvWYeECzkkVHExD1aHg8pe5KXjruTez3i3FdKF6Wkk/s1600/PlayBlogAssets_Halt_rollout_1600x928.gif"><img alt="a moving screen grab of release manager in Play Console" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjanjLfiK0VD0n8uZB8ZIid3_AIcnt9Xf0eCn-v9D3HaBBjClnaBteJLf68q56CRsoxilZKes0kFDjuzmCpF_xqsYwyZ1r8SMPhjcaGNgc7Tx8UAtrxKFFLKovZEhL4xREUO-hDqUAci-uw9lFrEfvWYeECzkkVHExD1aHg8pe5KXjruTez3i3FdKF6Wkk/s1600/PlayBlogAssets_Halt_rollout_1600x928.gif" /></a></div><imgcaption><center><em>You'll soon be able to halt fully live releases directly from Play Console and the Publishing API, stopping the distribution of problematic versions to new users.</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Optimize your store listings with better management tools and metrics</span></h3> <p>We launched two tools to enhance your store listings. The asset library makes it easy to upload, edit, and view your visual assets. Upload them from Google Drive, organize with tags, and crop for repurposing. And with new open metrics, you <a href="https://support.google.com/googleplay/android-developer/answer/9859173?hl=en&amp;sjid=14407705712869133246-EU#zippy=%2Cmetrics" target="_blank">gain deeper insights</a> into listing performance so you can better understand how they attract, engage, and re-engage users.</p> <h3><span style="font-size: large;">Stay ahead of threats with the Play Integrity API</span></h3> <p>We're committed to robust security and preventing abuse so you can thrive on Play’s trusted platform. The <a href="https://developer.android.com/google/play/integrity" target="_blank">Play Integrity API</a> continuously evolves to combat emerging threats, with these recent enhancements:</p> <ul><ul> <li><b>Stronger abuse detection for all developers</b> that leverages the latest Android hardware-security with no developer effort required.</li> <li><b>Device security update checks</b> to safeguard your app’s sensitive actions like transfers or data access.</li> <li><b>Public beta for device recall</b> which enables you to detect if a device is being reused for abuse or repeated actions, even after a device reset. You can <a href="https://goo.gle/play-device-recall" target="_blank">express interest in this beta</a>.</li> </ul></ul> <h2><span style="font-size: x-large;">Unlocking more discovery and engagement for your apps and its content</span></h2> <p>Last year, we <a href="https://android-developers.googleblog.com/2024/05/io-24-whats-new-in-google-play.html" target="_blank">shared our vision</a> for a content-rich Google Play that has already delivered strong results. Year-over-year, Apps Home has seen over a 25% increase in average monthly visitors with apps seeing a 10% growth in acquisitions and double-digit growth in app spend for those monetizing on Google Play. Building on that vision, we're introducing even more updates to elevate your discovery and engagement, both on and off the store.</p> <p>For example, <b>curated spaces</b>, launched last year, celebrate seasonal interests like football (soccer) in Brazil and cricket in India, and evergreen interests like comics in Japan. By adding daily content—match highlights, promotions, and editorial articles directly on the Apps Home—these spaces foster discovery and engagement. Curated spaces are a hit with over 920,000 highly engaged users in Japan returning to the comics space monthly. Building on this momentum, we are expanding to more locations and categories this year.</p> <image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVUyGVGKxjhwCdG89ASNI2eI2naUmMZfe2XuGYurkXybbxrPIhRnLVaMN73kNfHsiKxeLQYvDjvBQlQADAESZ47cWxoflhlvVyio2YNI5SnNLj0-VeSSHOkI2IW4Mi6bE4LgBJnHFrMhxEDQuTHdZLpulIvTPxVFHcEKPD-aA3_CS45qeOBqGtCeNV4zU/s16000/curated-spaces-new-in-play-google-io.gif"><img alt="a moving image of three mobile devices displaying curated spaces on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVUyGVGKxjhwCdG89ASNI2eI2naUmMZfe2XuGYurkXybbxrPIhRnLVaMN73kNfHsiKxeLQYvDjvBQlQADAESZ47cWxoflhlvVyio2YNI5SnNLj0-VeSSHOkI2IW4Mi6bE4LgBJnHFrMhxEDQuTHdZLpulIvTPxVFHcEKPD-aA3_CS45qeOBqGtCeNV4zU/s16000/curated-spaces-new-in-play-google-io.gif" /></a></div><imgcaption><center><em>Our curated spaces add daily content to foster repeat discovery and engagement.</em></center></imgcaption></image><br /> <p>We're launching <b>new topic browse pages</b> that feature timely, relevant, and visually engaging content. Users can find them throughout the Store, including Apps Home, store listing pages, and search. These pages debut this month in the US with Media &amp; Entertainment, showcasing over 100,000 shows, movies, and select sports. More localized topic pages will roll out globally later this year.</p> <image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyv6pZ9ZiAmQL9NkPKGZwm_tgWsCejXqgMqit7InZX9SYPbMppYCPBA3FeG6ez-mdAVS4RZXJ8aQG8olw_PDi7_KVi75RM9CD4SIrcQRLRstLJkokKURNoZGXz9kOLWaq98deFZhH0vVyAF9xiqsZEZXZXH5ryrg9786xZ-vRzMcXYUTV3TtIZeIaDSL8/w640-h590/new-browse-pages-media-entertainment-new-in-play-google-io.gif"><img alt="a moving image of two mobile devices displaying new browse pages for media and entertainment in the Play Store" border="0" height="590" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyv6pZ9ZiAmQL9NkPKGZwm_tgWsCejXqgMqit7InZX9SYPbMppYCPBA3FeG6ez-mdAVS4RZXJ8aQG8olw_PDi7_KVi75RM9CD4SIrcQRLRstLJkokKURNoZGXz9kOLWaq98deFZhH0vVyAF9xiqsZEZXZXH5ryrg9786xZ-vRzMcXYUTV3TtIZeIaDSL8/w640-h590/new-browse-pages-media-entertainment-new-in-play-google-io.gif" width="65%" /></a></div><imgcaption><center><em>New topic browse pages for media and entertainment are rolling out this month in the US.</em></center></imgcaption></image><br /> <p>We’re expanding <b>Where to Watch</b> to more markets, including the UK, Korea, Indonesia, and Mexico, to help users find and deep-link directly into their subscribed apps for movies and TV. Since launching in the US in November 2024, we've seen promising results: People who view app content through Where to Watch return to Play more frequently and increase their content search activity by 30%.</p> <p>We're also enhancing how your content is displayed on the Play Store. Starting this July, all app developers can add a <b>hero content carousel</b> and a <b>YouTube playlist carousel</b> to their store listings. These formats will help showcase your best content and drive greater user engagement and discovery.</p> <p>For apps best experienced through sound, we're launching <b>audio samples</b> on the Apps Home. A simple tap offers users a brief escape into your audio content. In early testing, audio samples made users 3x more likely to install or open an app! This feature is now available for all Health &amp; Wellness app developers with users in the US, with more categories and markets coming soon. You can <a href="https://goo.gle/play-audio-samples" target="_blank">express your interest in promoting audio content</a>.</p> <image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNeLmRYs6g8B9gGtuXJ9WJjOXWo62idQ9V-F8bqqm1k_29Yiwamy1faBLDd0SJRC0B6HYCiY11iWJjfYZoO7qn4UJY4zU4ckStiG3iSvAXqV76rHpVJj0mkTYs73fyjrOj3SMIkVOU77NLwWx2D-VFO-E9_0qPen1U2owcKq_8jt1Zth5NbX0nnBL4StU/s16000/curated-spaces-new-in-play-google-io.gif"><img alt="a moving image of three mobile devices displaying how content is displayed on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNeLmRYs6g8B9gGtuXJ9WJjOXWo62idQ9V-F8bqqm1k_29Yiwamy1faBLDd0SJRC0B6HYCiY11iWJjfYZoO7qn4UJY4zU4ckStiG3iSvAXqV76rHpVJj0mkTYs73fyjrOj3SMIkVOU77NLwWx2D-VFO-E9_0qPen1U2owcKq_8jt1Zth5NbX0nnBL4StU/s16000/curated-spaces-new-in-play-google-io.gif" /></a></div><imgcaption><center><em>We're enhancing how your content is displayed on the Play Store,&nbsp;</em></center><center><em>offering new ways to showcase your app and drive user engagement.</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Helping you take advantage of deeper engagement on Play, on and off the Store</span></h2> <p>Last year, we introduced <b><a href="https://goo.gle/play-engagesdk" target="_blank">Engage SDK</a></b>, a unified solution to deliver personalized content and guide users to relevant in-app experiences. Integrating it unlocks surfaces like Collections, our immersive full-screen experience bringing content directly to the user's home screen.</p> <p>We're rolling out updates to expand your content’s reach even further:</p> <ul><ul> <li><b>Engage SDK content is coming to the Play Store this summer</b>, in addition to existing spaces like Collections and Entertainment Space on select Android tablets.</li> <li><b>New content categories</b> are now supported, starting today with Travel.</li> <li><b>Collections are rolling out globally</b> to Google Play markets starting today, including Brazil, India, Indonesia, Japan, and Mexico.</li> </ul></ul> <p>Integrate with Engage SDK today to take advantage of this new expansion and boost re-engagement. <a href="https://developer.android.com/codelabs/engage-sdk-codelab" target="_blank">Try our codelab</a> to test the ease of publishing content with Engage SDK and <a href="https://support.google.com/googleplay/contact/Engage_SDK_Developer_Preview" target="_blank">express interest in the developer preview</a>.</p> <image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj14hdv5CphRLJX15uRNT8SQjHZRoHji5s4_sFw04O1PYU2hMwz2vkiDFg34SPDOw2ybQTuz50AWG9BGKdFu5-ZOSGQXLE_gZTYdRmYJ2AwzOvJ7YavND3e7O3s7EZkK44ZDedeZsbKWV9qU41kCOEGseHL4crjuHgANYLjJd8C_Si6N6TR43k4GDyjmWk/s16000/collections-new-in-play.png"><img alt="a mobile device displaying Collections on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj14hdv5CphRLJX15uRNT8SQjHZRoHji5s4_sFw04O1PYU2hMwz2vkiDFg34SPDOw2ybQTuz50AWG9BGKdFu5-ZOSGQXLE_gZTYdRmYJ2AwzOvJ7YavND3e7O3s7EZkK44ZDedeZsbKWV9qU41kCOEGseHL4crjuHgANYLjJd8C_Si6N6TR43k4GDyjmWk/s16000/collections-new-in-play.png" width="30%" /></a></div><imgcaption><center><em>Engage SDK now supports Collections for Travel.&nbsp;</em></center><center><em>Users can find timely itineraries and recent searches, all in one convenient place.</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Maximizing your revenue with subscriptions enhancements</span></h2> <p>With over a quarter-billion subscriptions, Google Play is one of the world's largest subscriptions platforms. We're committed to helping you turn engaged users into revenue growth by continually enhancing our tools to meet evolving customer needs.</p> <p>To streamline your purchase flow, we’re introducing <b>multi-product checkout for subscriptions</b>. This lets you sell subscription add-ons alongside base subscriptions, all under a single, aligned payment schedule. Users get a simplified experience with one price and one transaction, while you gain more control over how subscribers upgrade, downgrade, or manage their add-ons.</p> <image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRfzFpLHDjXsQR7XXv0d1a8QIs8B_ju-yh_5YTGtKat8rysyE3arNBRTn6eLaTQMOF2ZhyphenhyphentnsKM-Q5uJxyjBuUf61pDyk-OhLjhlaFe2K_K81PPwhqzZLecXAZe1EkkCUCZearLxQt_4YCLoL6mqs4hfRtC3dnv5eOY8vX4UYbtTfeokKt9Y1Lh1HFmZM/s16000/subscription-enhancement-new-in-play-google-io.png"><img alt="a mobile devices displaying multi-checkout where a base subscription plus add ons in shown a singluar transaction on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRfzFpLHDjXsQR7XXv0d1a8QIs8B_ju-yh_5YTGtKat8rysyE3arNBRTn6eLaTQMOF2ZhyphenhyphentnsKM-Q5uJxyjBuUf61pDyk-OhLjhlaFe2K_K81PPwhqzZLecXAZe1EkkCUCZearLxQt_4YCLoL6mqs4hfRtC3dnv5eOY8vX4UYbtTfeokKt9Y1Lh1HFmZM/s16000/subscription-enhancement-new-in-play-google-io.png" width="45%" /></a></div><imgcaption><center><em>You can now sell base subscriptions and add-ons together&nbsp;</em></center><center><em>in a single, streamlined transaction.</em></center></imgcaption></image><br /> <p>To help you retain more of your subscribers, we’re now <b>showcasing subscription benefits in more places across Play</b> – including the Subscriptions Center, in reminder emails, and during purchase and cancellation flows. This increased visibility has already reduced voluntary churn by 2%. Be sure to enter your subscription benefits in Play Console so you can leverage this powerful new capability.</p> <image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihIu0N3bEzQ5UJzeTa3ze-ClkE4f3z6S5vfWVF26wQsihl7mCtP1X8ubD6j2AxyuMrfgwNearReuDvBw99yzAEleG8ZurG9bqk8vS3-0qmF2ighdxGbIzOzNEYSxTttF8YYF7_aeiY_N5blfLLR0hC7d22MZ3AEuVaXdcfXDQXCSF18WhOweWrYncGglo/s1600/IO25_PAKEY_LS_067-What%27s-new-in-Google-Play-reminders2.png"><img alt="five mobile devices showing subscriptions in Play" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihIu0N3bEzQ5UJzeTa3ze-ClkE4f3z6S5vfWVF26wQsihl7mCtP1X8ubD6j2AxyuMrfgwNearReuDvBw99yzAEleG8ZurG9bqk8vS3-0qmF2ighdxGbIzOzNEYSxTttF8YYF7_aeiY_N5blfLLR0hC7d22MZ3AEuVaXdcfXDQXCSF18WhOweWrYncGglo/s16000/IO25_PAKEY_LS_067-What's-new-in-Google-Play-reminders2.png" /></a></div><imgcaption><center><em>To help reduce voluntary churn, we’re showcasing your subscriptions benefits across Play. </em></center></imgcaption></image><br /> <p>Reducing involuntary churn is a key factor in optimizing your revenue. When payment methods unexpectedly decline, users might unintentionally cancel. Now, instead of immediate cancellation, you can now choose a <b>grace period</b> (up to 30 days) or an <b>account hold</b> (up to 60 days). Developers who increased the decline recovery period – from 30 to 60 days – saw an average 10% reduction in involuntary churn for renewals.</p> <p>On top of this, we're expanding <b>our commitment to get more buyers ready for purchases</b> throughout their entire journey. This includes prompting users to set up payment methods and verification right at device setup. After setup, we've integrated prompts into highly visible areas like the Play and Google account menus. And as always, we’re continuously enabling payments in more markets and expanding payment options. Plus, our AI models now help optimize in-app transactions by suggesting the right payment method at the right time, and we're bringing buyers back with effective cart abandonment reminders.</p> <h2><span style="font-size: x-large;">Grow your business on Google Play</span></h2> <p>Our latest updates reinforce our commitment to fostering a thriving Google Play ecosystem. From enhanced discovery and robust tools to new monetization avenues, we're empowering you to innovate and grow. We're excited for the future we're building together and encourage you to use these new capabilities to create even more impactful experiences. Thank you for being an essential part of the Google Play community.</p> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p><br /><p></p><p></p><p></p><p></p> android developers Featured Google I/O 2025 Google Play Play Console Android Developers New in-car app experiences http://android-developers.googleblog.com/2025/05/android-for-cars-google-io-2025.html Android Developers Blog urn:uuid:d7defdae-f33e-464d-9060-1688cfe6e07d Thu, 22 May 2025 17:15:07 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ch4mDTckRM3NbELIn-7qkAHBZvZePkcVQTaZR1wvjp343urRIkqoKWO2qdULTfdjtX0Tcc20jiyMbP8DiMuEhuuewIEBxSTITgGYo1ZlAI0Ro5AYcJPxQcUTPLxZvKC0gzM7zVTFXEFxA3VIu4cNPhcGjvp9RqIeCccPaLclpfA5_LcSLbBsP_BdG8s/s1600/android-auto-google-io-meta.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ch4mDTckRM3NbELIn-7qkAHBZvZePkcVQTaZR1wvjp343urRIkqoKWO2qdULTfdjtX0Tcc20jiyMbP8DiMuEhuuewIEBxSTITgGYo1ZlAI0Ro5AYcJPxQcUTPLxZvKC0gzM7zVTFXEFxA3VIu4cNPhcGjvp9RqIeCccPaLclpfA5_LcSLbBsP_BdG8s/s1600/android-auto-google-io-meta.png" style="display: none;" /> <em>Posted by Noam Gefen – Product Manager, Android for Cars, Sole Alborno – Product Manager, Gemini, and Ben Sagmoe – Developer Relations Engineer, Android for Cars</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwMRJDvCDNiqUTb45-PlkPAqKeZUDv4Ew0lFbkWMLy7fPELDQ3nLYAqx6RR2lbFkuTcE-hkdi_pdGQB9_BXTISrkK5xmgj3EQ6UKlCvl0vGHrZj5PxqVK01BuilgyX08Jje5Wl675eu1YfAqNu2jpZg5BmRO65yr_c1FeiecdHSFk_TGIWU_k-LCn89PA/s1600/IO25-SVD-Blog-Banner-01-4209x1253.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwMRJDvCDNiqUTb45-PlkPAqKeZUDv4Ew0lFbkWMLy7fPELDQ3nLYAqx6RR2lbFkuTcE-hkdi_pdGQB9_BXTISrkK5xmgj3EQ6UKlCvl0vGHrZj5PxqVK01BuilgyX08Jje5Wl675eu1YfAqNu2jpZg5BmRO65yr_c1FeiecdHSFk_TGIWU_k-LCn89PA/s1600/IO25-SVD-Blog-Banner-01-4209x1253.png" /></a> <p>The in-car experience continues to evolve rapidly, and Google remains committed to pushing the boundaries of what's possible. At Google I/O 2025, we're excited to unveil the latest advancements for drivers, car manufacturers, and developers, furthering our goal of a safe, seamless, and helpful connected driving experience.</p> <p>Today's car cabins are increasingly digital, offering developers exciting new opportunities with larger displays and more powerful computing. <a href="https://www.android.com/auto/" target="_blank">Android Auto</a> is now supported in nearly all new cars sold, with almost 250 million compatible vehicles on the road.</p> <p>We're also seeing significant growth in cars powered by Android Automotive OS with <a href="https://built-in.google/cars/" target="_blank">Google built-in</a>. Over 50 models are currently available, with more launching this year. This growth is fueled by a thriving app ecosystem, including over 300 apps already available on the Play Store. These include apps optimized for a safe and seamless experience while driving as well as entertainment apps for while you're parked and waiting in your car—many of which are adaptive mobile apps that have been seamlessly brought to cars through the <a href="https://developer.android.com/training/cars/car-ready-mobile-apps" target="_blank">Car Ready Mobile Apps Program</a>.</p> <p>A vibrant developer community is essential to delivering these innovative in-car experiences utilizing the different screens within the car cabin. This past year, we've focused on key areas to help empower developers to build more differentiated experiences in cars across both platforms, as we embark on the Gemini era in cars.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ud09zuXHst4" width="100%" height="413" src="https://www.youtube.com/embed/ud09zuXHst4"></iframe> <h2><span style="font-size: x-large;">Gemini for Cars</span></h2> <p>Exciting news for in-car experiences: Gemini, Google's advanced AI, is coming to vehicles! This unlocks a new era of safe and helpful interactions on the go.</p> <p>Gemini enables natural voice conversations and seamless multitasking, empowering drivers to get more done simply by speaking naturally. Imagine effortlessly finding charging stations or navigating to a location pulled directly from an email, all with just your voice.</p> <p>You can learn how to <a href="https://blog.google/products/android/gemini-for-cars/" target="_blank">leverage Gemini's potential to create engaging in-car experiences in your app</a>.</p> <p>Navigation apps can integrate with Gemini using <a href="https://developer.android.com/training/cars/apps/navigation#support-navigation-intents" target="_blank">three core intent formats</a>, allowing you to start navigation, display relevant search results, and execute custom actions, such as enabling users to report incidents like traffic congestion using their voice.</p> <p>Gemini for cars will be rolling out in the coming months. Get ready to build the next generation of in-car AI experiences!</p> <h2><span style="font-size: x-large;">New developer programs and tools</span></h2> <image><div style="text-align: center;"><img alt="table of app categories showing availability in android Auto and cars with Google built-in, including media, navigation, point-of-interest, internet of things, weather, video, browsers, games, and communication such as messaging and voip" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjEV15_YeonXC72heQn6EKA7qCmBIWoiZ6zG04KhWUyq9NWCeY6NnG_hdeTPqPy6XxGR7QszUUxC-EnmhZOTE1MaGTi5g76yxUso2S4qCkm4a80ZgNh9z0AntrSPB_vXDYkEq4JyA84G3XNCPy0dDFc8ASboQB2eO60tpYEqwdhyphenhyphenIfMwmqfH8_Ccuxcjw/s16000/app-categories-availability-android-auto-google-io.png" /></div></image><br /> <p>Last year, we introduced car app quality tiers to inspire developers to create high quality in-car experiences. By developing your app in compliance with the Car ready tier, you can bring video, gaming, or browser apps to run while parked in cars with Google built-in with almost no additional effort. <a href="https://developer.android.com/training/cars/car-ready-mobile-apps" target="_blank">Learn more about Car Ready Mobile Apps</a>. </p><p>Your app can further shine in cars within the Car optimized and Car differentiated tiers to unlock experiences while the car is in motion, and also when transitioning between parked and driving modes, while utilizing the different screens within the modern car cabin. Check the <a href="https://developer.android.com/docs/quality-guidelines/car-app-quality?_gl=1*la8ojm*_up*MQ..*_ga*OTA1MjQ0MjkuMTc0Njc5NDM3NQ..*_ga_6HH9YJMN9M*czE3NDY3OTQzNzUkbzEkZzAkdDE3NDY3OTQzNzUkajAkbDAkaDEwODQ1MjQ2NTE.#car-quality-tiers" target="_blank">car app quality guidelines</a> for details. </p><p>To start with, across both Android Auto and for cars with Google built-in, we've made some exciting improvements for <a href="https://developer.android.com/training/cars/apps" target="_blank">Car App Library</a>:</p> <ul><ul> <li><b>The <a href="https://developer.android.com/training/cars/apps/weather" target="_blank">Weather</a> app category</b> has graduated from beta: any developer can now publish weather apps to production tracks on both Android Auto and cars with Google Built-in. Before you publish your app, check that it meets the <a href="https://developer.android.com/docs/quality-guidelines/car-app-quality?category=weather#app_categories" target="_blank">quality guidelines for weather apps</a>.</li></ul><br /><ul> <li><b>Designing templated apps</b> is easier than ever with the <a href="https://goo.gle/figma-car-app-design-kit" target="_blank">Car App Templates Design Kit</a> we just published on Figma.</li></ul><br /><ul> <li>Two new templates, the <span style="color: #0d904f; font-family: courier;">SectionedItemTemplate</span> and <span style="color: #0d904f; font-family: courier;">MediaPlaybackTemplate</span>, are now available in the Car App Library 1.8 alpha release for use on Android Auto. These templates are a great fit for building <a href="https://developer.android.com/training/cars/apps/media" target="_blank">templated media apps</a>, allowing for increased customization in layout and browsing structure.</li></ul><br /><ul> <image><div style="text-align: center;"><img alt="example of sectioneditemtemplate on the left and mediaplaybacktemplate on the right" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCyBStVeMjLLWDqOGeggueFCuk5MhIMMV5Jxnu7jaWh4bNT6u1jdd6oqG0o3dUNgbkPT3F4WJh6iDqJmNvrUpTXMy0806nnykCU-eQbY1wZ3PNdFYnUDOQkaMWqqHdZlj7ltBh_Z17iiprovpMRDnLnCRllAJ1VR6KpBeyENdEDkgtryw5_iJ7Of7qKZQ/s16000/sectioneditemtemplate-mediaitemtemplate-android-auto-google-io.png" /></div></image><br /> </ul></ul> <p>On Android Auto, many new app categories and capabilities are now in beta:</p> <ul><ul> <li>We are adding support for <b>Building media apps</b> with the Car App Library, enabling media app developers to build both richer and more complete experiences that users are used to on their phones. During beta, developers can build and publish media apps built using the Car App Library to internal testing and closed testing tracks. You can also <a href="https://goo.gle/Media-Comms-EAP" target="_blank">express interest in being an early access partner</a> to publish to production while the category is in beta. See <a href="https://developer.android.com/training/cars/apps/media" target="_blank">Build a templated media app</a> to learn more and get started.</li></ul><br /><ul> <li><b>The <a href="http://developer.android.com/training/cars/communications" target="_blank">communications</a> category</b> is in beta. We've simplified calling integration for calling apps by utilizing the <a href="https://developer.android.com/reference/androidx/core/telecom/CallsManager" target="_blank"><span style="font-family: courier;">CallsManager</span> Jetpack API</a>. Together with the templates provided by the Car App Library, this enables communications apps to build features like full message history, upcoming meetings list, rich in-call views, and more. During beta, developers can build and publish communications apps to internal testing and closed testing tracks. You can also <a href="http://goo.gle/Media-Comms-EAP" target="_blank">express interest in being an early access partner</a> to publish to production while the category is in beta.</li></ul><br /><ul> <li><b>Games</b> are now supported in Android Auto, while parked, on phones running Android 15 and above. You can already find some popular titles like Angry Birds 2, Farm Heroes Saga, Candy Crush Soda Saga and Beach Buggy Racing 2. To add support for Android Auto to your own app, see <a href="https://developer.android.com/training/cars/parked/games" target="_blank">Build games for cars</a> and <a href="https://developer.android.com/training/cars/parked/auto" target="_blank">Add support for Android Auto to your parked app</a>. The Games category is in Beta and developers can publish games to internal testing and closed testing tracks. You can also <a href="http://goo.gle/Games-EAP" target="_blank">express interest in being an early access partner</a> to publish to production while the category is in beta.</li></ul><br /><ul> </ul></ul> <p>Finally, we have further simplified building, testing and distribution experience for developers building apps for Android Automotive OS cars with Google built-in:</p> <ul><ul> <li>Games Category now in Beta for Google Built-In, allowing developers to distribute their adaptive games to cars. You can <a href="http://goo.gle/Games-EAP" target="_blank">express interest to release the production track</a>. <b><a href="https://developer.android.com/training/cars/platforms/automotive-os/google-play/google-services#pgs" target="_blank">Google Play Games Services</a></b> (v2) are now available on Cars with Google built-in, enabling seamless login flows, cross device save states, and more. <a href="https://developer.android.com/games/pgs/start" target="_blank">Get started with Google Play Games Services</a> to learn more.</li></ul><br /><ul> <li><b>Distribution through Google Play</b> is more flexible than ever. It’s now possible for apps in the <a href="https://developer.android.com/training/cars/parked" target="_blank">parked categories</a> to distribute in the same APK or App Bundle to cars with Google built-in as to phones, including through the mobile release track. Learn more on how to <a href="https://developer.android.com/training/cars/distribute#choose-track-aaos" target="_blank">Distribute to cars</a>.</li></ul><br /><ul> <li><b><a href="https://developer.android.com/training/cars/testing/aaos-on-pixel" target="_blank">Android Automotive OS on Pixel Tablet</a></b> is now generally available, giving you a physical device option for testing Android Automotive OS apps without buying or renting a car. Additionally, the most recent system images include support for acting as an Android Auto receiver, meaning you can use the same device to test both your app’s experience on Android Auto and Android Automotive OS. <a href="http://goo.gle/Tablet-AAOS" target="_blank">Apply for access to these images</a>.</li> </ul></ul> <h2><span style="font-size: x-large;">The road ahead</span></h2> <p>You can look forward to more updates later this year, including:</p> <ul><ul> <li><b>Video apps</b> will be supported on Android Auto, starting with phones running Android 16 on select compatible cars. If your app is already adaptive, enabling your app experience while parked only requires minimal steps to distribute to cars.</li></ul><br /><ul> <li>For Android Automotive OS cars running Android 14+ with Google built-in, we are working with car manufacturers to add additional app compatibility, to enable thousands of adaptive mobile apps in the next phase of the <b><a href="https://developer.android.com/training/cars/car-ready-mobile-apps" target="_blank">Car Ready Mobile Apps Program</a></b>.</li></ul><br /><ul> <li><b>Updated design documentation</b> that visualizes car app quality guidelines and integration paths to simplify designing your app for cars.</li></ul><br /><ul> <li>Google Play Services for cars with Google built-in are expanding to bring them on-par with mobile, including:</li><ul> a. <b>Passkeys and Credential Manager</b> APIs for a more seamless user sign-in experience.</ul><ul> b. <b>Quick Share</b>, which will enable easy cross-device sharing from phone to car.</ul></ul><br /><ul> <li><b>Audio while driving for video apps</b>: For cars with Google built-in, we're working with OEMs to enable audio-only listening for video apps while driving. <a href="http://goo.gle/440dHqw" target="_blank">Sign up to express interest in participating in the early access program</a>.If you’d like to prepare for this feature’s general availability, you can work through the<a href="https://developer.android.com/codelabs/audio-while-driving" target="_blank"> audio while driving codelab</a> or check out the <a href="https://developer.android.com/training/cars/parked/video" target="_blank">Build video apps for Android Automotive OS</a> page</li></ul><br /><ul> <li><b>Firebase Test Lab</b> is adding Android Automotive OS devices to its device catalog, making it possible to test on real car hardware without needing to buy or rent a car. <a href="http://goo.gle/Firebase-for-cars" target="_blank">Sign up to express interest in becoming an early access partner</a>.</li></ul><br /><ul> <li><b><a href="https://play.google.com/console/about/pre-launchreports/" target="_blank">Pre-launch reports</a> for Android Automotive OS</b> are coming soon to the Play Console, helping you ensure app quality before distributing your app to cars.</li> </ul></ul> <p>Be sure to keep up to date through goo.gle/cars-whats-new on these features and more as we continuously invest in the future of Android in the car. Stay tuned for more resources to help you build innovative and engaging experiences for drivers and passengers.</p> <p><b>Ready to publish your car app?</b> Check our <a href="https://developer.android.com/training/cars/distribute?_gl=1*7rj7q0*_up*MQ..*_ga*OTA1MjQ0MjkuMTc0Njc5NDM3NQ..*_ga_6HH9YJMN9M*czE3NDY3OTQzNzUkbzEkZzAkdDE3NDY3OTUyMTUkajAkbDAkaDEwODQ1MjQ2NTE." target="_blank">guidance for distributing to cars</a>.</p> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p> Android Auto Android Automotive OS Android for cars car app quality Developer Tools Developing Media Apps Gemini Google I/O 2025 in-car experiences navigation apps Android Developers Announcing Jetpack Navigation 3 http://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html Android Developers Blog urn:uuid:70f252c2-6288-3e4e-4947-413a01254bd9 Wed, 21 May 2025 20:34:52 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizVuum2Jg1s5Y5EQmfuXrjm8QqcqxdAUDveRe-CSS4ZGVeNG9VFEizeayzpolJ5oCPSfoNmkT3RdS3Z-g1-aXzDBWwJtjOzflCgt657KFitWQby_GcYa5PO4PBN_7IUmG4CC9BvOw8mFFIMPai_R9EoPIcWZkPDV0aAAs20amwT6Lr2oXi5Yfe-e7b1t0/s1600/announcing-jetpack-navigation-3-compose-google-io-2025.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizVuum2Jg1s5Y5EQmfuXrjm8QqcqxdAUDveRe-CSS4ZGVeNG9VFEizeayzpolJ5oCPSfoNmkT3RdS3Z-g1-aXzDBWwJtjOzflCgt657KFitWQby_GcYa5PO4PBN_7IUmG4CC9BvOw8mFFIMPai_R9EoPIcWZkPDV0aAAs20amwT6Lr2oXi5Yfe-e7b1t0/s1600/announcing-jetpack-navigation-3-compose-google-io-2025.png" style="display: none;" /> <em>Posted by Don Turner - Developer Relations Engineer</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAaXdjIziCSWC6AxDELcBes5wYDD03GByPFm8jipBg5cilU9-3w_50B5RhF1BXzHUY0HTmp-WEAeshuqLmBpdK9onZAys4S3Pv2izciuQxqlTL23YaOCpaGMoazKbXUCHr5TZcDadxWbDdUDAX_1GS_iN133wFnxH-Qal7icpfcZhKZ2aNy3FaJ0zIDds/s1600/new-in-jetpack-compose.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAaXdjIziCSWC6AxDELcBes5wYDD03GByPFm8jipBg5cilU9-3w_50B5RhF1BXzHUY0HTmp-WEAeshuqLmBpdK9onZAys4S3Pv2izciuQxqlTL23YaOCpaGMoazKbXUCHr5TZcDadxWbDdUDAX_1GS_iN133wFnxH-Qal7icpfcZhKZ2aNy3FaJ0zIDds/s1600/new-in-jetpack-compose.png" /></a> <p>Navigating between screens in your app should be simple, shouldn't it? However, building a robust, scalable, and delightful navigation experience can be a challenge. For years, the Jetpack Navigation library has been a key tool for developers, but as the Android UI landscape has evolved, particularly with the rise of Jetpack Compose, we recognized the need for a new approach.</p> <p>Today, we're excited to introduce <b>Jetpack Navigation 3</b>, a new navigation library built from the ground up specifically for Compose. For brevity, we'll just call it Nav3 from now on. This library embraces the <a href="https://developer.android.com/develop/ui/compose/mental-model" target="_blank">declarative programming model</a> and <a href="https://developer.android.com/develop/ui/compose/state" target="_blank">Compose state</a> as fundamental building blocks.</p> <h2><span style="font-size: x-large;">Why a new navigation library?</span></h2> <p>The original Jetpack Navigation library (sometimes referred to as Nav2 as it's on major version 2) was initially announced back in 2018, before AndroidX and before Compose. While it served its original goals well, we heard from you that it had several limitations when working with modern Compose patterns.</p> <p>One key limitation was that the back stack state could only be observed indirectly. This meant there could be two sources of truth, potentially leading to an inconsistent application state. Also, Nav2's <span style="color: #0d904f; font-family: courier;">NavHost</span> was designed to display only a single destination – the topmost one on the back stack – filling the available space. This made it difficult to implement adaptive layouts that display multiple panes of content simultaneously, such as a list-detail layout on large screens.</p> <image><div style="text-align: center;"><img alt="illustration of single pane and two-pane layouts showing list and detail features" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-1rxgQm0Xe0H1TsZIg7R9XC_jKoDZp8XuC0WBCy7iFTZpxrXEmCaFPBhLJUlsjhyDJVYXD5gqRmyoJsJEufJtIEr5JqGDBdQ05-1ytf75MtNAuwX3x4lBzAEUByOgOzeXfqgx6wGROHdRclzdvCKUJQVxO7BO6MFNNk1_uizsv44UoTjlUTecHDptLbs/s1600/single-pane-to-multi-pane-layout-jetpack-navigation-3-compose-google-io.png" width="100%" /></div><imgcaption><center><em><b>Figure 1.</b> Changing from single pane to multi-pane layouts can create navigational challenges</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Founding principles</span></h2> <p>Nav3 is built upon principles designed to provide greater flexibility and developer control:</p> <ul><ul> <li><b>You own the back stack:</b> You, the developer, not the library, own and control the back stack. It's a simple list which is backed by Compose state. Specifically, Nav3 expects your back stack to be <span style="color: #0d904f; font-family: courier;">SnapshotStateList&lt;T&gt;</span> where <span style="color: #0d904f; font-family: courier;">T</span> can be any type you choose. You can navigate by adding or removing items (<span style="color: #0d904f; font-family: courier;">T</span>s), and state changes are observed and reflected by Nav3's UI.</li></ul><ul> <li><b>Get out of your way:</b> We heard that you don't like a navigation library to be a black box with inaccessible internal components and state. Nav3 is designed to be open and extensible, providing you with building blocks and helpful defaults. If you want custom navigation behavior you can <a href="https://developer.android.com/develop/ui/compose/layering" target="_blank">drop down to lower layers</a> and create your own components and customizations.</li></ul><ul> <li><b>Pick your building blocks:</b> Instead of embedding all behavior within the library, Nav3 offers smaller components that you can combine to create more complex functionality. We've also provided a "<a href="http://github.com/android/nav3-recipes" target="_blank">recipes book</a>" that shows how to combine components to solve common navigation challenges.</li> </ul></ul><br /> <image><div style="text-align: center;"><img alt="illustration of the Nav3 display observing changes to the developer-owned back stack" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhA8RGixTxeZgkz1oQftv442euofSEXYiJ0tgRc-WcmQCXCLp0NhoTazDYbPXpjZkXqUlMXFrI5s2yoU0Cv8ZhHZpnY-rYfbKlW_TWzdCmk3pcdzTHjdFb-8FLTpK4K3Z8VEc_jqqZQ1oAbouUh-Zyk5oAfR20USvHs8bdZha_tmX6d5Kuo7Ydy8yNKyLg/s1600/nav3-display-observes-changes-developer-owned-back-stack.png" width="100%" /></div><imgcaption><center><em><b>Figure 2.</b> The Nav3 display observes changes to the developer-owned back stack.</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Key features</span></h2> <ul><ul> <li><b>Animations:</b> Built-in transition animations are provided for changes in destination, including for <a href="https://developer.android.com/develop/ui/compose/system/predictive-back" target="_blank">predictive back</a>. It also has a <a href="https://developer.android.com/guide/navigation/navigation-3/animate-destinations" target="_blank">flexible API for custom animation behavior,</a> allowing animations to be overridden at both the app and the individual screen level.</li></ul><ul> <li><b>Adaptive layouts:</b> A <a href="https://developer.android.com/guide/navigation/navigation-3/custom-layouts" target="_blank">flexible layout API</a> (named <span style="color: #0d904f; font-family: courier;">Scenes</span>) allows you to render multiple destinations in the same layout (for example, a list-detail layout on large screen devices). This makes it easy to switch between single and multi-pane layouts.</li></ul><ul> <li><b>State scoping:</b> Enables state to be scoped to destinations on the back stack, including optional <span style="color: #0d904f; font-family: courier;">ViewModel</span> support via a <a href="https://developer.android.com/guide/navigation/navigation-3/save-state#scoping-viewmodels" target="_blank">dedicated Jetpack lifecycle library</a>.</li></ul><ul> <li><b>Modularity:</b> The API design allows navigation code to be split across multiple modules. This improves build times and allows clear separation of responsibilities between feature modules.</li></ul><ul><br /> <image><div style="text-align: center;"><img alt="moving image demonstrating custom animations and predictive back features on a mobile device" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw5KERXwQVYgw5cqqM86exFaib_HqfUs3SyCLCbZvSeNY5cV_ax67Wg_w-76fcG4MGBADm24rIfehu871ngLhMa_-EeHFYikcp9Ag2Q1JCNhmvEaz7YHsBz72B6pOZCHtAink0Qnqs7jK9dPp7zXueKECKQJ8SvJIm0tO9LD0OZYddsRI_mx7qieURDn8/s1600/jetpack-navigation-3-custom-animation-predictive-back-google-io.gif" width="40%" /></div><imgcaption><center><em><b>Figure 3.</b> Custom animations and predictive back are easy to implement, and easy to override for individual destinations. </em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Basic code example</span></h2> <p>To give you an idea of how Nav3 works, here's a short code sample.</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: #408080; font-style: italic;">// Define the routes in your app and any arguments.</span> data object Home data <span style="color: green; font-weight: bold;">class</span> <span style="color: blue;">Product</span>(<span style="color: green; font-weight: bold;">val</span> id: String) <span style="color: #408080; font-style: italic;">// Create a back stack, specifying the route the app should start with.</span> <span style="color: green; font-weight: bold;">val</span> backStack = remember { mutableStateListOf&lt;Any&gt;(Home) } <span style="color: #408080; font-style: italic;">// A NavDisplay displays your back stack. Whenever the back stack changes, the display updates.</span> NavDisplay( backStack = backStack, <span style="color: #408080; font-style: italic;">// Specify what should happen when the user goes back</span> onBack = { backStack.removeLastOrNull() }, <span style="color: #408080; font-style: italic;">// An entry provider converts a route into a NavEntry which contains the content for that route.</span> entryProvider = { route -&gt; <span style="color: green; font-weight: bold;">when</span> (route) { <span style="color: green; font-weight: bold;">is</span> Home -&gt; NavEntry(route) { Column { Text(<span style="color: #ba2121;">"Welcome to Nav3"</span>) Button(onClick = { <span style="color: #408080; font-style: italic;">// To navigate to a new route, just add that route to the back stack</span> backStack.add(Product(<span style="color: #ba2121;">"123"</span>)) }) { Text(<span style="color: #ba2121;">"Click to navigate"</span>) } } } <span style="color: green; font-weight: bold;">is</span> Product -&gt; NavEntry(route) { Text(<span style="color: #ba2121;">"Product ${route.id} "</span>) } <span style="color: green; font-weight: bold;">else</span> -&gt; NavEntry(Unit) { Text(<span style="color: #ba2121;">"Unknown route: $route"</span>) } } } ) </pre></div> <h2><span style="font-size: x-large;">Get started and provide feedback</span></h2> <p>To get started, check out <a href="https://goo.gle/nav3" target="_blank">the developer documentation</a>, plus the <a href="https://github.com/android/nav3-recipes" target="_blank">recipes repository</a> which provides examples for:</p> <ul><ul> <li>common navigation UI, such as a navigation rail or bar</li> <li>conditional navigation, such as a login flow</li> <li>custom layouts using <span style="color: #0d904f; font-family: courier;">Scenes</span></li> </ul></ul> <p>We plan to provide code recipes, documentation and blogs for more complex use cases in future.</p> <p>Nav3 is currently in alpha, which means that the API is liable to change based on feedback. If you have any issues, or would like to provide feedback, please <a href="https://issuetracker.google.com/issues/new?component=1750212&amp;template=2102223" target="_blank">file an issue</a>.</p> <p>Nav3 offers a flexible and powerful foundation for building modern navigation in your Compose applications. We're really excited to see what you build with it.</p> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p> </ul></ul> #nav3 adaptive layouts Android Development Android UI Back Stack Compose Declarative Programming Google I/O 2025 Jetpack Jetpack Navigation Kotlin Navigation Navigation Library Navigation3 Android Developers Google I/O 2025: What’s new in Android development tools http://android-developers.googleblog.com/2025/05/google-io-2025-whats-new-in-android-development-tools.html Android Developers Blog urn:uuid:a2ef7cd1-5a0b-85e7-c91c-c1774a7dd7b5 Tue, 20 May 2025 22:54:14 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAOpioaQdivubxYGDYFmFGdwUgSL93ZOD89pFnWFDBEd5xJnbI1yVw4H-lk1HPMVb_hnf-L8JSSLFwawVGGWXSsqfY34ZsIqZAYdLFjbjLSk77LMpA1UuSt3IVJMTc7W0QNlYW7jY2bhyphenhyphenH6mTBRH34JKQ4wUpkM7IhxIPDBgmUOuaXXpkYinDEXndvUIc/s1600/android-development-tools-google-io.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAOpioaQdivubxYGDYFmFGdwUgSL93ZOD89pFnWFDBEd5xJnbI1yVw4H-lk1HPMVb_hnf-L8JSSLFwawVGGWXSsqfY34ZsIqZAYdLFjbjLSk77LMpA1UuSt3IVJMTc7W0QNlYW7jY2bhyphenhyphenH6mTBRH34JKQ4wUpkM7IhxIPDBgmUOuaXXpkYinDEXndvUIc/s1600/android-development-tools-google-io.png" style="display: none;" /> <em>Posted by <a href="https://twitter.com/makuchaku" target="_blank">Mayank Jain</a> – Product Manager, Android Studio</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPmG2XrQ2m8_zpYT6Ryy1FkM4p3KWEGgwSlmLuL7AKfDBXjgfPodSwDK4J4EMNK5Z04DOHUGeRZB6HzV9B66133xnCxVHCfe0edzyzuvZPcc9Dmmh-gbX5NdQ8qDcMcYKUNz-YKe8VuVJ70nY_A7CbwaX_gUZMVDtQxiU4v4iDd2CorgJjj1b1jiqMDHE/s1600/O25-BHero-Android-8.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPmG2XrQ2m8_zpYT6Ryy1FkM4p3KWEGgwSlmLuL7AKfDBXjgfPodSwDK4J4EMNK5Z04DOHUGeRZB6HzV9B66133xnCxVHCfe0edzyzuvZPcc9Dmmh-gbX5NdQ8qDcMcYKUNz-YKe8VuVJ70nY_A7CbwaX_gUZMVDtQxiU4v4iDd2CorgJjj1b1jiqMDHE/s1600/O25-BHero-Android-8.png" /></a> <p>Android Studio continues to advance Android development by empowering developers to build better app experiences, faster. Our focus has been on improving AI-driven functionality with Gemini, streamlining UI creation and testing, and helping you future-proof apps for the evolving Android ecosystem. These innovations accelerate development cycles, improve app quality, and help you stay ahead in the fast-paced world of mobile development.</p> <p>You can check out the <a href="https://io.google/2025/explore/pa-keynote-5" target="_blank">What’s new in Android Developer Tools</a> session at Google I/O 2025 to see some of the new features in action or better yet, try them out yourself by downloading <a href="https://developer.android.com/studio/preview" target="_blank">Android Studio Narwhal Feature Drop (2025.2.1) in the preview release channel</a>. Here’s a look at our latest developments:</p> <h2><span style="font-size: x-large;">Get the latest Gemini 2.5 Pro model in Android Studio</span></h2> <p>The power of artificial intelligence through Gemini is now deeply integrated into Android Studio, helping you at all stages of Android app development. Now <b>with access to Gemini 2.5 Pro</b>, we're continuing to look for new ways to use AI to supercharge Android development — and help you build better app experiences, faster.</p> <h3><span style="font-size: large;">Journeys for Android Studio</span></h3> <p>We’re also introducing agentic AI with Gemini in Android Studio.Testing your app is now much easier when you create journeys - just describe the actions and assertions in natural language for the user journeys you want to test, and Gemini performs the tests for you. Creating journeys lets you test your app’s critical user journeys across various devices without writing extensive code. You can then run these tests on local physical or virtual Android devices to validate that the test worked as intended by reviewing detailed results directly within the IDE. Although the feature is experimental, the goal is to increase the speed that you can ship high-quality code, while significantly reducing the amount of time you spend manually testing, validating, or reproducing issues.</p> <image><div style="text-align: center;"><img alt="moving image of Gemini testing an app in Android Studio" border="0" height="396" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmLs3FPYZ7Dd3NwG70D-o-y9MJ4RBqHw4s5fDBTuoP085m57llJoOcJq25u1bBguqtUcsSavNpuPP7P3QJ9m7jbOuqoD5-CJjEKMWMRr1sS4-SzMqh9C4StpFJyzl_2aXE16sdwpQfBaUd9ybQN3xursQIoJJDWO4RibWm5rJ8Va2DE5sGmPxQR_n4Fss/w640-h396/journeys-android-studio-google-io.gif" width="100%" /></div><imgcaption><center><em>Journeys for Android Studio uses Gemini to test your app.</em></center></imgcaption></image><br /> <iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/mP1tlIKK0R4" width="100%" youtube-src-id="mP1tlIKK0R4"></iframe><br /> <h3><span style="font-size: large;">Suggested fixes for crashes with Gemini</span></h3> <p>The App Quality Insights panel has a great new feature. The crash insights now analyzes your app's source code referenced from the crash, and not only offers a comprehensive analysis and explanation of the crash, in some cases it even offers a source fix! With just a few clicks, you are able to review the changes, accept the code suggestions, and push the changes to your source control. Now you can determine the root cause of a crash and fix it much faster!</p> <image><div style="text-align: center;"><img alt="screenshot of crash analysis with Gemini in Android Studio" border="0" height="327" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCqdLnKdLCdxf-yJ2_im4cD8rw-jfnjCHRdfEPbZY11R6n9yL2SM7KC8ojBiDYkNx43-EO1L4A5MT7YHTOqZoWDaCYcjPuTtO6V2RGACvZxDETYy3nJcTM1clvGZLJt1lxGKpej9If2FAKJS15wvE7gS43OZATP0RJbsisFveIEL2JekCPFPk5klOptJw/w640-h327/crash-analytics-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>Crash analysis with Gemini</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">AI features in Studio Labs (stable releases only)</span></h3> <p>We’ve heard feedback that developers want to access AI features in stable channels as soon as possible. You can now discover and try out the latest AI experimental features through the <b>Studio Labs</b> menu in the Settings menu starting with Narwhal stable release. You can get a first look at AI experiments, share your feedback, and help us bring them into the IDE you use everyday. Go to the Studio Labs tab in Settings and enable the features you would like to start using. These AI features are automatically enabled in canary releases and no action is required.</p> <image><div style="text-align: center;"><img alt="screenshot of AI features in Studio Labs" border="0" height="555" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpFpl5UaO1QIhu9h_Tqd_l6hkAB8_hDfmTw0X_c9VL4OJx9m-D0suwi8zAorBBRkMjeJ1RiGQjMTJudm_SRuiAZZS5AeqhNYeitm-L7tNx58juYrOE0_RC226L6Ap0lxJv-JOijHBE28OOFg9JReOs7oW9DaG7Q_3d5fge2EA1mtl6eNiHfLsmG9xyS28/w640-h555/ai-features-studio-labs-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>AI features in Studio Labs</em></center></imgcaption></image><br /> <ul><ul> <li><h4><span style="font-size: medium;"><b>Compose preview generation with Gemini</b></span></h4></li> <p>Gemini can automatically generate Jetpack Compose preview code saving you time and effort. You can access this feature by right-clicking within a composable and navigating to <b>Gemini &gt; Generate Compose Preview</b> or <b>Generate Compose Preview for this file</b>, or by clicking the link in an empty preview panel. The generated preview code is presented in a diff view that enables you to quickly accept, edit, or reject the suggestions, providing a faster way to visualize your composables.</p> <image><div style="text-align: center;"><img alt="moving image of compose preview generation with gemini in Android Studio" border="0" height="411" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj37jNhB8Vl4-EIpqBid_xqnwpgo5RNM7O4FzQIA3XXYjYNMR6Zj6wS06zV2bX2MH-qVDIcNQeZASqXXI-z71ZKkIHlFoiJ9wZ-HZ1r5swc6ze_xeOu1MaVMjA_dP9mKvnsb1MUCqOPZ0trN8WuPl-oVDw8PtnjuQiiCRs3xdJtbkEjKgbn_K7Z_MlC7hc/w640-h411/compose-preview-generation.gif" width="640" /></div><imgcaption><center><em>Compose Preview generation with Gemini</em></center></imgcaption></image><br /> <li><h4><span style="font-size: medium;"><b>Transform UI with Gemini</b></span></h4></li> <p>You can now transform UI code within the Compose Preview environment using natural language directly in the preview. To use it, right click in the Compose Preview and select "Transform UI With Gemini". Then enter your natural language requests, such as "Center align these buttons," to guide Gemini in adjusting your layout or styling, or select specific UI elements in the preview for better context. Gemini will then edit your Compose UI code in place, which you can review and approve, speeding up the UI development workflow.</p> <image><div style="text-align: center;"><img alt="side by side screenshots showing transforming UI with Gemini in Android Studio" border="0" height="495" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyhSZP_j5Im1YPNF1Kds9IAGITa3TXWrRlqG_J41XzA67GNoCscWoNNSC0kFgP7yPkWWkIxsq5aFlB_67yVZ32Cg-Sd9nqpJsH5EVc81fkNstJtWlOd12vIJ43e360emr8iY9Z1CZhcBPicOjM0fcxXQ25_yWwHu67DNtxHlLcUt1XL6ThyJPUouqFIGU/w640-h495/transform-ui-gemini-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>Transform UI with Gemini</em></center></imgcaption></image><br /> <li><h4><span style="font-size: medium;"><b>Image attachment in Gemini</b></span></h4></li> <p>You can now attach image files and provide additional information along with your prompt. For example: you can attach UI mock-ups or screenshots to tell Gemini context about your app’s layout. Consequently, Gemini can generate Compose code based on a provided image, or explain the composables and data flow of a UI screenshot. </p> <image><div style="text-align: center;"><img alt="screenshot of image atteachment and preview generation via Gemini in Android Studio" border="0" height="504" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt_eW2ziPQM9lJf3KYzs9MF7IWb7AFh6AyeXYry852Pc0TSnrRbR_Ytx86M7R3PARYIeF9qPvIv0jacNyHIFErPCTF4CGspihCEQGt-sv8sYd-O3dHKA48oPUUz5s2lntuWDFE29aCeNuxu1IWzXRMGHQEco2cAW1TAgQj-6VV3-Fq0bHH-9WTES-Nk44/w640-h504/image-attachment-preview-generation-gemini-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>Image attachment and preview generation via Gemini in Android Studio</em></center></imgcaption></image><br /> <li><h4><span style="font-size: medium;"><b>@File context in Gemini</b></span></h4></li> <p> You can now attach your project files as context in chat interactions with Gemini in Android Studio. This lets you quickly reference files in your prompts for Gemini. In the Gemini chat input, type @ to bring up a file completion menu and select files to attach. You can also click the <b>Context</b> drop-down to see which files were automatically attached by Gemini. This gives you more control over the context sent to Gemini.</p> <image><div style="text-align: center;"><img alt="screenshot of @File context in Gemini in Android Studio" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBC6AYTG6302XHxeCytk63_Ur28Qs_OE23ve0Kim83TLKpapVORYrZw-Im9qD2VPsfL-PqVvDDfuEXqIa7hyzL7xW39iJhI2ijZfpG3yXgcpYD_p3j62OPYagzVRHvNhkI0ezzyNScvT6xT0s2WlCGwtechOdGJFfHMQ_w2_8TcdMvf7W2LmkVAjJJ4l4/s1600/screenshot-file-context-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>@File context in Gemini</em></center></imgcaption></image><br /> </ul></ul> <h3><span style="font-size: large;">Rules in Prompt Library</span></h3> <p><b>Rules in Gemini</b> let you define preferred coding styles or output formats within the Prompt Library. You can also mention your preferred tech stack and languages. When you set these preferences once, they are automatically applied to all subsequent prompts sent to Gemini. Rules help the AI understand project standards and preferences for more accurate and tailored code assistance. For example, you can create a rule such as “Always give me concise responses in Kotlin.”</p> <image><div style="text-align: center;"><img alt="prompt library in Android Studio" border="0" height="453" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAHsw5qrEhl69OeETHW72xlnWtdRO_x924nqETwWO6DCcO3rp4xNHU37voeUqfrLpWfCz2V3Sre8WRQeAbufLqd_RyljsJIv8uUd96htZ_kLAKZU9AvjAQBZZ2NbOfQlDG3VPlfzwMzGNhAnDZ48ZUwWEjVOqL9YeFnPuh0dtyV-kwL0xYkOLsD9J2Dc/w640-h453/image19.png" width="640" /></div><imgcaption><center><em>Prompt Library Improvements</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Gemini in Android Studio for businesses</span></h3> <p><a href="https://developer.android.com/gemini-for-businesses" target="_blank">Gemini in Android Studio for businesses</a> is now available. It provides all the benefits of Gemini in Android Studio, plus <b>enterprise-grade privacy and security features</b> backed by Google Cloud — giving your team the confidence they need to deploy AI at scale while keeping their data protected.</p> <p>Developers and admins can unlock these features and benefits by subscribing to <a href="https://codeassist.google/products/business" target="_blank">Gemini Code Assist</a> Standard or Enterprise editions. Discover the <a href="https://android-developers.googleblog.com/2025/04/gemini-in-android-studio-for-business.html" target="_blank">full list of Gemini in Android for business features available for your organization</a>.</p> <h2><span style="font-size: x-large;">Improved tools for creating great user experiences</span></h2> <p>Elevate your Compose UI development with the latest Android Studio enhancements.</p> <h3><span style="font-size: large;">Compose preview improvements</span></h3> <p>Compose preview interaction is now more efficient with the latest navigation improvements. Click on the preview name to jump to the preview definition or click the individual component to jump to the function where it’s defined. Hover states provide immediate visual feedback as you mouse over a preview frame. Improved keyboard arrow navigation eases movement through multiple previews, enabling faster UI iteration and refinement. Additionally, the Compose preview picker is now also available in the stable release.</p> <image><div style="text-align: center;"><img alt="moving image of compose preview navigation improvements in Android Studio" border="0" height="508" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIwDfj3R5TPO2OT-Im0buqjXfW9lqiBb7x2jSqfmspdjJlmQwQ3-3qwXcHaTZ5mxXY3qxuveNzlrBeC542Snf_soBpwGF3nLuCBtKB-tIt9_cQLlTadTKjaFyXmvZw2vVSyi33Z10QpJEFJSx9enuCmt-xxpu4F7G3kT3wOoHRv_58Mn0CUHl01gJy05o/w640-h508/compose-preview-navigation-improvements.gif" width="100%" /></div><imgcaption><center><em>Compose preview navigation improvements</em></center></imgcaption></image><br /> <image><div style="text-align: center;"><img alt="Compose preview picker in Android Studio" border="0" height="400" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVVd8m-L4dACjPgLLVhrQKcBywDcDzg-SJk82v72u-qVMzOYrgZMpNXDW2BjGITnbDv8r7rfTmFkHK827Sd4D0ks5mHViNDhasyYCAbqYpTNYwsmRj0Y74Wrxh07aWetgoUBhyphenhyphenG_CgfxpSoS1buG4tmu0bbGu2fSD_TZtgCNC-QulAutdBuPxyJoRqWl8/w289-h400/image25.png" width="50%" /></div><imgcaption><center><em>Compose preview picker </em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Resizable Previews</span></h3> <p>While in Compose Preview’s focus mode in Android Studio, you can now resize the preview window by dragging its edges. This gives you instant visual feedback on how your UI adapts to different screen sizes, ensuring responsiveness and visual consistency. This rapid iteration helps create UIs that look great on any Android device.</p> <image><div style="text-align: center;"><img alt="ALT TEXT" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJONnzdnMnQ8u4pqXScboFWmBspU9bAb0tfSteoBpaSweB9mPpRjeMfbRh4cqhBNBr9SIeo_vyruEhRVjhB1MMYrScUWTun4dZXIAvacWIYrWIxVY1GeXRELNq9HJcS8t8gZX3Nz62WJHLH-FGgmKv2fioAVMPFCU11DSS8hnAX-h6AI90_hH1vXyzB88/w568-h640/image8.gif" width="100%" /></div><imgcaption><center><em>Resizable Preview</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Embedded Android XR Emulator</span></h3> <p>The Android XR Emulator now launches by default in the embedded state. You can now deploy your application, navigate the 3D space and use the Layout Inspector directly inside Android Studio, streamlining your development flow. </p> <image><div style="text-align: center;"><img alt="Embedded XR emulator in Android Studio" border="0" height="379" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAL7VlmgyLuu6SV6tFb9VdFeFjrHIS4MOKwoSHGmFYUWYPLCAFKoNmyZbZ7jqmqDnm5L2LvtO-e4VXRdjilUCZ6tYrqFFAk-iiQz4jl-gaZPQC1s6MrPFjHNI3XNibiU55TblxlMrPVayTl_FeV6r5M9k0SajURa734SMlrq7-AXr5h13pvW2cxEbso-g/w640-h379/image4.gif" width="100%" /></div><imgcaption><center><em>Embedded XR Emulator</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">Improved tools for future-proofing and testing your Android apps</span></h2> <p>We’ve enhanced some of your favorite features so that you can test more confidently, future-proof your apps, and ensure app compatibility across a wide range of devices and Android versions.</p> <h3><span style="font-size: large;">Streamlined testing with Backup and Restore support</span></h3> <p>Android Studio offers built-in Backup and Restore support by letting you trigger app backups on connected devices directly from the <b>Running Devices</b> window. You can also configure your <b>Run/Debug</b> settings to automatically restore from a previous backup when launching your app. This simplifies the process of validating your app's Backup and Restore implementation and speeds up development by reducing manual setup for testing.</p> <image><div style="text-align: center;"><img alt="Streamlined testing with backup and restore support in Android Studio" border="0" height="436" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7hjAnLkiJb5u7Cxl8KEWjUTFxtu_oKQi9JxvqO0ZzKVmbnYZInFrdp8FjytTYrTno3msd__tU85mqDqGibzPacFuE4X9iDCrv8C2WYmSo9VfXuo4tjyGdEa9_LGpSoq5CTVVG0qyJq0emtfDvOaOumvW1cY-jaLVj7kYnBcmc1YTUmPBLG4uye82A9Ek/w640-h436/image18.png" width="100%" /></div><imgcaption><center><em>Streamlined testing with Backup and Restore support</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Android’s transition to 16 KB Page Size</span></h3> <p>The underlying architecture of Android is evolving, and a key step forward is the transition to <b>16 KB page sizes</b>. This fundamental change requires all Android apps with native code or dependencies to be recompiled for compatibility. To help you navigate this transition smoothly, Android Studio now offers proactive warnings when building APKs or Android App Bundles that are incompatible with 16 KB devices. Using the APK Analyzer, you can also find out which libraries are incompatible with 16 KB devices. To test your apps in this new environment, a dedicated 16 KB emulator target is also available in Android Studio alongside existing 4 KB images.</p> <image><div style="text-align: center;"><img alt="Android’s transition to 16 KB page size in Android Studio" border="0" height="318" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhddRGMI2OUAwfmYlPHEVqnnS3Tmwajd30ZKOID7dZqz2g1DgBbkFP7i4mh-DM9TrgZy2WxGZXK69n1xpGFPRBMNrO-hFWrOYZ8doKyUgwqDsIUGop2ZZ4TZfUwX3mhbWVl0J0LcFMexiHib-2r-tA_Mi99oTKMBuS0cX7WwunaMUAClDfJ9NwOrQAdsfs/w640-h318/image12.png" width="100%" /></div><imgcaption><center><em>Android’s transition to 16 KB page size</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Backup and Sync your Studio settings</span></h3> <p>When you sign in with your Google account or a JetBrains account in Android Studio, you can now sync your customizations and preferences across all installs and restore preferences automatically on remote Android Studio instances. Simply select “Enable Backup and Sync” while you’re logging in to Android Studio, or from the Settings &gt; Backup and Sync page, and follow the prompts.</p> <image><div style="text-align: center;"><img alt="Backup and sync settings in Android Studio" border="0" height="498" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUMnQu0LMKu7Xt7qFPTDKnT4iwWws4syX81stVC6Xf4fAeQg1uDnUzqNGQKbNUxfMLgiZRVamsZqlX6aqqQp_9xMTFEZNJ6mZXvKBwksmby53L7LCdprYeSp4cF0ufw8qjC5xAHRcfzm4whGnpQtTbNOkBQHj-Z5gSJyYy-8qFOxL68xo6DVfK64aWIk/w640-h498/image13.png" width="100%" /></div><imgcaption><center><em>Backup and Sync your Studio settings</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Increasing developer productivity with Android’s Kotlin Multiplatform improvements</span></h3> <p>Kotlin Multiplatform (KMP) enables teams to reach new audiences across Android and iOS with less development time. Usage has been growing in the developer community, with apps such as Google Docs now using it in production. We’ve released new Android Studio <a href="https://developer.android.com/kotlin/multiplatform/migrate" target="_blank">KMP project templates</a>, updated <a href="https://developer.android.com/kotlin/multiplatform" target="_blank">Jetpack libraries</a> and new codelabs (<a href="https://developer.android.com/codelabs/kmp-get-started" target="_blank">Get Started with KMP</a> and <a href="https://developer.android.com/codelabs/kmp-migrate-room" target="_blank">Migrate Existing Apps to Room KMP</a>) to help developers who are looking to get started with KMP.</p> <h2><span style="font-size: x-lar 16KB Page Size Automatic App Testing Backup and Restore (IDE) Compose Preview Prompt Library suggested fixes for crashes Transform Preview with Gemini Upgrade Agent XR Emulator Android Developers Announcing Kotlin Multiplatform Shared Module Template http://android-developers.googleblog.com/2025/05/kotlin-multiplatform-shared-module-templates.html Android Developers Blog urn:uuid:6c20357e-5045-dff8-3f31-a5dbdf8cda5a Tue, 20 May 2025 22:03:26 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2UwvjbFzf_BidFrger9mzJQmJ61A9kJAU5ENv_32s55N6fh3GVFLtz47TAl1Ax3mWkk3ltsaDFubqlqDHfX6y0WYax4Je92Zlebv-qih3X68zHR1MD8xEkkK7cPXCexw69PLzkKPzEQ8NQPAHNjhc7TLSVRRasiTDa_sIPDn144dN9D5hT9A_XwlkJ-o/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Blogger.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2UwvjbFzf_BidFrger9mzJQmJ61A9kJAU5ENv_32s55N6fh3GVFLtz47TAl1Ax3mWkk3ltsaDFubqlqDHfX6y0WYax4Je92Zlebv-qih3X68zHR1MD8xEkkK7cPXCexw69PLzkKPzEQ8NQPAHNjhc7TLSVRRasiTDa_sIPDn144dN9D5hT9A_XwlkJ-o/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Blogger.png" style="display: none;" /> <em>Posted by Ben Trengrove - Developer Relations Engineer, Matt Dyor - Product Manager</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQeI-Ng_f6_CGYh-v9eO-sy0P3PTXLcfl6GLOqSZoH9GJ6XWx0h0-9f23NYL8f2gV-TRGQzOtjKH5Jj8IUa70Gc_lgZWi_158AcAkYd98kBWGoW7necXpKtHQK8821bIgjY1m8hlso0kMTr3gw10liioR0c0YUY0tI9boFGOcvCKKZsJEm1C63UPKNEfE/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Hero_Blog.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQeI-Ng_f6_CGYh-v9eO-sy0P3PTXLcfl6GLOqSZoH9GJ6XWx0h0-9f23NYL8f2gV-TRGQzOtjKH5Jj8IUa70Gc_lgZWi_158AcAkYd98kBWGoW7necXpKtHQK8821bIgjY1m8hlso0kMTr3gw10liioR0c0YUY0tI9boFGOcvCKKZsJEm1C63UPKNEfE/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Hero_Blog.png" /></a> <p>To empower Android developers, we’re excited to announce Android Studio’s new Kotlin Multiplatform (KMP) Shared Module Template. This template was specifically designed to allow developers to use a single codebase and apply business logic across platforms. More specifically, developers will be able to add shared modules to existing Android apps and share the business logic across their Android and iOS applications.</p> <p>This makes it easier for Android developers to craft, maintain, and most importantly, own the business logic. The <b>KMP Shared Module Template</b> is available within Android Studio when you create a new module within a project.</p> <image><div style="text-align: center;"><img alt="a screen shot of the new module tab in Android Studio" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDB0ElhUV2jcJKU98tUhA81TvYEn6FzSIDIlgrfr-bIeTvYdM81iGhhmIf02isCk11k9um51JZaIerFZxvzSP6RMMRVcXaNGzHeK0YACo6sZZO7FWaPscCatJdns3VB3ftchu3ZXeP6bUR7c8U4JJq5R7bAWbabMqWHe3oA7CkraAYHWAQ1QRD3ZNtckg/s16000/shared-module-template-new-module-tab-kotlin-multiplatform-google-io.png" /></div><imgcaption><center><em>Shared Module Templates are found under the New Module tab</em></center></imgcaption></image><br /> <h2><span style="font-size: x-large;">A single code base for business logic</span></h2> <p>Most developers have grown accustomed to maintaining different code bases, platform to platform. In the past, whenever there’s an update to the business logic, it must be carefully updated in each codebase. But with the KMP Shared Module Template:</p> <ul><ul> <li>Developers can write once and publish the business logic to wherever they need it.</li> <li>Engineering teams can do more faster.</li> <li>User experiences are more consistent across the entire audience, regardless of platform or form factor.</li> <li>Releases are better coordinated and launched with fewer errors.</li> </ul></ul> <p>Customers and developer teams who adopt KMP Shared Module Templates should expect to achieve greater ROI from mobile teams who can turn their attention towards delighting their users more and worrying about inconsistent code less.</p> <h2><span style="font-size: x-large;">KMP enthusiasm</span></h2> <p>The Android developer community remains very excited about KMP, especially after Google I/O 2024 where Google announced official support for shared logic across Android and iOS. We have seen continued momentum and enthusiasm from the community. For example, there are now over 1,500 KMP libraries listed on JetBrains' <a href="https://klibs.io/" target="_blank">klibs.io</a>.</p> <p>Our customers are excited because KMP has made Android developers more productive. Consistently, Android developers have said that they want solutions that allow them to share code more easily and they want tools which boost productivity. This is why we recommend KMP; KMP simultaneously delivers a great experience for Android users while boosting ROI for the app makers. The KMP Shared Module Template is the latest step towards a developer ecosystem where user experience is consistent and applications are updated seamlessly.</p> <h2><span style="font-size: x-large;">Large scale KMP adoptions</span></h2> <p>This KMP Shared Module Template is new, but KMP more broadly is a maturing technology with several large-scale migrations underway. In fact, KMP has matured enough to support mission critical applications at Google. Google Docs, for example, is now running KMP in production on iOS with runtime performance on par or better than before. Beyond Google, <a href="https://www.stoneco.com.br/en/" target="_blank">Stone’s</a> 130 mobile developers are sharing over 50% of their code, allowing existing mobile teams to ship features approximately 40% faster to both Android and iOS.</p> <h2><span style="font-size: x-large;">KMP was designed for Android development</span></h2> <p>As always, we've designed the Shared Module Template with the needs of Android developer teams in mind. Making the KMP Shared Module Template part of the native Android Studio experience allows developers to efficiently add a shared module to an existing Android application and immediately start building shared business logic that leverages several KMP-ready Jetpack libraries including Room, SQLite, and DataStore to name just a few.</p> <h2><span style="font-size: x-large;">Come check it out at KotlinConf</span></h2> <p>Releasing Android Studio’s KMP Shared Module Template marks a significant step toward empowering Android development teams to innovate faster, to efficiently manage business logic, and to build high-quality applications with greater confidence. It means that Android developers can be responsible for the code that drives the business logic for every app across Android and iOS. We’re excited to bring Shared Module Template to <a href="https://kotlinconf.com/" target="_blank"><b>KotlinConf in Copenhagen, May 21 - 23</b></a>.</p> <image><div style="text-align: center;"><img alt="KotlinConf 2025 Copenhagen Denmark, May 21 Workshops May 22-23 Conference" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3C2szkC05YnqraA6dkb0Q0PQRoHvGXCE1q67H09RfZ1vzqr3BYzRtblX82Sqzysn2rMsiXKZK3z7rz_YqdKlkkyAiH7hG8GS3THSElpsSoVuAqOMId5S3P1Yhs7wUWbyTwjfM5wHVfCvqFmtxNtmaqzSSt2ke48mnrfihTBqTwviopIU5snnaVald3y0/s1600/kotlinconf-2025-copenhagen-denmark-workshops-conference-google-io.png" /></div></image><br /> <h2><span style="font-size: x-large;">Get started with KMP Shared Module Template</span></h2> <p>To get started, you'll need the latest edition of Android Studio. In your Android project, the Shared Module Template is available within Android Studio when you create a new module. Click on “File” then “New” then “New Module” and finally “Kotlin Multiplatform Shared Module” and you are ready to add a KMP Shared Module to your Android app.</p> <p>We appreciate any feedback on things you like or features you would like to see. If you find a bug, please report the issue. Remember to also follow us on X, LinkedIn, Blog, or YouTube for more Android development updates!</p> Android Development Android Studio code sharing cross-platform development DataStore iOS development Jetpack Libraries KMP Kotlin Kotlin Multiplatform KotlinConf 2025 Room SQLite Android Developers On-device GenAI APIs as part of ML Kit help you easily build with Gemini Nano http://android-developers.googleblog.com/2025/05/on-device-gen-ai-apis-ml-kit-gemini-nano.html Android Developers Blog urn:uuid:69dae884-18fd-2687-09c8-a30778803db2 Tue, 20 May 2025 19:38:53 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh96stpV5BvqzxBhk12xYFEg5g-5U4H93DJOId6MEDioi_kPsXWnW3tBwd_kYQfIrcaD4h6QF3cylN62tkiTMit-K6haiB8QSJ2Lnp9ggL_bY_hNwu-FX3HquDmZ98rMYoyug6PxJ0qQQ2_7hlB1BfhZXvh8IFweZJDRbplE0CdwrjjOsMH1GKfC_6hHXo/s1600/gen-ai-api-android-meta%20%283%29.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh96stpV5BvqzxBhk12xYFEg5g-5U4H93DJOId6MEDioi_kPsXWnW3tBwd_kYQfIrcaD4h6QF3cylN62tkiTMit-K6haiB8QSJ2Lnp9ggL_bY_hNwu-FX3HquDmZ98rMYoyug6PxJ0qQQ2_7hlB1BfhZXvh8IFweZJDRbplE0CdwrjjOsMH1GKfC_6hHXo/s1600/gen-ai-api-android-meta%20%283%29.png" style="display: none;" /> <em>Posted by Caren Chang - Developer Relations Engineer, Chengji Yan - Software Engineer, Taj Darra - Product Manager</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnecK6GCD0zX60dSKM1fspl7RcCZh3kaWG-PYKw3Yf4Vyf_3NXlsQoRAVQ_milOQqfBS6gtDODFwK5b9SskqFT7tu6fYDr8WcqxuJQxqIrA9L8VVVsxgSGJogtFqgFe0wVZswvVjTU1Zuf1-ZkAT_bPXL29iIVooQzoStIDZEbaVA0ygvoggMoMsCXrM/s1600/gen-ai-api-android-hero%20%281%29.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnecK6GCD0zX60dSKM1fspl7RcCZh3kaWG-PYKw3Yf4Vyf_3NXlsQoRAVQ_milOQqfBS6gtDODFwK5b9SskqFT7tu6fYDr8WcqxuJQxqIrA9L8VVVsxgSGJogtFqgFe0wVZswvVjTU1Zuf1-ZkAT_bPXL29iIVooQzoStIDZEbaVA0ygvoggMoMsCXrM/s1600/gen-ai-api-android-hero%20%281%29.png" /></a> <p>We are excited to announce a set of on-device <a href="https://developers.google.com/ml-kit/genai" target="_blank">GenAI APIs, as part of ML Kit</a>, to help you integrate Gemini Nano in your Android apps.</p> <p>To start, we are releasing 4 new APIs:</p> <ul><ul> <li><b>Summarization</b>: to summarize articles and conversations</li> <li><b>Proofreading</b>: to polish short text</li> <li><b>Rewriting</b>: to reword text in different styles</li> <li><b>Image Description</b>: to provide short description for images</li> </ul></ul> <h2><span style="font-size: x-large;">Key benefits of GenAI APIs</span></h2> <p>GenAI APIs are high level APIs that allow for easy integration, similar to existing <a href="https://developers.google.com/ml-kit" target="_blank">ML Kit APIs</a>. This means you can expect quality results out of the box without extra effort for prompt engineering or fine tuning for specific use cases.</p> <p>GenAI APIs run on-device and thus provide the following benefits:</p> <ul><ul> <li>Input, inference, and output data is processed locally</li> <li>Functionality remains the same without reliable internet connection</li> <li>No additional cost incurred for each API call</li> </ul></ul> <p>To prevent misuse, we also added safety protection in various layers, including base model training, safety-aware LoRA fine-tuning, input and output classifiers and safety evaluations.</p> <h2><span style="font-size: x-large;">How GenAI APIs are built</span></h2> <p>There are 4 main components that make up each of the GenAI APIs.</p> <ol> <li>Gemini Nano is the base model, as the foundation shared by all APIs.</li> <li>Small API-specific LoRA adapter models are trained and deployed on top of the base model to further improve the quality for each API.</li> <li>Optimized inference parameters (e.g. prompt, temperature, topK, batch size) are tuned for each API to guide the model in returning the best results.</li> <li>An evaluation pipeline ensures quality in various datasets and attributes. This pipeline consists of: LLM raters, statistical metrics and human raters.</li> </ol> <p>Together, these components make up the high-level GenAI APIs that simplify the effort needed to integrate Gemini Nano in your Android app.</p> <h2><span style="font-size: x-large;">Evaluating quality of GenAI APIs</span></h2> <p>For each API, we formulate a benchmark score based on the evaluation pipeline mentioned above. This score is based on attributes specific to a task. For example, when evaluating the summarization task, one of the attributes we look at is “grounding” (ie: factual consistency of generated summary with source content).</p> <p>To provide out-of-box quality for GenAI APIs, we applied feature specific fine-tuning on top of the Gemini Nano base model. This resulted in an increase for the benchmark score of each API as shown below:</p> <table style="width: 100%;"> <tbody><tr> <th style="text-align: left;"><b>Use case in English</b></th> <th style="text-align: left;">Gemini Nano Base Model</th> <th style="text-align: left;">ML Kit GenAI API</th> </tr> <tr> <td style="text-align: left;">Summarization</td> <td style="text-align: left;">77.2</td> <td style="text-align: left;">92.1</td> </tr> <tr> <td style="text-align: left;">Proofreading</td> <td style="text-align: left;">84.3</td> <td style="text-align: left;">90.2</td> </tr> <tr> <td style="text-align: left;">Rewriting</td> <td style="text-align: left;">79.5</td> <td style="text-align: left;">84.1</td> </tr> <tr> <td style="text-align: left;">Image Description</td> <td style="text-align: left;">86.9</td> <td style="text-align: left;">92.3</td> </tr> </tbody></table><br /> <p>In addition, this is a quick reference of how the APIs perform on a Pixel 9 Pro:</p> <table style="width: 100%;"> <tbody><tr> <th style="text-align: left;"></th> <th style="text-align: left;"><b>Prefix Speed<br />(input processing rate)</b></th> <th style="text-align: left;"><b>Decode Speed<br />(output generation rate)</b></th> </tr> <tr> <td style="text-align: left; width: 20%;">Text-to-text</td> <td style="text-align: left; width: 40%;">510 tokens/second</td> <td style="text-align: left; width: 40%;">11 tokens/second</td> </tr> <tr> <td style="text-align: left; width: 20%;">Image-to-text</td> <td style="text-align: left; width: 40%;">510 tokens/second + 0.8 seconds for image encoding</td> <td style="text-align: left; width: 40%;">11 tokens/second</td> </tr> </tbody></table> <h2><span style="font-size: x-large;">Sample usage</span></h2> <p>This is an example of implementing the GenAI Summarization API to get a one-bullet summary of an article:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">val</span> articleToSummarize = <span style="color: #ba2121;">"We are excited to announce a set of on-device generative AI APIs..."</span> <span style="color: #408080; font-style: italic;">// Define task with desired input and output format</span> <span style="color: green; font-weight: bold;">val</span> summarizerOptions = SummarizerOptions.builder(context) .setInputType(InputType.ARTICLE) .setOutputType(OutputType.ONE_BULLET) .setLanguage(Language.ENGLISH) .build() <span style="color: green; font-weight: bold;">val</span> summarizer = Summarization.getClient(summarizerOptions) suspend <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">prepareAndStartSummarization</span>(context: Context) { <span style="color: #408080; font-style: italic;">// Check feature availability. Status will be one of the following: </span> <span style="color: #408080; font-style: italic;">// UNAVAILABLE, DOWNLOADABLE, DOWNLOADING, AVAILABLE</span> <span style="color: green; font-weight: bold;">val</span> featureStatus = summarizer.checkFeatureStatus().await() <span style="color: green; font-weight: bold;">if</span> (featureStatus == FeatureStatus.DOWNLOADABLE) { <span style="color: #408080; font-style: italic;">// Download feature if necessary.</span> <span style="color: #408080; font-style: italic;">// If downloadFeature is not called, the first inference request will </span> <span style="color: #408080; font-style: italic;">// also trigger the feature to be downloaded if it's not already</span> <span style="color: #408080; font-style: italic;">// downloaded.</span> summarizer.downloadFeature(object : DownloadCallback { <span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadStarted</span>(bytesToDownload: Long) { } <span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadFailed</span>(e: GenAiException) { } <span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadProgress</span>(totalBytesDownloaded: Long) {} <span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadCompleted</span>() { startSummarizationRequest(articleToSummarize, summarizer) } }) } <span style="color: green; font-weight: bold;">else</span> <span style="color: green; font-weight: bold;">if</span> (featureStatus == FeatureStatus.DOWNLOADING) { <span style="color: #408080; font-style: italic;">// Inference request will automatically run once feature is </span> <span style="color: #408080; font-style: italic;">// downloaded.</span> <span style="color: #408080; font-style: italic;">// If Gemini Nano is already downloaded on the device, the </span> <span style="color: #408080; font-style: italic;">// feature-specific LoRA adapter model will be downloaded very </span> <span style="color: #408080; font-style: italic;">// quickly. However, if Gemini Nano is not already downloaded, </span> <span style="color: #408080; font-style: italic;">// the download process may take longer.</span> startSummarizationRequest(articleToSummarize, summarizer) } <span style="color: green; font-weight: bold;">else</span> <span style="color: green; font-weight: bold;">if</span> (featureStatus == FeatureStatus.AVAILABLE) { startSummarizationRequest(articleToSummarize, summarizer) } } <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">startSummarizationRequest</span>(text: String, summarizer: Summarizer) { <span style="color: #408080; font-style: italic;">// Create task request </span> <span style="color: green; font-weight: bold;">val</span> summarizationRequest = SummarizationRequest.builder(text).build() <span style="color: #408080; font-style: italic;">// Start summarization request with streaming response</span> summarizer.runInference(summarizationRequest) { newText -&gt; <span style="color: #408080; font-style: italic;">// Show new text in UI</span> } <span style="color: #408080; font-style: italic;">// You can also get a non-streaming response from the request</span> <span style="color: #408080; font-style: italic;">// val summarizationResult = summarizer.runInference(summarizationRequest)</span> <span style="color: #408080; font-style: italic;">// val summary = summarizationResult.get().summary</span> } <span style="color: #408080; font-style: italic;">// Be sure to release the resource when no longer needed</span> <span style="color: #408080; font-style: italic;">// For example, on viewModel.onCleared() or activity.onDestroy()</span> summarizer.close() </pre></div><br /> <p>For more examples of implementing the GenAI APIs, check out the official <a href="https://developers.google.com/ml-kit/genai" target="_blank">documentation</a> and samples on GitHub:</p> <ul><ul> <li><a href="https://github.com/android/ai-samples/tree/main/ai-catalog/samples" target="_blank">AI Catalog GenAI API Samples with Compose</a></li> <li><a href="https://github.com/googlesamples/mlkit/tree/master/android/genai" target="_blank">ML Kit GenAI APIs Quickstart</a></li> </ul></ul> <h2><span style="font-size: x-large;">Use cases</span></h2> <p>Here is some guidance on how to best use the current GenAI APIs:</p> <p>For <b>Summarization</b>, consider:</p> <ul><ul> <li>Conversation messages or transcripts that involve 2 or more users</li></ul><ul> <li>Articles or documents less than 4000 tokens (or about 3000 English words). Using the first few paragraphs for summarization is usually good enough to capture the most important information.</li> </ul></ul> <p>For <b>Proofreading</b> and <b>Rewriting</b> APIs, consider utilizing them during the content creation process for short content below 256 tokens to help with tasks such as:</p> <ul><ul> <li>Refining messages in a particular tone, such as more formal or more casual</li></ul><ul> <li>Polishing personal notes for easier consumption later</li></ul><ul> </ul></ul> <p>For the <b>Image Description</b> API, consider it for:</p> <ul><ul> <li>Generating titles of images</li></ul><ul> <li>Generating metadata for image search</li></ul><ul> <li>Utilizing descriptions of images in use cases where the images themselves cannot be displayed, such as within a list of chat messages</li></ul><ul> <li>Generating alternative text to help visually impaired users better understand content as a whole</li> </ul></ul> <h2><span style="font-size: x-large;">GenAI API in production</span></h2> <p>Envision is an app that verbalizes the visual world to help people who are blind or have low vision lead more independent lives. A common use case in the app is for users to take a picture to have a document read out loud. Utilizing the GenAI Summarization API, Envision is now able to get a concise summary of a captured document. This significantly enhances the user experience by allowing them to quickly grasp the main points of documents and determine if a more detailed reading is desired, saving them time and effort.</p> <image><div style="text-align: center;"><img alt="side by side images of a mobile device showing a document on a table on the left, and the results of the scanned document on the right showing details providing the what, when, and where as written in the document" border="0" height="613" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkOrO3R_GVdd26XH3C6XcLCgJ39SYS4z6i4spYGRPo8Z0uJtmwmnzejROH0b__EnZqxQ7rRfZiUCb2qYodgZCUCht43LaC0KCO2VGVtDSqcjc-eJ7Vp6f8U6qToWOakAqhflG0_e2t9fWa7JYdx26ykZZFqbVwTOYOroHmjoDRsxM2KzZmAU7CM2I_fuo/w640-h613/generative-api-in-action-android-envision.png" width="640" /></div></image><br /> <h2><span style="font-size: x-large;">Supported devices</span></h2> <p>GenAI APIs are available on Android devices using optimized MediaTek Dimensity, Qualcomm Snapdragon, and Google Tensor platforms through AICore. For a comprehensive list of devices that support GenAI APIs, refer to our <a href="https://developers.google.com/ml-kit/genai#device-support" target="_blank">official documentation</a>.</p> <h2><span style="font-size: x-large;">Learn more</span></h2> <p>Start implementing GenAI APIs in your Android apps today with guidance from our official <a href="https://developers.google.com/ml-kit/genai" target="_blank">documentation</a> and samples on GitHub: <a href="https://github.com/android/ai-samples/tree/main/ai-catalog/samples" target="_blank">AI Catalog GenAI API Samples with Compose, ML Kit GenAI APIs Quickstart</a>.</p> #GenerativeAI APIs Developer Tools Gemini Nano Google I/O 2025 image description ML Kit Android Developers Peacock built adaptively on Android to deliver great experiences across screens http://android-developers.googleblog.com/2025/05/peacock-optimizes-streaming-jetpack-compose.html Android Developers Blog urn:uuid:9cdb49eb-53cb-d761-08db-95cd3d36c337 Tue, 20 May 2025 19:38:22 +0000 <meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLVwc_aeyW7UAK0sMPkC2fx3szkb0xOx4g9txyLJ15pzekTIx4-fbHcmPi0bQ6gJlpR4s4MKRQWmKd6zpooI4NYYrZiVUIJC36DEmAu0Yg-yZD76Zu3W6yJnQT2zDhj2d8bSAkdGEgWdSezKcIMO03TwDVOdRUbfUSVOzTaMo2tUWuNN3ZH8XcGdFNcM/s1600/peacock-adaptive-android-case-study.png"> <img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLVwc_aeyW7UAK0sMPkC2fx3szkb0xOx4g9txyLJ15pzekTIx4-fbHcmPi0bQ6gJlpR4s4MKRQWmKd6zpooI4NYYrZiVUIJC36DEmAu0Yg-yZD76Zu3W6yJnQT2zDhj2d8bSAkdGEgWdSezKcIMO03TwDVOdRUbfUSVOzTaMo2tUWuNN3ZH8XcGdFNcM/s1600/peacock-adaptive-android-case-study.png"> <em>Posted by Sa-ryong Kang and Miguel Montemayor - Developer Relations Engineers </em> <a href="IMG" imageanchor="1" ><img style="100%" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLVwc_aeyW7UAK0sMPkC2fx3szkb0xOx4g9txyLJ15pzekTIx4-fbHcmPi0bQ6gJlpR4s4MKRQWmKd6zpooI4NYYrZiVUIJC36DEmAu0Yg-yZD76Zu3W6yJnQT2zDhj2d8bSAkdGEgWdSezKcIMO03TwDVOdRUbfUSVOzTaMo2tUWuNN3ZH8XcGdFNcM/s1600/peacock-adaptive-android-case-study.png" data-original-width="100%" data-original-height="800" /></a> <p><a href="https://play.google.com/store/apps/details?id=com.peacocktv.peacockandroid&amp;hl=en_US&amp;pli=1" target="_blank">Peacock</a> is <a href="https://www.nbcuniversal.com/" target="_blank">NBCUniversal’s</a> streaming service app available in the US, offering culture-defining entertainment including live sports, exclusive original content, TV shows, and blockbuster movies. The app continues to evolve, becoming more than just a platform to watch content, but a hub of entertainment.</p> <p>Today’s users are consuming entertainment on an increasingly wider array of device sizes and types, and in particular are moving towards mobile devices. Peacock has adopted Jetpack Compose to help with its journey in adapting to more screens and meeting users where they are.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ooRcQFMYzmA" width="100%" height="498" src="https://www.youtube.com/embed/ooRcQFMYzmA"></iframe><imgcaption><center><em><b>Disclaimer:</b> Peacock is available in the US only. This video will only be viewable to US viewers.</em></center></imgcaption><br/> <h2><span style="font-size: x-large;">Adapting to more flexible form factors</span></h2> <p>The Peacock development team is focused on bringing the best experience to users, no matter what device they’re using or when they want to consume content. With an emerging trend from app users to watch more on mobile devices and large screens like foldables, the Peacock app needs to be able to <a href="https://developer.android.com/adaptive-apps" target="_blank">adapt to different screen sizes</a>. As more devices are introduced, the team needed to explore new solutions that make the most out of each unique display permutation.</p> <p>The goal was to have the Peacock app to adapt to these new displays while continually offering high-quality entertainment without interruptions, like the stream reloading or visual errors. While thinking ahead, they also wanted to prepare and build a solution that was ready for <a href="https://developer.android.com/develop/xr/get-started" target="_blank">Android XR</a> as the entertainment landscape is shifting towards including more immersive experiences.</p> <image><div style="text-align: center;"><img id="imgFull" alt="quote card featuring a headshot of Diego Valente, Head of Mobile, Peacock & Global Streaming, reads 'Thinking adaptively isn't just about supporting tablets or large screens - it's about future proofing your app. Investing in adaptability helps you meet user's expectations of having seamless experiencers across all their devices and sets you up for what's next.'" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGb1jINgpKXi8zg_zdSmeSGYbnqTf9aZhb6b9xe8aXcarcM5u3UNpcMAcnWYDqxnxxGy8d7RL9C-GQU1nOzQR9SxNc3-y0RgDDGffinWUTnVUuQOUdq4fYLaz4m27Uwzgw-H02lYE0U3wVoiAkSW83qvJzWUkfKYkiYF0iFmCE6PfJEb03Hd9GXzB7V_Q/s1600/peacock-quote-card-adaptive-android-google-io.png" width="100%"/></div></image><br/> <h2><span style="font-size: x-large;">Building a future-proof experience with Jetpack Compose</span></h2> <p>In order to build a scalable solution that would help the Peacock app continue to evolve, the app was migrated to Jetpack Compose, Android’s toolkit for building scalable UI. One of the essential tools they used was the <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes" target="_blank">WindowSizeClass API</a>, which helps developers create and test UI layouts for different size ranges. This API then allows the app to seamlessly switch between pre-set layouts as it reaches established viewport breakpoints for different window sizes.</p> <p>The API was used in conjunction with <a href="https://developer.android.com/kotlin/coroutines" target="_blank">Kotlin Coroutines</a> and <a href="https://developer.android.com/kotlin/flow" target="_blank">Flows</a> to keep the UI state responsive as the window size changed. To test their work and fine tune edge case devices, Peacock used the Android Studio emulator to simulate a wide range of Android-based devices.</p> <p>Jetpack Compose allowed the team to build adaptively, so now the Peacock app responds to a wide variety of screens while offering a seamless experience to Android users. “The app feels more native, more fluid, and more intuitive across all form factors,” said Diego Valente, Head of Mobile, Peacock and Global Streaming. “That means users can start watching on a smaller screen and continue instantly on a larger one when they unfold the device—no reloads, no friction. It just works.”</p> <h2><span style="font-size: x-large;">Preparing for immersive entertainment experiences</span></h2> <p>In building adaptive apps on Android, John Jelley, Senior Vice President, Product &amp; UX, Peacock and Global Streaming, says Peacock has also laid the groundwork to quickly adapt to the Android XR platform: “Android XR builds on the same large screen principles, our investment here naturally extends to those emerging experiences with less developmental work.”</p> <p>The team is excited about the prospect of features unlocked by Android XR, like Multiview for sports and TV, which enables users to watch multiple games or camera angles at once. By tailoring spatial windows to the user’s environment, the app could offer new ways for users to interact with contextual metadata like sports stats or actor information—all without ever interrupting their experience.</p> <h2><span style="font-size: x-large;">Build adaptive apps</span></h2> <p>Learn how to <a href="https://developer.android.com/adaptive-apps" target="_blank">unlock your app's full potential</a> on phones, tablets, foldables, and beyond.</p> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p><br /> adaptive UI Android Developer Android Device Streaming Android XR foldables Google I/O 2025 Jetpack Compose Large Screens Mobile Development user experience Android Developers What's New in Jetpack Compose http://android-developers.googleblog.com/2025/05/whats-new-in-jetpack-compose.html Android Developers Blog urn:uuid:f5781da1-2bac-3c69-f8cd-c70d7bc712ad Tue, 20 May 2025 19:37:48 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s1600/new-in-jetpack-compose-google-io-meta.gif" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s1600/new-in-jetpack-compose-google-io-meta.gif" style="display: none;" /> <em>Posted by Nick Butcher – Product Manager</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgRGZWNX77zS6mCr3oYpd37jBJerIQMhszxrDGPGVMbu5G0ov0dXJ1isuxfmPScPX47mrEGcrfTfTjVEWQxrEi74fWPmbzesAdhosiJWw8A89PByBE7XkGVoUdbx7RGuScw7ArTfAVGyrKYEsmoZuhwJ-wSzFyqT1YIG1vGiSTgOSbWJtxoCel5V9fxY/s1600/new-in-jetpack-compose.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgRGZWNX77zS6mCr3oYpd37jBJerIQMhszxrDGPGVMbu5G0ov0dXJ1isuxfmPScPX47mrEGcrfTfTjVEWQxrEi74fWPmbzesAdhosiJWw8A89PByBE7XkGVoUdbx7RGuScw7ArTfAVGyrKYEsmoZuhwJ-wSzFyqT1YIG1vGiSTgOSbWJtxoCel5V9fxY/s1600/new-in-jetpack-compose.png" /></a> <p>At Google I/O 2025, we announced a host of features, performance, stability, libraries, and tools updates for <a href="https://developer.android.com/compose" target="_blank">Jetpack Compose</a>, our recommended Android UI toolkit. With Compose you can build excellent apps that work across devices. Compose has matured a lot since it was first announced (at Google I/O 2019!) and we're now seeing <a href="https://developer.android.com/compose#apps-built-with-compose" target="_blank">60% of the top 1,000 apps in the Play Store</a> such as MAX and Google Drive use and love it.</p> <h2><span style="font-size: x-large;">New Features</span></h2> <p>Since I/O last year, Compose Bill of Materials (BOM) version 2025.05.01 adds new features such as:</p> <ul><ul> <li><b>Autofill support</b> that lets users automatically insert previously entered personal information into text fields. </li><li><b>Auto-sizing text</b> to smoothly adapt text size to a parent container size. </li><li><b>Visibility tracking </b>for when you need high-performance information on a composable's position in its root container, screen, or window. </li><li><b>Animate bounds modifier</b> for beautiful automatic animations of a Composable's position and size within a LookaheadScope. </li><li><b>Accessibility checks in tests</b> that let you build a more accessible app UI through automated a11y testing. </li></ul></ul><br /> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">LookaheadScope { Box( Modifier .animateBounds(<span style="color: green; font-weight: bold;">this</span>@LookaheadScope) .width(<span style="color: green; font-weight: bold;">if</span>(inRow) <span style="color: #666666;">100.d</span>p <span style="color: green; font-weight: bold;">else</span> <span style="color: #666666;">150.d</span>p) .background(..) .border(..) ) } </pre></div> <image><div style="text-align: center;"><img alt="moving image of animate bounds modifier in action" border="0" height="324" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisG1SCzZ-1PSz3bcDEA7QXvQxwjKbfQEk1s1NbsqZMdDspyyBb1ptzitPMljKLcOatObogx5lPrIcbGDUkVocj299rFCrdE-J99kMraCwr1bM6AWPL3CXl8HxOJK9X-RdV0bT_ZDsBggHP5bt3PoOrod3fUzEEabpKmI-i-oJjf_0S8wyQ-qJDjmhIumE/w400-h324/animate-bounds-modifier.gif" width="400" /></div></image><br /> <p>For more details on these features, read <a href="https://android-developers.googleblog.com/2025/04/whats-new-in-jetpack-compose-april-25.html" target="_blank">What’s new in the Jetpack Compose April ’25 release</a> and check out these talks from Google I/O:</p> <ul><ul> <li><a href="https://io.google/2025/explore/technical-session-16" target="_blank">Mastering text input in Compose</a></li> <li><a href="https://io.google/2025/explore/technical-session-9" target="_blank">Build more accessible UIs with Jetpack Compose</a></li> </ul></ul> <p>If you’re looking to try out new Compose functionality, the <a href="https://developer.android.com/develop/ui/compose/bom#what_if_i_want_to_try_out_alpha_or_beta_releases_of_compose_libraries" target="_blank">alpha BOM</a> offers new features that we're working on including:</p> <ul><ul> <li>Pausable Composition (see below)</li> <li>Updates to LazyLayout prefetch</li> <li>Context Menus</li> <li>New modifiers: <span style="color: #0d904f; font-family: courier;">onFirstVisible</span>, <span style="color: #0d904f; font-family: courier;">onVisbilityChanged</span>, <span style="color: #0d904f; font-family: courier;">contentType</span></li> <li>New Lint checks for frequently changing values and elements that should be remembered in composition</li> </ul></ul> <p>Please try out the alpha features and <a href="https://issuetracker.google.com/issues/new?component=612128" target="_blank">provide feedback</a> to help shape the future of Compose.</p> <h2><span style="font-size: x-large;">Material Expressive</span></h2> <p>At Google I/O, we unveiled Material Expressive, Material Design’s latest evolution that helps you make your products even more engaging and easier to use. It's a comprehensive addition of new components, styles, motion and customization options that help you to build beautiful rich UIs. The Material3 library in the latest <a href="https://developer.android.com/develop/ui/compose/bom#what_if_i_want_to_try_out_alpha_or_beta_releases_of_compose_libraries" target="_blank">alpha BOM</a> contains many of the new expressive components for you to try out.</p> <image><div style="text-align: center;"><img alt="moving image of material expressive design example" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s16000/new-in-jetpack-compose-google-io-meta.gif" /></div></image><br /> <p>Learn more to <a href="https://m3.material.io/blog/building-with-m3-expressive" target="_blank">start building with Material Expressive</a>.</p> <h2><span style="font-size: x-large;">Adaptive layouts library</span></h2> <p>Developing adaptive apps across form factors including phones, foldables, tablets, desktop, cars and Android XR is now easier with the latest enhancements to the Compose adaptive layouts library. The stable <a href="https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.1.0" target="_blank">1.1 release</a> adds support for predictive back gestures for smoother transitions and pane expansion for more flexible two pane layouts on larger screens. Furthermore, the <a href="https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#compose_material3_adaptive_version_12_2" target="_blank">1.2 (alpha) release</a> adds more flexibility for how panes are displayed, adding strategies for reflowing and levitating.</p> <image><div style="text-align: center;"><img alt="moving image of compose adaptive layouts updates in the Google Play app" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ir7eGSz036zy966UuT7AeqwENw5jbJpvzJKgZvEvg-55RlZHecPCUvF2QJifyt0WwE9wjj95MYp0Y6uR7ZjfKkmpGHlaZ09Qx-t7OCSqKkqWiaDeQkToabXWqe3jJhSaehclZiNPkWejK1jG0UD8rJqC-3PB5EIs0EyIX98iDijA9r4G4Pvlj4Vm50w/s16000/compose-adaptive-layouts-updates-google-play-app.gif" /></div><imgcaption><center><em>Compose Adaptive Layouts Updates in the Google Play app</em></center></imgcaption></image><br /> <p>Learn more about <a href="https://android-developers.googleblog.com/2025/05/adaptiveapps-io25.html" target="_blank">building adaptive android apps with Compose</a>.</p> <h2><span style="font-size: x-large;">Performance</span></h2> <p>With each release of Jetpack Compose, we continue to prioritize performance improvements. The latest stable release includes significant rewrites and improvements to multiple sub-systems including semantics, focus and text optimizations. Best of all these are available to you simply by <b>upgrading your Compose dependency;</b> no code changes required.</p> <image><div style="text-align: center;"><img alt="bar chart of internal benchmarks for performance run on a Pixel 3a device from January to May 2023 measured by jank rate" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTlzZ4wBTQj8f_ZZpQycILJ9AiFywOWWzEVagbAHx2Ko7CRUcf0rWK8YsOXJqBxrDr2jLM7L7Fzcf16tj5NGTDMb8Vs5by9LW636hcGbqI78shnFSolIu4Qug5wpu_Ib8MZ5Eyj5g9MFfGH9wlmn7pPVdzaFjlVWCwBj7n0H4NI9jo68KEyWv9d6vr724/s1600/performance-jank-rate-adaptive-compose-google-io.png" /></div><imgcaption><center><em>Internal benchmark, run on a Pixel 3a</em></center></imgcaption></image><br /> <p>We continue to work on further performance improvements, notable changes in the latest alpha BOM include:</p> <ul><ul> <li><b>Pausable Composition</b> allows compositions to be paused, and their work split up over several frames.</li> <li><b>Background text prefetch</b> enables text layout caches to be pre-warmed on a background thread, enabling faster text layout.</li> <li><b>LazyLayout prefetch improvements</b> enabling lazy layouts to be smarter about how much content to prefetch, taking advantage of pausable composition.</li> </ul></ul> <p>Together these improvements eliminate nearly all jank in an internal benchmark.</p> <h2><span style="font-size: x-large;">Stability</span></h2> <p>We've heard from you that upgrading your Compose dependency can be challenging, encountering bugs or behaviour changes that prevent you from staying on the latest version. We've invested significantly in improving the stability of Compose, working closely with the many Google app teams building with Compose to detect and prevent issues before they even make it to a release.</p> <p>Google apps develop against and release with snapshot builds of Compose; as such, Compose is tested against the <b>hundreds of thousands of Google app tests</b> and any Compose issues are immediately actioned by our team. We have recently invested in increasing the cadence of updating these snapshots and now update them <b>daily from Compose tip-of-tree</b>, which means we’re receiving feedback faster, and are able to resolve issues long before they reach a public release of the library.</p> <p>Jetpack Compose also relies on <span style="color: #0d904f; font-family: courier;">@Experimental</span> annotations to mark APIs that are subject to change. We heard your feedback that some APIs have remained experimental for a long time, reducing your confidence in the stability of Compose. We have invested in stabilizing experimental APIs to provide you a more solid API surface, and <b>reduced the number of experimental APIs by 32% in the last year</b>.</p> <p>We have also heard that it can be hard to debug Compose crashes when your own code does not appear in the stack trace. In the latest alpha BOM, we have added a new <a href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composer?hl=en#setDiagnosticStackTraceEnabled%28kotlin.Boolean%29" target="_blank">opt-in feature</a> to provide more diagnostic information. Note that this does not currently work with minified builds and comes at a performance cost, so we recommend only using this feature in debug builds.</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">class</span> <span style="color: blue; font-weight: bold;">App</span> : Application() { <span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onCreate</span>() { <span style="color: #408080; font-style: italic;">// Enable only for debug flavor to avoid perf impact in release</span> Composer.setDiagnosticStackTraceEnabled(BuildConfig.DEBUG) } } </pre></div> <h2><span style="font-size: x-large;">Libraries</span></h2> <p>We know that to build great apps, you need Compose integration in the libraries that interact with your app's UI.</p> <p>A core library that powers any Compose app is <b>Navigation</b>. You told us that you often encountered limitations when managing state hoisting and directly manipulating the back stack with the current Compose Navigation solution. We went back to the drawing-board and completely reimagined how a navigation library should integrate with the Compose mental model. We're excited to introduce <b><a href="https://goo.gle/nav3_launch_blog" target="_blank">Navigation 3</a></b>, a new artifact designed to empower you with greater control and simplify complex navigation flows.</p> <p>We're also investing in Compose support for <b>CameraX and Media3</b>, making it easier to integrate camera capture and video playback into your UI with Compose idiomatic components.</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">@Composable <span style="color: green; font-weight: bold;">private</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">VideoPlayer</span>( player: Player?, <span style="color: #408080; font-style: italic;">// from media3</span> modifier: Modifier = Modifier ) { Box(modifier) { PlayerSurface(player) <span style="color: #408080; font-style: italic;">// from media3-ui-compose</span> player?.let { <span style="color: #408080; font-style: italic;">// custom play-pause button UI</span> <span style="color: green; font-weight: bold;">val</span> playPauseButtonState = rememberPlayPauseButtonState(it) <span style="color: #408080; font-style: italic;">// from media3-ui-compose</span> MyPlayPauseButton(playPauseButtonState, Modifier.align(BottomEnd).padding(<span style="color: #666666;">16.d</span>p)) } } } </pre></div><br/> To learn more, see the <a href="https://developer.android.com/media/media3/ui/compose" target="_blank">media3 Compose documentation</a> and the <a href="https://github.com/android/platform-samples/tree/main/samples/camera/camerax/src/main/java/com/example/platform/camerax/basic/CameraXBasic.kt" target="_blank">CameraX samples</a>. <h2><span style="font-size: x-large;">Tools</span></h2> <p>We continue to improve the Android Studio tools for creating Compose UIs. The <a href="https://developer.android.com/studio/preview" target="_blank">latest Narwhal canary</a> includes:</p> <ul><ul> <li><b>Resizable Previews</b> instantly show you how your Compose UI adapts to different window sizes </li><li><b>Preview navigation improvements</b> using clickable names and components </li><li><b>Studio Labs</b> adaptive layouts Android Studio CameraX Development Tools Google I/O 2025 Jetpack Compose Jetpack Navigation media3 Navigation 3 Android Developers 16 things to know for Android developers at Google I/O 2025 http://android-developers.googleblog.com/2025/05/16-things-to-know-for-android-developers-google-io-2025.html Android Developers Blog urn:uuid:6be42b0f-44a1-a568-0dc2-b5cde9a24e41 Tue, 20 May 2025 19:03:41 +0000 <meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9MIW2UBiiU-RrzVtvnukfm2wzj2-OFAM75mAH2f3yZyoPoivSPB0ycuUgkSnTEhJo1EpkfZCOpEdGHQT8ICfD8qvoB2euLdesX7M5KxguVCM-2xgPsHXwLTPkB5txjhaoqI8VBwBB0InamA7idRMkP_0aUMq-sGyzXhHzR6gX_n_v0jxDJ-CDOIO3HrE/s1600/O25-BHero-Android-5-Meta.png"> <img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9MIW2UBiiU-RrzVtvnukfm2wzj2-OFAM75mAH2f3yZyoPoivSPB0ycuUgkSnTEhJo1EpkfZCOpEdGHQT8ICfD8qvoB2euLdesX7M5KxguVCM-2xgPsHXwLTPkB5txjhaoqI8VBwBB0InamA7idRMkP_0aUMq-sGyzXhHzR6gX_n_v0jxDJ-CDOIO3HrE/s1600/O25-BHero-Android-5-Meta.png"> <em>Posted by <a href="https://x.com/matthewmccull" target="_blank">Matthew McCullough</a> – VP of Product Management, Android Developer</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMBMzX28kZHHT7TSOgMqoyOJpzfVBFX1TdkbxXSV0TJQJvbm0d905KKfolPW-PtTxAhWF_r_NjaUybrhcDOXntZSb1txCh5QgtN8minYtCmT_m8WecYRlAefmvwRJDdUgP-XGABgORRTEvLpNi5HYzaa6x6KRREoRql6X4W3L_BL6Dex75XmY4ybcjHGs/s1600/O25-BHero-Android-5.png" imageanchor="1" ><img style="100%" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMBMzX28kZHHT7TSOgMqoyOJpzfVBFX1TdkbxXSV0TJQJvbm0d905KKfolPW-PtTxAhWF_r_NjaUybrhcDOXntZSb1txCh5QgtN8minYtCmT_m8WecYRlAefmvwRJDdUgP-XGABgORRTEvLpNi5HYzaa6x6KRREoRql6X4W3L_BL6Dex75XmY4ybcjHGs/s1600/O25-BHero-Android-5.png" data-original-width="100%" data-original-height="800" /></a> <p>Today at <a href="https://io.google/2025/" target="_blank">Google I/O</a>, we announced the many ways we’re helping you build excellent, adaptive experiences, and helping you stay more productive through updates to our tooling that put AI at your fingertips and throughout your development lifecycle. Here’s a recap of 16 of our favorite announcements for Android developers; you can also <a href="https://android-developers.googleblog.com/2025/05/the-android-show-io-edition.html" target="_blank">see what was announced</a> last week in <a href="https://www.android.com/new-features-on-android/io-2025/" target="_blank">The Android Show: I/O Edition</a>. And stay tuned over the next two days as we <a href="https://io.google/2025/explore?focus_areas=Android" target="_blank">dive into all of the topics in more detail</a>!</p> <h2><span style="font-size: x-large">Building AI into your Apps</span></h2> <h3><span style="font-size: large">1: Building intelligent apps with Generative AI</span></h3> <p>Generative AI enhances apps' experience by making them intelligent, personalized and agentic. This year, we <a href="https://android-developers.googleblog.com/2025/05/on-device-gen-ai-apis-ml-kit-gemini-nano.html" target="_blank">announced new ML Kit GenAI APIs using Gemini Nano</a> for common on-device tasks like summarization, proofreading, rewrite, and image description. We also <a href="https://io.google/2025/explore/technical-session-13" target="_blank">provided capabilities</a> for developers to harness more powerful models such as Gemini Pro, Gemini Flash, and Imagen via Firebase AI Logic for more complex use cases like image generation and processing extensive data across modalities, including bringing <a href="https://io.google/2025/explore/technical-session-2" target="_blank">AI to life in Android XR</a>, and a new AI sample app, <a href="https://android-developers.googleblog.com/2025/05/androidify-building-ai-driven-experiences-jetpack-compose-gemini-camerax.html" target="_blank">Androidify</a>, that showcases how these APIs can transform your selfies into unique Android robots! To start building intelligent experiences by leveraging these new capabilities, explore the <a href="http://d.android.com/ai" target="_blank">developer documentation</a>, <a href="http://github.com/android/ai-samples" target="_blank">sample apps</a>, and watch the <a href="https://io.google/2025/explore/technical-session-20" target="_blank">overview session</a> to choose the right solution for your app.</p> <h2><span style="font-size: x-large">New experiences across devices</span></h2> <h3><span style="font-size: large">2: One app, every screen: think adaptive and unlock 500 million screens</span></h3> <p>Mobile Android apps form the foundation across phones, foldables, tablets and ChromeOS, and this year we’re helping you bring them to cars and XR and expanding usages with desktop windowing and connected displays. This expansion means tapping into an ecosystem of 500 million devices – a significant opportunity to engage more users when you <b>think adaptive</b>, <a href="https://android-developers.googleblog.com/2025/05/adaptiveapps-io25.html" target="_blank">building a single mobile app</a> that works across form factors. Resources, including <a href="https://developer.android.com/develop/ui/compose/build-adaptive-apps#compose_material_3_adaptive" target="_blank">Compose Layouts library</a> and <a href="http://goo.gle/nav3" target="_blank">Jetpack Navigation</a> updates, help make building these dynamic experiences easier than before. You can see how <a href="https://android-developers.googleblog.com/2025/05/peacock-optimizes-streaming-jetpack-compose.html" target="_blank">Peacock, NBCUniveral’s streaming service (available in the US) is building adaptively</a> to meet users where they are.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ooRcQFMYzmA" width="100%" height="498" src="https://www.youtube.com/embed/ooRcQFMYzmA"></iframe><imgcaption><center><em><b>Disclaimer:</b> Peacock is available in the US only. This video will only be viewable to US viewers.</em></center></imgcaption><br/> <h3><span style="font-size: large">3: Material 3 Expressive: design for intuition and emotion</span></h3> <p>The new <a href="https://m3.material.io/blog/building-with-m3-expressive?utm_source=blog&amp;utm_medium=motion&amp;utm_campaign=IO25" target="_blank">Material 3 Expressive</a> update provides tools to enhance your product's appeal by harnessing emotional UX, making it more engaging, intuitive, and desirable for users. Check out the I/O talk to <a href="https://io.google/2025/explore/technical-session-24" target="_blank">learn more about expressive design</a> and how it inspires emotion, clearly guides users toward their goals, and offers a flexible and personalized experience.</p> <image><div style="text-align: center;"><img id="imgFull" alt="moving image of Material 3 Expressive demo" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s1600/new-in-jetpack-compose-google-io-meta.gif" width="100%"/></div></image><br/> <h3><span style="font-size: large">4: Smarter widgets, engaging live updates</span></h3> <p>Measure the return on investment of your widgets (available soon) and easily create personalized widget previews with <a href="https://developer.android.com/jetpack/androidx/releases/glance#1.2.0-alpha01" target="_blank">Glance 1.2</a>. Promoted <a href="https://io.google/2025/explore/technical-session-53" target="_blank">Live Updates</a> notify users of important ongoing notifications and come with a new <a href="http://goo.gle/live-updates" target="_blank">Progress Style</a> standardized template.</p> <image><div style="text-align: center;"><img id="imgFull" alt="moving image of Material 3 Expressive demo" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNBO_jkUA2oo4uA70kc2GhnDWiXMExNX7T9K9ANfUqNP_YqeMZnPGPpPaJevmwLOrVeuzdgF8hJxvNT3jZ3FYBfx88T6EA_kOZKBNcbF-kSMKB1_9R5z-V0QqiFrNV0wmar-qk3AQO0Bt53dCtkssW2RDtS1lCosWESEQ7MSFgQXhRnXTNlBrBnbHMaO8/s1600/widgets-live-updates-android-16.gif" width="100%"/></div></image><br/> <h3><span style="font-size: large">5: Enhanced Camera &amp; Media: low light boost and battery savings</span></h3> <p>This year's I/O introduces several camera and media enhancements. These include a software low light boost for improved photography in dim lighting and native PCM offload, allowing the DSP to handle more audio playback processing, thus conserving user battery. Explore our detailed sessions on <a href="https://io.google/2025/explore/technical-session-19" target="_blank">built-in effects within CameraX and Media3</a> for further information.</p> <h3><span style="font-size: large">6: Build next-gen app experiences for Cars</span></h3> <p>We're launching expanded opportunities for developers to build in-car experiences, including new Gemini integrations, support for more app categories like Games and Video, and enhanced capabilities for media and communication apps via the Car App Library and new APIs. Alongside updated <a href="https://developer.android.com/docs/quality-guidelines/car-app-quality" target="_blank">car app quality tiers</a> and simplified distribution, we'll soon be providing improved testing tools like <a href="https://developer.android.com/training/cars/testing/aaos-on-pixel" target="_blank">Android Automotive OS on Pixel Tablet</a> and Firebase Test Lab access to help you bring your innovative apps to cars. Learn more from our <a href="https://io.google/2025/explore/technical-session-18" target="_blank">technical session</a> and <a href="https://android-developers.googleblog.com/2025/05/android-for-cars-google-io-2025.html" target="_blank">blog post on new in-car app experiences</a>.</p> <h3><span style="font-size: large">7: Build for Android XR's expanding ecosystem with Developer Preview 2 of the SDK</span></h3> <p>We <a href="https://blog.google/products/android/android-xr/" target="_blank">announced Android XR</a> in December, and today at Google I/O we shared a bunch of updates coming to the platform including Developer Preview 2 of the Android XR SDK plus an expanding ecosystem of devices: in addition to the first Android XR headset, Samsung’s Project Moohan, you’ll also see more devices including a new portable Android XR device from our partners at XREAL. There’s lots more to cover for <a href="https://developer.android.com/develop/xr" target="_blank">Android XR</a>: Watch the <a href="https://io.google/2025/explore/technical-session-2" target="_blank">Compose and AI on Android XR session</a>, and the <a href="https://io.google/2025/explore/technical-session-22" target="_blank">Building differentiated apps for Android XR with 3D content session</a>, and learn more about <a href="https://android-developers.googleblog.com/2025/05/updates-to-android-xr-sdk-developer-preview.html" target="_blank">building for Android XR</a>.</p> <image><div style="text-align: center;"><img alt="product image of XREAL’s Project Aura against a nebulous black background" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujCjZD5_MiRHDiDp_O-PRCGs_CdfARZbtfC5xqrKgMlJbWZQxNwdNN9C4SwVYB7Lu0Pm8GTubBcVenZm07pCIMAuAx5WcFjADHyE0JeQYhIlEmTqoW0te7xBz15Ab3Oh7C8IN4uk5zLnvqRJmUIEz0lOtSMO-e1oeiWK-jo2NvvrzBQoNUSU7_0UFmf4/s1600/android-xr-google-io-meta.png" width="100%" /></div><imgcaption><center><em>XREAL’s Project Aura</em></center></imgcaption></image><br /> <h3><span style="font-size: large">8: Express yourself on Wear OS: meet Material Expressive on Wear OS 6</span></h3> <p>This year we are launching Wear OS 6: the most powerful and expressive version of Wear OS. <a href="https://blog.google/products/android/material-3-expressive-android-wearos-launch/" target="_blank">Wear OS 6 features Material 3 Expressive</a>, a new UI design with personalized visuals and motion for user creativity, coming to Wear, Android, and Google apps later this year. Developers gain access to Material 3 Expressive on Wear OS by utilizing new Jetpack libraries: Wear Compose Material 3, which provides components for apps and Wear ProtoLayout Material 3 which provides components and layouts for tiles. Get started with <a href="https://android-developers.googleblog.com/2025/05/whats-new-in-wear-os-6.html" target="_blank">Material 3 libraries and other updates on Wear</a>.</p> <image><div style="text-align: center;"><img alt="moving image displays examples of Material 3 Expressive on Wear OS experiences" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX8QuioDGc_JBakiOJJ61-2pX5dWwklsJL_eFJMl4EvMpst4kfMEwi3We1_UxfVFlJEmOGVVpX3obgnoQgr6QFtH3JNu0T-B526Z23vz1tZA5cgy7yHZsgc71Zrcd5GLPFba08tTSdZfQwueS4q65KCm864z9yFd1aoOU1MaLUHSReLvl3FlogIiAdd94/s1600/material3-expressive-wear-os.gif" width="100%" /></div><imgcaption><center><em>Some examples of Material 3 Expressive on Wear OS experiences</em></center></imgcaption></image><br /> <h3><span style="font-size: large">9: Engage users on Google TV with excellent TV apps</span></h3> <p>You can leverage more resources within Compose's core and Material libraries with the stable release of Compose for TV, empowering you to build excellent adaptive UIs across your apps. We're also thrilled to share <a href="https://android-developers.googleblog.com/2025/05/engage-users-google-tv-excellent-apps.html" target="_blank">exciting platform updates and developer tools designed to boost app engagement</a>, including bringing Gemini capabilities to TV in the fall, opening enrollment for our Video Discovery API, and more.</p> <h2><span style="font-size: x-large">Developer productivity</span></h2> <h3><span style="font-size: large">10: Build beautiful apps faster with Jetpack Compose</span></h3> <p><a href="https://developer.android.com/compose" target="_blank">Compose</a> is our big bet for UI development. The latest stable BOM release provides the features, performance, stability, and libraries that you need to build beautiful adaptive apps faster, so you can focus on <a href="https://android-developers.googleblog.com/2025/05/whats-new-in-jetpack-compose.html" target="_blank">what makes your app valuable to users</a>.</p> <image><div style="text-align: center;"><img alt="moving image of compose adaptive layouts updates in the Google Play app" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ir7eGSz036zy966UuT7AeqwENw5jbJpvzJKgZvEvg-55RlZHecPCUvF2QJifyt0WwE9wjj95MYp0Y6uR7ZjfKkmpGHlaZ09Qx-t7OCSqKkqWiaDeQkToabXWqe3jJhSaehclZiNPkWejK1jG0UD8rJqC-3PB5EIs0EyIX98iDijA9r4G4Pvlj4Vm50w/s16000/compose-adaptive-layouts-updates-google-play-app.gif" /></div><imgcaption><center><em>Compose Adaptive Layouts Updates in the Google Play app</em></center></imgcaption></image><br /> <h3><span style="font-size: large">11: Kotlin Multiplatform: new Shared Template lets you build across platforms, easily</span></h3> <p>Kotlin Multiplatform (KMP) enables teams to reach new audiences across Android and iOS with less development time. We’ve released a new Android Studio <a href="https://developer.android.com/kotlin/multiplatform/migrate" target="_blank">KMP shared module template</a>, updated <a href="https://developer.android.com/kotlin/multiplatform" target="_blank">Jetpack libraries</a> and new codelabs (<a href="https://developer.android.com/codelabs/kmp-get-started" target="_blank">Getting started with Kotlin Multiplatform</a> and <a href="https://developer.android.com/codelabs/kmp-migrate-room" target="_blank">Migrating your Room database to KMP</a>) to help developers who are looking to get started with KMP. Shared module templates make it easier for developers to craft, maintain, and own the business logic. Read more on <a href="https://android-developers.googleblog.com/2025/05/android-kotlin-multiplatform-google-io-kotlinconf-2025.html" target="_blank">what's new in Android's Kotlin Multiplatform</a>. <h3><span style="font-size: large">12: Gemini in Android Studio: AI Agents to help you work</span></h3> <p><a href="https://developer.android.com/gemini-in-android" target="_blank">Gemini in Android Studio</a> is the AI-powered coding companion that makes Android developers more productive at every stage of the dev lifecycle. In March, we <a href="https://android-developers.googleblog.com/2025/03/multimodal-image-attachment-now-available-gemini-android-studio.html" target="_blank">introduced Image to Code</a> to bridge the gap between UX teams and software engineers by intelligently converting design mockups into <a href="https://www.youtube.com/watch?v=f_6mtRWJzuc" target="_blank">working Compose UI code</a>. And today, we previewed new agentic AI experiences, <a href="https://www.youtube.com/watch?v=mP1tlIKK0R4" target="_blank">Journeys</a> for Android Studio and <a href="https://www.youtube.com/watch?v=ubyPjBesW-8" target="_blank">Version Upgrade Agent</a>. These innovations make it easier to build and test code. You can read more about these updates in <a href="https://android-developers.googleblog.com/2025/05/google-io-2025-whats-new-in-android-development-tools.html" target="_blank">What’s new in Android development tools</a>.</p> <iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ubyPjBesW-8" width="100%" height="413" src="https://www.youtube.com/embed/ubyPjBesW-8"></iframe> <h3><span style="font-size: large">13: Android Studio: smarter with Gemini</span></h3> <p>In this latest release, we're empowering devs with AI-driven tools like <a href="https://developer.android.com/gemini-in-android" target="_blank">Gemini in Android Studio</a>, <a href="https://android-developers.googleblog.com/2025/03/multimodal-image-attachment-now-available-gemini-android-studio.html" target="_blank">streamlining UI creation</a>, <a href="https://www.youtube.com/watch?v=mP1tlIKK0R4" target="_blank">making testing easier</a>, and ensuring apps are future-proofed in our ever-evolving Android ecosystem. These innovations accelerate development cycles, improve app quality, and help you stay ahead in a dynamic mobile landscape. To take advantage, upgrade to <a href="https://developer.android.com/studio/preview" target="_blank">the latest Studio release</a>. You can read more about these innovations in <a href="https://android-developers.googleblog.com/2025/05/google-io-2025-whats-new-in-android-development-tools.html" target="_blank">What’s new in Android development tools</a>.</p> <image><div style="text-align: center;"><img alt="moving image of Gemini in Android Studio Agentic Experiences including Journeys and Version Upgrade" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjelKyx9X7027dUVJZ1q_P3H_yb57I83pd0163JW8iZc0TqkmDpGtX-BZztxlTzrz6IxxbPy6IfYrYM57h_yis57Zf3paFulaoBX56rYRi6Fe2hm2HTmfcxpZ6qM2NLVWNWUkTVZX6S4_4FkBby2ONmztmQ38BcCetvshRMof-mO9n4rEWYTMw-8kaXvyA/s1600/gemini-in-android-studio-journeys.gif" /></div></image><br /> <h2><span style="font-size: x-large">And the latest on driving business growth</span></h2> <h3><span style="font-size: large">14: What’s new in Google Play</span></h3> <p>Get ready for exciting updates from Play designed to boost your discovery, engagement and revenue! Learn how we’re continuing to become a content-rich destination with enhanced personalization and fresh ways to showcase your apps and content. Plus, explore powerful new subscription features designed to streamline checkout and reduce churn. Read <a href="https://android-developers.googleblog.com/2025/05/io-2025-whats-new-in-google-play.html" target="_blank">I/O 2025: What's new in Google Play</a> to learn more.</p> <image><div style="text-align: center;"><img alt="a moving image of three mobile devices displaying how content is displayed on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNeLmRYs6g8B9gGtuXJ9WJjOXWo62idQ9V-F8bqqm1k_29Yiwamy1faBLDd0SJRC0B6HYCiY11iWJjfYZoO7qn4UJY4zU4ckStiG3iSvAXqV76rHpVJj0mkTYs73fyjrOj3SMIkVOU77NLwWx2D-VFO-E9_0qPen1U2owcKq_8jt1Zth5NbX0nnBL4StU/s16000/curated-spaces-new-in-play-google-io.gif" /></div></image><br /> <h3><span style="font-size: large">15: Start migrating to Play Games Services v2 today</span></h3> <p><a href="https://developer.android.com/games/pgs/overview" target="_blank">Play Games Services (PGS)</a> connects over 2 billion gamer profiles on Play, powering cross-device gameplay, personalized gaming content and rewards for your players throughout the gaming journey. We are moving PGS v1 features to v2 with more advanced features and an easier integration path. Learn more about the <a href="https://io.google/2025/explore/technical-session-15" target="_blank">migration timeline and new features</a>.</p> <h3><span style="font-size: large">16: And of course, Android 16</span></h3> <p>We unpacked some of the latest features coming to users in <a href="https://developer.android.com/about/versions/16" target="_blank">Android 16</a>, which we’ve been <a href="https://android-developers.googleblog.com/search?q=Android+16" target="_blank">previewing with you</a> for the last few months. If you haven’t already, make sure to <a href="https://developer.android.com/about/versions/16/get" target="_blank">test your apps with the latest Beta of Android 16</a>. Android 16 includes Live Updates, professional media and camera features, desktop windowing and connected displays, major accessibility enhancements and much more.</p> <h2><span style="font-size: x-large">Check out all of the Android and Play content at Google I/O</span></h2> <p>This was just a preview of some of the cool updates for Android developers at Google I/O, but <a href="https://io.google/2025/" target="_blank">stay tuned to Google I/O</a> over the next two days as we dive into a range of Android developer topics in more detail. You can check out the <a href="https://io.google/2025/explore/pa-keynote-7" target="_blank">What’s New in Android</a> and the <a AI Android android developers Android Studio cross-device Developer Tools Google I/O 2025 Google Play google tv Jetpack Compose Kotlin Multiplatform Material Design Wear OS Android Developers What’s new in Wear OS 6 http://android-developers.googleblog.com/2025/05/whats-new-in-wear-os-6.html Android Developers Blog urn:uuid:9b16a1ee-078c-b8b8-8fe8-7ade05a23a41 Tue, 20 May 2025 19:03:24 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeHGsTq83LxzI8LuR4L6YD8IR7NfVNuOdty-7Ctx7uMvxUsSlOaTjf49NA4Lru9VG9BSq275Xh_BLzkQ4zbmF08DMWlg3OMLKg61889Qd2_wabbCdOFpqsDXXeNdvnoCQjvc_fvlzhqPIx_h7psbVp-iNXmBnGLT4CDjIMWeNTDsdENEyTUFrL1nhHH5g/s1600/new-in-wear-os-6-google-io-2025%20%282%29.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeHGsTq83LxzI8LuR4L6YD8IR7NfVNuOdty-7Ctx7uMvxUsSlOaTjf49NA4Lru9VG9BSq275Xh_BLzkQ4zbmF08DMWlg3OMLKg61889Qd2_wabbCdOFpqsDXXeNdvnoCQjvc_fvlzhqPIx_h7psbVp-iNXmBnGLT4CDjIMWeNTDsdENEyTUFrL1nhHH5g/s1600/new-in-wear-os-6-google-io-2025%20%282%29.png" style="display: none;" /> <em>Posted by <a href="https://www.linkedin.com/in/chiarachiappini/" target="_blank">Chiara Chiappini</a> – Developer Relations Engineer</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5d-DTtcDafKrQB-N_rY9u_SZxiuCpXFMxS5qG8EwGSpejAJcOUxAcumJzTqU_TQrYkk-9D9IWSB30Hw5JJSr_fDtU4RDW4b6bVqmeeEr-bmRAB4Q0zFSu_Yeu2AeIi_fbcCJskN7HxdSpxSwAxJw1PEO3LrUP0lcUFrZEc-gClxpXRih3PJuQ8N6WWY/s1600/new-in-wear-os-6-google-io-2025%20%281%29.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5d-DTtcDafKrQB-N_rY9u_SZxiuCpXFMxS5qG8EwGSpejAJcOUxAcumJzTqU_TQrYkk-9D9IWSB30Hw5JJSr_fDtU4RDW4b6bVqmeeEr-bmRAB4Q0zFSu_Yeu2AeIi_fbcCJskN7HxdSpxSwAxJw1PEO3LrUP0lcUFrZEc-gClxpXRih3PJuQ8N6WWY/s1600/new-in-wear-os-6-google-io-2025%20%281%29.png" /></a> <p>This year, we’re excited to introduce Wear OS 6: the most power-efficient and expressive version of Wear OS yet.</p> <p>Wear OS 6 introduces the new design system we call <a href="http://blog.google/products/android/material-3-expressive-android-wearos-launch" target="_blank">Material 3 Expressive</a>. It features a major refresh with visual and motion components designed to give users an experience with more personalization. The new design offers a great level of expression to meet user demand for experiences that are modern, relevant, and distinct. Material 3 Expressive is coming to Wear OS, Android, and all your favorite Google apps on these devices later this year.</p> <p>The good news is that you don’t need to compromise battery for beauty: thanks to Wear OS platform optimizations, watches updating from Wear OS 5 to Wear OS 6 can see up to 10% improvement in battery life.<sup>1</sup></p> <h2><span style="font-size: x-large;">Wear OS 6 developer preview</span></h2> <p>Today we’re releasing the Developer Preview of Wear OS 6, the next version of Google’s smartwatch platform, based on Android 16.</p> <p>Wear OS 6 brings a number of developer-facing changes, such as refining the always-on display experience. <a href="https://developer.android.com/training/wearables/versions/6/changes" target="_blank">Check out what’s changed</a> and <a href="https://developer.android.com/training/wearables/versions/6/emulator" target="_blank">try the new Wear OS 6 emulator</a> to test your app for compatibility with the new platform version.</p> <h2><span style="font-size: x-large;">Material 3 Expressive on Wear OS</span></h2> <image><div style="text-align: center;"><img alt="moving image displays examples of Material 3 Expressive on Wear OS experiences" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX8QuioDGc_JBakiOJJ61-2pX5dWwklsJL_eFJMl4EvMpst4kfMEwi3We1_UxfVFlJEmOGVVpX3obgnoQgr6QFtH3JNu0T-B526Z23vz1tZA5cgy7yHZsgc71Zrcd5GLPFba08tTSdZfQwueS4q65KCm864z9yFd1aoOU1MaLUHSReLvl3FlogIiAdd94/s1600/material3-expressive-wear-os.gif" width="100%" /></div><imgcaption><center><em>Some examples of Material 3 Expressive on Wear OS experiences</em></center></imgcaption></image><br /> <p>Material 3 Expressive for the watch is fully optimized for the round display. We recommend developers embrace the new design system in their apps and tiles. To help you adopt Material 3 Expressive in your app, we have begun releasing new <a href="https://developer.android.com/design/ui/wear/guides/get-started" target="_blank">design guidance</a> for Wear OS, along with corresponding <a href="https://developer.android.com/design/ui/wear/guides/foundations/download" target="_blank">Figma design kits</a>.</p> <p>As a developer, you can get access the Material 3 Expressive on Wear OS using new Jetpack libraries:</p> <ul><ul> <li><a href="https://developer.android.com/jetpack/androidx/releases/wear-compose#1.5.0-beta01" target="_blank">Wear Compose Material 3</a> that provides components for apps.</li> <li><a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-beta02" target="_blank">Wear ProtoLayout Material 3</a> that provides components and layouts for tiles.</li> </ul></ul> <p>These two libraries provide implementations for the components catalog that adheres to the Material 3 Expressive design language.</p> <h3><span style="font-size: large;">Make it personal with richer color schemes using themes</span></h3> <image><div style="text-align: center;"><img alt="moving image showing how dynamic color theme updates colors of apps and Tiles" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiArqKHaEcCIOWzN9rfx7Idh-PcYHpMMMrPf46kXpRXNQsNl6SSMfpO86Wobyb9WrnrJ_BLJVs0j3G8RCCyoiHZxIrouK-yzuQDwIZb8CYNK2R002NqRW5jV1DGBkFnzSmPBSV53VyxOqA_4n2-djlsJMOLUkjKiGAoTTc-JwUVFYcy3oBUYdgtjZhpnNk/s1600/wear-dynamic-color.gif" width="100%" /></div><imgcaption><center><em>Dynamic color theme updates colors of apps and Tiles</em></center></imgcaption></image><br /> <p>The Wear Compose Material 3 and Wear Protolayout Material 3 libraries provide updated and extended color schemes, typography, and shapes to bring both depth and variety to your designs. Additionally, your tiles now align with the system font by default (on Wear OS 6+ devices), offering a more cohesive experience on the watch.</p> <p>Both libraries introduce <a href="https://m3.material.io/styles/color/dynamic/choosing-a-source" target="_blank">dynamic color theming</a>, which automatically generates a color theme for your app or tile to match the colors of the watch face of Pixel watches.</p> <h3><span style="font-size: large;">Make it more glanceable with new tile components</span></h3> <p>Tiles now support a new framework and a set of components that embrace the watch's circular form factor. These components make tiles more consistent and glanceable, so users can more easily take swift action on the information included in them.</p> <p>We’ve introduced a 3-slot tile layout to improve visual consistency in the Tiles carousel. This layout includes a title slot, a main content slot, and a bottom slot, designed to work across a range of different screen sizes:</p> <image><div style="text-align: center;"><img alt="moving image showing some examples of Tiles with the 3-slot tile layout" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRRRRhI0CHL_352Sk8OSVwmDoAzsJDJlgiL3_S_uJwEZ4xYWxPptcuPfA7h8Cfd1RR_cAcJ59OWLF6wKua2kfmlgh1TGLgOSXlsAjghm7cY1liuAZRgO-piJohIJ6P_TsrIvtERwY2HIaPKx8g-AUaK6fQAUK3sCZuY_Y23ePQOKIUG7YSvLw5qzmw9HE/s1600/wear-tile-.gif" width="100%" /></div><imgcaption><center><em>Some examples of Tiles with the 3-slot tile layout.</em></center></imgcaption></image><br /> <h3><span style="font-size: large;">Highlight user actions and key information with components optimized for round screen</span></h3> <p>The new Wear OS Material 3 components automatically adapt to larger screen sizes, building on the <a href="https://developer.android.com/training/wearables/versions/5#whats-in-wear-os-5" target="_blank">Large Display support</a> added as part of Wear OS 5. Additionally, components such as Buttons and Lists support shape morphing on apps.</p> <p>The following sections highlight some of the most exciting changes to these components.</p> <h4><span style="font-size: medium;">Embrace the round screen with the Edge Hugging Button</span></h4> <p>We introduced a new <a href="https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#EdgeButton%28kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.compose.material3.EdgeButtonSize,kotlin.Boolean,androidx.wear.compose.material3.ButtonColors,androidx.compose.foundation.BorderStroke,androidx.compose.foundation.interaction.MutableInteractionSource,kotlin.Function1%29" target="_blank">EdgeButton</a> for apps and tiles with an iconic design pattern that maximizes the space within the circular form factor, hugs the edge of the screen, and comes in 4 standard sizes.</p> <image><div style="text-align: center;"><img alt="moving image of a sreenshot representing an EdgeButton in a scrollable screen." border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW0jCRLST8uO-3C3V2HqIwSBcf2oUQpXqxooeNEbOjOacvR2UgpF5klvrm41qZCQQLSgZK5VDmR6R80BPzH2PNG2m8X_AprYvWpBl7sP2khu-Z1EfL4Hyrri5GTqbCrvGlxL1OKZ1cgJSbsZPLdVA2WoAGNLxi8TAyl3VqzrpptS1DwOdZSEJPRZAlWDM/s1600/tlc-in-situ-dark-wear-os.gif" width="100%" /></div><imgcaption><center><em>Screenshot representing an EdgeButton in a scrollable screen.</em></center></imgcaption></image><br /> <h4><span style="font-size: medium;">Fluid navigation through lists using new indicators</span></h4> <p>The new <span style="color: #0d904f; font-family: courier;">TransformingLazyColumn</span> from the Foundation library makes expressive motion easy with motion that fluidly traces the edges of the display. Developers can customize the collapsing behavior of the list when scrolling to the top, bottom and both sides of the screen. For example, components like <span style="color: #0d904f; font-family: courier;">Cards</span> can scale down as they are closer to the top of the screen.</p> <image><div style="text-align: center;"><img alt="moving image showing a TransformingLazyColumn with content that collapses and changes in size when approaching the edge of the screens. ." border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGFsDUmYpPgEN814QuLbZqBc4j7dFSbaTJNcJYhxp3bD5rBV0-kFWqkkQgW2_6brCyrk_fk_QJywS1WKaaq7wEjUYYMsLigi8pYThyphenhyphen88syG3I37MZa38sB-NNP9jUbn_Mlcah9bqW2ce75XeEGUEkO9E9ZhKL1Mj0KjtcN6NIsl5pi2N3zZ5ODPneNfa4/s1600/wear-notifications-transforminglazycolumn.gif" width="100%" /></div><imgcaption><center><em>TransformingLazyColumn allows content to collapse and change in size when approaching the edge of the screens</em></center></imgcaption></image><br /> <p>Material 3 Expressive also includes a <span style="color: #0d904f; font-family: courier;">ScrollIndicator</span> that features a new visual and motion design to make it easier for users to visualize their progress through a list. The <span style="color: #0d904f; font-family: courier;">ScrollIndicator</span> is displayed by default when you use a <span style="color: #0d904f; font-family: courier;">TransformingLazyColumn</span> and <span style="color: #0d904f; font-family: courier;">ScreenScaffold</span>.</p> <image><div style="text-align: center;"><img alt="moving image showing side by side examples of ScrollIndicator in action" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht6H03efYzN0m1cnGcSqmlF7J5gTLAVqPYtPLpHtEnpeKPutByJfvl_6KGDofT7707W9HfHP_m8Kin8zRQhhcz8IWlVjxWHkyWmHnHntrvHTFPxgEtF1tnLrvp7Zxa0VJX-rePRZBdBIljO80ge0OWSIvEWf1Jc8sS_VFKNr-P6MbOUUYDy-nhD4C9yns/s1600/scroll-indicator-tlc-dark.gif" width="100%" /></div><imgcaption><center><em>ScrollIndicator</em></center></imgcaption></image><br /> <p>Lastly, you can now use segments with the new ProgressIndicator, which is now available as a full-screen component for apps and as a small-size component for both apps and tiles.</p> <image><div style="text-align: center;"><img alt="moving image showing a full-screen ProgressIndicator" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiupBp03uUWzsdobgO8ldMnq4opP5qIG0c-TqR_24AQK63OzRgzjEVKJ1bxylo4X3L_3qX9QnarEdwydJqEX64Okxk9_cuqtCDWcDsunfCk8ytoozMdss_RYE-rGK-8c8GQOR-IFEuyg8rGeeb7TaBtnn4ZFloSiK6H751JZxrgm4wVjkNmpAOZmDW2oxE/s1600/progress-indicator-dark.gif" width="100%" /></div><imgcaption><center><em>Example of a full-screen ProgressIndicator</em></center></imgcaption></image><br /> <p>To learn more about the new features and see the full list of updates, see the release notes of the latest beta release of the <a href="https://developer.android.com/jetpack/androidx/releases/wear-compose#1.5.0-beta01" target="_blank">Wear Compose</a> and <a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-beta02" target="_blank">Wear Protolayout</a> libraries. Check out the migration guidance for <a href="https://developer.android.com/training/wearables/compose/migrate-to-material3" target="_blank">apps</a> and <a href="https://developer.android.com/training/wearables/tiles/versioning#migrate-tiles-expressive" target="_blank">tiles</a> on how to upgrade your existing apps, or try one of our <a href="https://developer.android.com/codelabs/compose-for-wear-os#0" target="_blank">codelabs</a> if you want to start developing using Material 3 Expressive design.</p> <h2><span style="font-size: x-large;">Watch Faces</span></h2> <p>With Wear OS 6 we are launching updates for watch face developers:</p> <ul><ul> <li>New options for customizing the appearance of your watch face using version 4 of Watch Face Format, such as animated state transitions from ambient to interactive and photo watch faces.</li> </ul><ul> <li>A new API for building watch face marketplaces.</li> </ul></ul> <p>Learn more about <a href="https://android-developers.googleblog.com/2025/05/whats-new-in-watch-faces.html" target="_blank">what's new in Watch Face updates</a>.</p> <p>Look for more information about the general availability of Wear OS 6 later this year.</p> <h2><span style="font-size: x-large;">Library updates</span></h2> <h3><span style="font-size: large;">ProtoLayout</span></h3> <p>Since our last major release, we've improved capabilities and the developer experience of the Tiles and ProtoLayout libraries to address feedback we received from developers. Some of these enhancements include:</p> <ul><ul> <li>New Kotlin-only <span style="font-family: courier;"><a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-beta01" target="_blank">protolayout-material3</a></span> library adds support for enhanced visuals: Lottie animations (in addition to the <a href="https://developer.android.com/training/wearables/tiles/animations" target="_blank">existing animation capabilities</a>), more gradient types, and new arc line styles.</li> <li>Developers can now write more idiomatic Kotlin, with APIs refined to better align with Jetpack Compose, including type-safe builders and an <a href="https://developer.android.com/reference/kotlin/androidx/wear/protolayout/modifiers/package-summary" target="_blank">improved modifier syntax</a>.</li> </ul></ul> <p>The example below shows how to display a layout with a text on a Tile using new enhancements:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: #408080; font-style: italic;">// returns a LayoutElement for use in onTileRequest()</span> materialScope(context, requestParams.deviceConfiguration) { primaryLayout( mainSlot = { text( text = <span style="color: #ba2121;">"Hello, World!"</span>.layoutString, typography = BODY_LARGE, ) } ) } </pre></div><br /> <p>For more information, see the <a href="https://developer.android.com/training/wearables/tiles/versioning#migrate-tiles-expressive" target="_blank">migration instructions</a>.</p> <h2><span style="font-size: x-large;">Credential Manager for Wear OS</span></h2> <p>The <a href="https://developer.android.com/identity/sign-in/credential-manager" target="_blank">CredentialManager API</a> is now available on Wear OS, starting with Google Pixel Watch devices running Wear OS 5.1. It introduces passkeys to Wear OS with a platform-standard authentication UI that is consistent with the experience on mobile.</p> <p>The Credential Manager Jetpack library provides developers with a unified API that simplifies and centralizes their authentication implementation. Developers with an existing implementation on another form factor can use the same CredentialManager code, and most of the same supporting code to fulfill their Wear OS authentication workflow.</p> <p>Credential Manager provides integration points for passkeys, passwords, and Sign in With Google, while also allowing you to keep your other authentication solutions as backups.</p> <p>Users will benefit from a consistent, platform-standard authentication UI; the introduction of passkeys and other passwordless authentication methods, and the ability to authenticate without their phone nearby.</p> <p>Check out the <a href="https://developer.android.com/training/wearables/apps/auth-wear" target="_blank">Authentication on Wear OS guidance</a> to learn more. </p><h2><span style="font-size: x-large;">Richer Wear Media Controls</span></h2> <image><div style="text-align: center;"><img alt="New media controls for a Podcast" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKo9X_Vu7uo8N55iP45HKv01XAgereOgQ-cISMY6-pJc_Pj-6DholAzeCi-Jv2oUzQRHoFHJeMscyQTbH-amzlQhXnsW_oxLnd0x04YxqBdiUGaoeb2bwUai_OPGzMSqaBagyTKUKlJL6z_Dk1W3TQ4n0oaACzbMB_oPij-Kjvd6JrD79tpW67zzOd4Wg/s1600/rich-wear-media-controls-wear-os.png" width="100%" /></div><imgcaption><center><em>New media controls for a Podcast</em></center></imgcaption></image><br /> <p>Devices that run Wear OS 5.1 or later support enhanced media controls. Users who listen to media content on phones and watches can now benefit from the following new media control features on their watch:</p> <ul><ul> <li>They can fast-forward and rewind while listening to podcasts.</li> <li>They can access the playlist and controls such as shuffle, like, and repeat through a new menu.</li> </ul></ul> <p>Developers with an existing implementation of <a href="https://developer.android.com/media/implement/surfaces/mobile#config-action-buttons" target="_blank">action buttons</a> and <a href="https://developer.android.com/media/media3/session/control-playback#modify-playlist" target="_blank">playlist</a> can benefit from this feature without additional effort. Check out how users will get more controls from your media app on a Google Pixel Watch device.</p> <h2><span style="font-size: x-large;">Start building for Wear OS 6 now</span></h2> <p>With these updates, there’s never been a better time to develop an app on Wear OS. These technical resources are a great place to learn more how to get started:</p> <ul><ul> <li><a href="https://developer.android.com/wear" target="_blank">Learn about designing and developing for Wear OS</a></li> <li><a href="https://developer.android.com/codelabs/compose-for-wear-os#4" target="_blank">Take the Compose for Wear OS codelab</a></li> <li><a href="https://github.com/android/wear-os-samples" target="_blank">Check out Wear OS samples on Github</a></li> <li><a href="https://developer.android.com/training/wearables/versions/6/emulator" target="_blank">Get started with the latest Wear OS 6 emulator</a></li> </ul></ul> <p>Earlier this year, we expanded our smartwatch offerings with <a href="https://android-developers.googleblog.com/2025/01/build-kids-app-experiences-for-wear-os.html" target="_blank">Galaxy Watch for Kids</a>, a unique, phone-free experience designed specifically for children. This launch gives families a new way to stay connected, allowing children to explore Wear OS independently with a dedicated smartwatch. Consult our <a href="https://developer.android.com/training/wearables/kids/develop" target="_blank">developer guidance</a> to create a Wear OS app for kids.</p> <p>We’re looking forward to seeing the experiences that you build on Wear OS!</p> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p><br /> <p><i><small><sup>1</sup> Actual battery performance varies.</small></i></p> <p></p> CredentialManager Featured Google I/O 2025 Material 3 Expressive Design Platform_Update Wear OS Wear OS 6 Android Developers What’s new in Watch Faces http://android-developers.googleblog.com/2025/05/whats-new-in-watch-faces.html Android Developers Blog urn:uuid:1b98897f-0d3e-1ffe-1c43-b6ccbf79be3d Tue, 20 May 2025 19:02:47 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirC-HW9M-XO6PNfCB1lyyhuvOBFr1SiGMc2rxIIr7k2wd-E86U4_YBbRNfaXG2w2Tu8xgJ0xhrD_UXRK1uIRw8EyY-ldztQVSf4EnCJL2l3Rvj9lhVU9siNOzcpwLJmKDvjueoCya42LGR7_qig0fgf77n8q7Ck6ZCQ96ct0mk6O5Y5WgiFmG5Y6T68NA/s1600/new-watch-faces-google-io-meta.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirC-HW9M-XO6PNfCB1lyyhuvOBFr1SiGMc2rxIIr7k2wd-E86U4_YBbRNfaXG2w2Tu8xgJ0xhrD_UXRK1uIRw8EyY-ldztQVSf4EnCJL2l3Rvj9lhVU9siNOzcpwLJmKDvjueoCya42LGR7_qig0fgf77n8q7Ck6ZCQ96ct0mk6O5Y5WgiFmG5Y6T68NA/s1600/new-watch-faces-google-io-meta.png" style="display: none;" /> <em>Posted by Garan Jenkin – Developer Relations Engineer</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi28VnjatnNxirnQXdiRTZmI54gtyzRQsvpwvRlU7FfVHiKEwJU13alqfiJMQAU5jJXrZUAv5jzs5wOYb7QYLpy_iekmqL-l74IAzZ0GtHhaVZ2zUhapb8jVGvWgEt5f7et1qteUIsO7Ou4vaQ0N9q7BfVtie30bGq2onZubnDNyeE28q2vRKuLhLH6Qrg/s1600/new-in-watch-faces-google-io-hero.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi28VnjatnNxirnQXdiRTZmI54gtyzRQsvpwvRlU7FfVHiKEwJU13alqfiJMQAU5jJXrZUAv5jzs5wOYb7QYLpy_iekmqL-l74IAzZ0GtHhaVZ2zUhapb8jVGvWgEt5f7et1qteUIsO7Ou4vaQ0N9q7BfVtie30bGq2onZubnDNyeE28q2vRKuLhLH6Qrg/s1600/new-in-watch-faces-google-io-hero.png" /></a> <p>Wear OS has a thriving watch face ecosystem featuring a variety of designs that also aims to minimize battery impact. Developers have embraced the simplicity of creating watch faces using <a href="https://developer.android.com/training/wearables/wff" target="_blank">Watch Face Format</a> – in the last year, the number of published watch faces <b>using Watch Face Format has grown by over 180%<sup>*</sup></b>.</p> <p>Today, we’re continuing our investment and announcing version 4 of the Watch Face Format, available as part of Wear OS 6. These updates allow developers to express even greater levels of creativity through the new features we’ve added. And we’re supporting marketplaces, which gives flexibility and control to developers and more choice for users.</p> <p>In this blog post we'll cover key new features, check out the <a href="https://developer.android.com/training/wearables/wff/features#v3" target="_blank">documentation</a> for more details of changes introduced in recent versions.</p> <h2><span style="font-size: x-large;">Supporting marketplaces with Watch Face Push</span></h2> <p>We’re also announcing a completely new API, the <a href="https://developer.android.com/training/wearables/watch-face-push" target="_blank">Watch Face Push API</a>, aimed at developers who want to create their own watch face marketplaces.</p> <p>Watch Face Push, available on devices running Wear OS 6 and above, works exclusively with watch faces that use the Watch Face Format watch faces.</p> <p>We’ve partnered with well-known watch face developers – including <b><a href="https://www.facer.io/" target="_blank">Facer</a></b>, <b><a href="https://timeflik.com/" target="_blank">TIMEFLIK</a></b>, <b><a href="https://getwatchmaker.com/" target="_blank">WatchMaker</a></b>, <b><a href="https://pujie.io/" target="_blank">Pujie</a></b>, and <b><a href="https://www.recreative-watch.com/" target="_blank">Recreative</a></b> – in designing this new API. We’re excited that all of these developers will be bringing their unique watch face experiences to Wear OS 6 using Watch Face Push.</p> <image><div style="text-align: center;"><img alt="Three mobile devices representing watch face marketplace apps for watches running Wear OS 6" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDyv-8Vl_8RJzaYVc-o3mfLUHi7xiutV4SEszm4wVbpGFMrZnE3zu_80k9tHrgbYfPfD-yDd5msNiDQ94a7IegsxAQlF1KWH2cbR64hfxXuZYmTBOEmsjIN2hcB3IKLm3EjyQK4lwO1zowTcq6NNm5pw1ElqyaeItQEPeVTjPstCscCPEamE3l3tTzVqI/s16000/watch-faces--wear-os-6-google-io.png" /></div><imgcaption><center><em>From left to right, <b><a href="https://www.facer.io/" target="_blank">Facer</a></b>, <b><a href="https://www.recreative-watch.com/" target="_blank">Recreative</a></b> and <b><a href="https://timeflik.com/" target="_blank">TIMEFLIK</a></b> watch faces have been developing marketplace apps to work with watches running Wear OS 6. </em></center></imgcaption></image><br /> <p>Watch faces managed and deployed using Watch Face Push are all written using Watch Face Format. Developers publish these watch faces in the same way as publishing through Google Play, though there are some additional checks the developer must make which are described in the Watch Face Push guidance.</p> <image><div style="text-align: center;"><img alt="A flow diagram demonstrating the flow of information from Cloud-based storage to the user's phone where the app is installed, then transferred to be installed on a wearable device using the Wear OS App via the Watch Face Push API" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-nC-EsEWiCVL3UdRHPm_dFpM7wZH6ObVUZeAxydYT0D2ZEGaXPV_A3vdHC_NIRTK8KBy-tphrX24Per1OANsQrGXFlfGFqcedZLdqslGmXtai_ALgXbTg7KLI72C1kl8we_DqVabvw89Nltq9_NoPUJpZpnGvTLpniv5shD5aDCjkrg1dDHYixW6xp8A/s16000/watch-face-api-architecture-wear-os-6-google-io.png" /></div></image><br /> <p>The Watch Face Push API covers only the watch part of this typical marketplace system diagram - as the app developer, you have control and responsibility for the phone app and cloud components, as well as for building the Wear OS app using Watch Face Push. You’re also in control of the phone-watch communications, for which we recommend using the <a href="https://developer.android.com/training/wearables/data/messages" target="_blank">Data Layer APIs</a>.</p> <h2><span style="font-size: x-large;">Adding Watch Face Push to your project</span></h2> <p>To start using Watch Face Push on Wear OS 6, include the following dependency in your Wear OS app:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: #408080; font-style: italic;">// Ensure latest version is used by checking the repository</span> implementation(<span style="color: #ba2121;">"androidx.wear.watchface:watchface-push:1.3.0-alpha07"</span>) </pre></div><br /> <p>Declare the necessary permission in your <span style="color: #0d904f; font-family: courier;">AndroidManifest.xml:</span></p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">&lt;uses-permission android:name=<span style="color: #ba2121;">"com.google.wear.permission.PUSH_WATCH_FACES"</span> /&gt; </pre></div><br /> <p>Obtain a Watch Face Push client:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">val</span> manager = WatchFacePushManagerFactory.createWatchFacePushManager(context) </pre></div><br /> <p>You’re now ready to start using the Watch Face Push API, for example to list the watch faces you have already installed, or add a new watch face:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: #408080; font-style: italic;">// List existing watch faces, installed by this app</span> <span style="color: green; font-weight: bold;">val</span> listResponse = manager.listWatchFaces() <span style="color: #408080; font-style: italic;">// Add a watch face</span> manager.addWatchFace(watchFaceFileDescriptor, validationToken) </pre></div><br /> <h2><span style="font-size: x-large;">Understanding Watch Face Push</span></h2> <p>While the basics of the Watch Face Push API are easy to understand and access through the <span style="color: #0d904f; font-family: courier;">WatchFacePushManager</span> interface, it’s important to consider several other factors when working with the API in practice to build an effective marketplace app, including:</p> <ul><ul> <li><b>How to build watch faces for use with Watch Face Push</b> - Watch faces deployed using Watch Face Push require an additional validation step to be performed by the developer. Learn more about <a href="https://developer.android.com/training/wearables/watch-face-push" target="_blank">how to build watch faces for use with Watch Face Push, and to integrate Watch Face Push into your application</a>.</li></ul><ul> <li><b>Watch Face Slots</b> - Each Watch Face Push-based application is able to install a limited number of watch faces at any given time, represented by a Slot. <a href="https://developer.android.com/training/wearables/watch-face-push#slots" target="_blank">Learn more about </a><a href="https://developer.android.com/training/wearables/watch-face-push#default-watch-face" target="_blank">how to work with and manage slots</a>.</li></ul><ul> <li><b>Default watch faces</b> - The API allows for a default watch face to be installed when the app is installed. Learn more about <a href="https://developer.android.com/training/wearables/watch-face-push#default-watch-face" target="_blank">how to build and include this default watch face</a>.</li></ul><ul> <li><b>Setting active watch faces</b> - Through an additional permission, the app can set the active watch face. Learn about <a href="https://developer.android.com/training/wearables/watch-face-push#set-active-watchface" target="_blank">how to integrate this feature</a>, as well as how to handle the different permission scenarios.</li> </ul></ul> <p>To learn more about using Watch Face Push, see the <a href="https://developer.android.com/training/wearables/watch-face-push" target="_blank">guidance</a> and <a href="https://developer.android.com/reference/kotlin/androidx/wear/watchface/push/package-summary" target="_blank">reference</a> documentation.</p> <h2><span style="font-size: x-large;">Updates to Watch Face Format</span></h2> <h3><span style="font-size: large;">Photos</span></h3> <i>Available from Watch Face Format v4</i> <p>The new <span style="color: #0d904f; font-family: courier;">Photos</span> element allows the watch face to contain user-selectable photos. The element supports both individual photos and a gallery of photos. For a gallery of photos, developers can choose whether the photos advance automatically or when the user taps the watch face.</p> <image><div style="text-align: center;"><img alt="a wearable device and small screen mobile device side by side demonstrating how a user may configure photos for the watch face through the Companion app on the mobile device" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilder6xB2opL02d5KbNW3AdFtHTqOtj31HGLSMHq7w86SZxR2q9KFCxstnXRhKlGZbjPuY_lUh3LTQD-EevrVx007pIo-skWBqHdFBgwGRZl7L1_LJwxBxQ5bAOxqAOehBMXeseM-2nvsXzFLua0aTy1HuyXAXRSnwB3rLwxjX-RronN2P9Ms8qUagmis/s1600/android-new-in-watch-faces-google-io-2025.png" /></div><imgcaption><center><em>Configuring photos through the watch Companion app</em></center></imgcaption></image><br /> <p>The user is able to select the photos of their choice through the companion app, making this a great way to include true personalization in your watch face. To use this feature, first add the necessary configuration:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">&lt;UserConfigurations&gt; &lt;PhotosConfiguration id=<span style="color: #ba2121;">"myPhoto"</span> configType=<span style="color: #ba2121;">"SINGLE"</span>/&gt; &lt;/UserConfigurations&gt; </pre></div><br /> <p>Then use the <span style="color: #0d904f; font-family: courier;">Photos</span> element within any <span style="color: #0d904f; font-family: courier;">PartImage</span>, in the same way as you would for an <span style="color: #0d904f; font-family: courier;">Image element</span>:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">&lt;PartImage ...&gt; &lt;Photos source=<span style="color: #ba2121;">"[CONFIGURATION.myPhoto]"</span> defaultImageResource=<span style="color: #ba2121;">"placeholder_photo"</span>/&gt; &lt;/PartImage&gt; </pre></div><br /> <p>For details on how to support multiple photos, and how to configure the different change behaviors, refer to the Photos section of the <a href="https://developer.android.com/training/wearables/wff/personalization/photos" target="_blank">guidance</a> and <a href="https://developer.android.com/reference/wear-os/wff/group/part/image/photos" target="_blank">reference</a>, as well as the <a href="https://github.com/android/wear-os-samples/" target="_blank">GitHub samples</a>.</p> <h2><span style="font-size: x-large;">Transitions</span></h2> <i>Available from Watch Face Format v4</i> <p>Watch Face Format now supports transitions when exiting and entering ambient mode.</p> <image><div style="text-align: center;"><img alt="moving image demonstrating an overshoot effect adjusting the time on a watch face to reveal the seconds digit" border="0" height="200" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijb2JauAR197bVq1WgtiCZMFJfYsD0W41h5c0JruKUTCwlERsk7hTECkaMENR0AglGj2m7NiwrfDpfR12li_UC1eF57Wg-wfaFgh393YPdJIYtAM0gfu8oApRpjKRAxlJ6eEg6KkMNFMhqFPC5QmCnZqGws2lCVTAGzIRz3AKmE22YEdelXkcL1Tru2KU/w200-h200/overshoot-effect-watch-faces-wear-os-google-io.gif" width="200" /></div><imgcaption><center><em>State transition animation: Example using an overshoot effect in revealing the seconds digits</em></center></imgcaption></image><br /> <p>This is achieved through the existing <span style="color: #0d904f; font-family: courier;">Variant</span> tag. For example, the hours and minutes in the above watch face are animated as follows:</p> <!-- Kotlin --><div style="background: #f8f8f8; overflow:auto;width:auto;border:0;"><pre style="margin: 0; line-height: 125%">&lt;DigitalClock ...&gt; &lt;Variant mode=<span style="color: #BA2121">&quot;AMBIENT&quot;</span> target=<span style="color: #BA2121">&quot;x&quot;</span> value=<span style="color: #BA2121">&quot;100&quot;</span> interpolation=<span style="color: #BA2121">&quot;OVERSHOOT&quot;</span> /&gt; &lt;!-- Rest of <span style="color: #BA2121">&quot;hh:mm&quot;</span> clock definition here --&gt; &lt;/DigitalClock&gt; </pre></div> <p>By default, the animation takes the full extent of allowed time for the transition. The new <span style="color: #0d904f; font-family: courier;">interpolation</span> attribute controls the animation effect - in this case the use of <span style="color: #0d904f; font-family: courier;">OVERSHOOT</span> adds a playful experience.</p> <p>The seconds are implemented in a separate <span style="color: #0d904f; font-family: courier;">DigitalClock</span> element, which shows the use of the new <span style="color: #0d904f; font-family: courier;">duration</span> attribute:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">&lt;DigitalClock ...&gt; &lt;Variant mode=<span style="color: #ba2121;">"AMBIENT"</span> target=<span style="color: #ba2121;">"alpha"</span> value=<span style="color: #ba2121;">"0"</span> duration=<span style="color: #ba2121;">"0.5"</span>/&gt; &lt;!-- Rest of <span style="color: #ba2121;">"ss"</span> clock definition here --&gt; &lt;/DigitalClock&gt; </pre></div><br /> <p>The <span style="color: #0d904f; font-family: courier;">duration</span> attribute takes a value between <span style="color: #0d904f; font-family: courier;">0.0</span> and <span style="color: #0d904f; font-family: courier;">1.0</span>, with <span style="color: #0d904f; font-family: courier;">1.0</span> representing the full extent of the allowed time. In this example, by using a value of <span style="color: #0d904f; font-family: courier;">0.5</span>, the seconds animation is quicker - taking half the allowed time, in comparison to the hours and minutes, which take the entire transition period.</p> <p>For more details on using transitions, see the <a href="https://developer.android.com/training/wearables/wff/transform" target="_blank">guidance documentation</a>, as well as the reference documentation for <span style="font-family: courier;">Variant</span>.</p> <h2><span style="font-size: x-large;">Color Transforms</span></h2> <i>Available from Watch Face Format v4</i> <p>We’ve extended the usefulness of the <span style="color: #0d904f; font-family: courier;">Transform</span> element by allowing <span style="color: #0d904f; font-family: courier;">color</span> to be transformed on the majority of elements where it is an attribute, and also allowing <span style="color: #0d904f; font-family: courier;">tintColor</span> to be transformed on <span style="color: #0d904f; font-family: courier;">Group</span> and <span style="color: #0d904f; font-family: courier;">Part<sup>*</sup></span> elements such as <span style="color: #0d904f; font-family: courier;">PartDraw</span> and <span style="color: #0d904f; font-family: courier;">PartText</span>.</p> <p>The main exceptions to this addition are the clock elements, <span style="color: #0d904f; font-family: courier;">DigitalClock</span> and <span style="color: #0d904f; font-family: courier;">AnalogClock</span>, and also <span style="color: #0d904f; font-family: courier;">ComplicationSlot</span>, which do not currently support <span style="color: #0d904f; font-family: courier;">Transform</span>.</p> <p>In addition to extending the list of transformable attributes to include colors, we’ve also added a handful of useful functions for manipulating color:</p> <ul><ul> <li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">extractColorFromColors(colors, interpolate, value)</a></li> <li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">extractColorFromWeightedColors(colors, weights, interpolate, value)</a></li> <li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">colorArgb(alpha, red, green, blue)</a></li> <li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">colorRgb(red, green, blue)</a></li> </ul></ul> <p>To see these in action, let’s consider an example.</p> <p>The Weather data source provides the current UV index through <span style="color: #0d904f; font-family: courier;">[WEATHER.UV_INDEX]</span>. When representing the UV index, these values are <a href="https://en.wikipedia.org/wiki/Ultraviolet_index#Index_usage" target="_blank">typically also assigned a color</a>:</p> <image><div style="text-align: center;"><img alt="moving image demonstrating an overshoot effect adjusting the time on a watch face to reveal the seconds digit" border="0" height="133" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrs-GtIIjtk4sAcUWts5EDvOAeUjL61GYn9_fzOWfytLc4Sgwp5E8_24u_jEycjAMKWmG0LDBJoxWhQ7goco_Qz6bF48X11jeF-8tR86on-XATSqDSchseVMNUAPY1l7xIQlQ1tX-q6Eo0D2Rhc4wJcxBWw-WWoCxm5PHZZVO34_8njX95JRSXvNM0Bzc/w640-h133/uv-index-values-wear-os-6-google-io.png" width="640" /></div></image><br /> <p>We want to represent this information as an <span style="color: #0d904f; font-family: courier;">Arc</span>, not only showing the value, but also using the appropriate color. We can achieve this as follows:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">&lt;Arc centerX=<span style="color: #ba2121;">"0"</span> centerY=<span style="color: #ba2121;">"0"</span> height=<span style="color: #ba2121;">"420"</span> width=<span style="color: #ba2121;">"420"</span> startAngle=<span style="color: #ba2121;">"165"</span> endAngle=<span style="color: #ba2121;">"165"</span> direction=<span style="color: #ba2121;">"COUNTER_CLOCKWISE"</span>&gt; &lt;Transform target=<span style="color: #ba2121;">"endAngle"</span> value=<span style="color: #ba2121;">"165 - 40 * (clamp(11, 0.0, 11.0) / 11.0)"</span> /&gt; &lt;Stroke thickness=<span style="color: #ba2121;">"20"</span> color=<span style="color: #ba2121;">"#ffffff"</span> cap=<span style="color: #ba2121;">"ROUND"</span>&gt; &lt;Transform target=<span style="color: #ba2121;">"color"</span> value=<span style="color: #ba2121;">"extractColorFromWeightedColors(#97d700 #FCE300 #ff8200 #f65058 #9461c9, 3 3 2 3 1, false, clamp([WEATHER.UV_INDEX] + 0.5, 0.0, 12.0) / 12.0)"</span> /&gt; &lt;/Stroke&gt; &lt;/Arc&gt; </pre></div><br /> <p>Let’s break this down:</p> <ul><ul> <li>The first <span style="color: #0d904f; font-family: courier;">Transform</span> restricts the UV index to the range 0.0 to 11.0 and adjusts the sweep of the <span style="color: #0d904f; font-family: courier;">Arc</span> according to that value.</li></ul><ul> <li>The second <span style="color: #0d904f; font-family: courier;">Transform</span> uses the new <span style="color: #0d904f; font-family: courier;">extractColorFromWeightedColors</span> function.</li> <ul><ul> <li>The <b>first</b> argument is our list of colors</li></ul><ul> <li>The <b>second</b> argument is a list of weights - you can see from the chart above that green covers 3 values, whereas orange only covers 2, so we use wei Featured Google I/O 2025 Platform_Update Watch Face Push watch faces Wear OS Android Developers Updates to the Android XR SDK: Introducing Developer Preview 2 http://android-developers.googleblog.com/2025/05/updates-to-android-xr-sdk-developer-preview.html Android Developers Blog urn:uuid:57ebc1dc-4f4a-153c-3fb0-1bba07e51b63 Tue, 20 May 2025 19:02:20 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6E4IA0G-nsPWLYDP3V2rxang1_wR1bhfP5EeKqTJZlPRrpXBLDG5kKG3qli7-pYqmAo2wdu9p3zq8tUy3v6Ko0CbXu-jri5lNbCoR0fLLPTpKnum8zRLWzLcYmZ2qVd0_l0TFyzlHufD3J8Nn-iaD6M215KpYtHZXGhDTgN4vcIMSyvhK522Xnmowzdw/s1600/android-xr-google-io-meta.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6E4IA0G-nsPWLYDP3V2rxang1_wR1bhfP5EeKqTJZlPRrpXBLDG5kKG3qli7-pYqmAo2wdu9p3zq8tUy3v6Ko0CbXu-jri5lNbCoR0fLLPTpKnum8zRLWzLcYmZ2qVd0_l0TFyzlHufD3J8Nn-iaD6M215KpYtHZXGhDTgN4vcIMSyvhK522Xnmowzdw/s1600/android-xr-google-io-meta.png" style="display: none;" /> <em>Posted by Matthew McCullough – VP of Product Management, Android Developer</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPp6HgZqiN1uweKBPa65S2eBZNgSTYHCRswoCxX2JMlwBW7IcDQV_7K13IrOamurxjeYJwg_zejYbRQMQwyLuO4dX08M2JG2l83byhJXkLtUR5SOkl3FZb_x8oX6aTaC-3f6jaA3Z7C_ReYJWNud31TJL2sdgUEmeKERNAWiUpdtbozALI5UYp9nCattI/s1600/IO25-Blog-Hero-Template-Art-Long-01.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPp6HgZqiN1uweKBPa65S2eBZNgSTYHCRswoCxX2JMlwBW7IcDQV_7K13IrOamurxjeYJwg_zejYbRQMQwyLuO4dX08M2JG2l83byhJXkLtUR5SOkl3FZb_x8oX6aTaC-3f6jaA3Z7C_ReYJWNud31TJL2sdgUEmeKERNAWiUpdtbozALI5UYp9nCattI/s1600/IO25-Blog-Hero-Template-Art-Long-01.png" /></a> <p>Since launching the <a href="https://android-developers.googleblog.com/2024/12/introducing-android-xr-sdk-developer-preview.html" target="_blank">Android XR SDK Developer Preview</a> alongside Samsung, Qualcomm, and Unity last year, we’ve been blown away by all of the excitement we’ve been hearing from the broader Android community. Whether it's through <a href=" https://www.youtube.com/watch?v=AkKjMtBYwDA&t=116s" target="_blank">coding live-streams</a> or local <a href="https://www.youtube.com/watch?v=RsFL8wvZFK8" target="_blank">Google Developer Group talks</a>, it's been an outstanding experience participating in the community to build the future of XR together, and we're just getting started.</p> <p>Today we’re excited to share an update to the <a href="http://developer.android.com/xr" target="_blank">Android XR SDK</a>: Developer Preview 2, packed with new features and improvements to help you develop helpful and delightful immersive experiences with familiar Android APIs, tools and open standards created for XR.</p> <p>At Google I/O, we have two technical sessions related to Android XR. The first is <a href="https://io.google/2025/explore/technical-session-22" target="_blank">Building differentiated apps for Android XR with 3D content</a>, which covers many features present in Jetpack SceneCore and ARCore for Jetpack XR. <a href="https://io.google/2025/explore/technical-session-2" target="_blank">The future is now, with Compose and AI on Android XR</a> covers creating XR-differentiated UI and our vision on the intersection of XR with cutting-edge AI capabilities.</p> <image><div style="text-align: center;"><img alt="Android XR sessions at Google I/O 2025" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4ijYv9_IUNzf9FB1F6Wi9nwub5AEuPTHEwdgj7ep1NW_yN4IwmBTcyR7wE11l4pzTIUWgZeD_3QenGfrrRc4cpcRRtttqfV86Ie-7D3prjMRtyZx3MWyfvOnXycVLFo6c23a6HEze_nDtHZAuM_QOeXIxU-cL2HToAOkaZOev-WsQvVC9C-OMHW8H3k/s1600/android-xr-google-io-sessions.png" width="100%" /></div><imgcaption><center><em><a href="https://io.google/2025/explore/technical-session-22" target="_blank">Building differentiated apps for Android XR with 3D content</a> and <a href="https://io.google/2025/explore/technical-session-2" target="_blank">The future is now, with Compose and AI on Android XR</a></em></center></imgcaption></image> <h2><span style="font-size: x-large;">What’s new in Developer Preview 2</span></h2> <p>Since the release of <a href="https://developers.googleblog.com/en/introducing-android-xr-sdk-developer-preview/" target="_blank">Developer Preview 1</a>, we’ve been focused on making the APIs easier to use and adding new immersive Android XR features. Your feedback has helped us shape the development of the tools, SDKs, and the platform itself.</p> <p>With the <b>Jetpack XR SDK</b>, you can now play back 180° and 360° videos, which can be stereoscopic by encoding with the MV-HEVC specification or by encoding view-frames adjacently. The MV-HEVC standard is optimized and designed for stereoscopic video, allowing your app to efficiently play back immersive videos at great quality. Apps built with Jetpack Compose for XR can use the <span style="font-family: courier;"><a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/develop-ui#add-surface" target="_blank">SpatialExternalSurface</a></span> composable to render media, including stereoscopic videos.</p> <p>Using <b>Jetpack Compose for XR</b>, you can now also define layouts that adapt to different XR display configurations. For example, use a <span style="font-family: courier;"><a href="https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier#%28androidx.xr.compose.subspace.layout.SubspaceModifier%29.fillMaxSize%28kotlin.Float%29" target="_blank">SubspaceModifier</a></span> to specify the size of a <span style="font-family: courier;"><a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/add-subspace" target="_blank">Subspace</a></span> as a percentage of the device’s recommended viewing size, so a panel effortlessly fills the space it's positioned in.</p> <p><b>Material Design for XR</b> now supports more component overrides for <span style="font-family: courier;"><a href="https://developer.android.com/develop/ui/compose/components/app-bars" target="_blank">TopAppBar</a></span>, <span style="font-family: courier;"><a href="https://developer.android.com/develop/ui/compose/components/dialog#alert" target="_blank">AlertDialog</a></span>, and <span style="font-family: courier;"><a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/list-detail" target="_blank">ListDetailPaneScaffold</a></span>, helping your large-screen enabled apps that use Material Design effortlessly adapt to the new world of XR.</p> <image><div style="text-align: center;"><img alt="An app adapts to XR using Material Design for XR with the new component overrides" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8nZO4V5FMG8zYiut0XDvyVhKVQiplNwEUoECmtbI_w_CQPpG-LnmcsremuuyfVDuPdfv3XX8RPq4XHAXSKJisCILs4at38y2UQJntrh8fPSEk-_wN6M2CoVaWDmV20_BmPAt9ETHgwz5mm1PWgVhTgZ5I57DL4HIx7NDS_MbT4-Z47EzYCi6CALc2gMM/s1600/app-adapts-android-xr-material-design-google-io.png" width="100%" /></div><imgcaption><center><em>An app adapts to XR using Material Design for XR with the new component overrides</em></center></imgcaption></image><br /> <p>In <b>ARCore for Jetpack XR</b>, you can now track hands after requesting the appropriate permissions. Hands are a collection of 26 posed hand joints that can be used to detect hand gestures and bring a whole new level of interaction to your Android XR apps:</p> <image><div style="text-align: center;"><img alt="moving image demonstrates how hands bring a natural input method to your Android XR experience." border="0" height="553" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5ECo8aP0SFOaw8qfkewc866hbkOZ9ZJgdimmeFU_n3VNGTh6FK1m4R5sladem74xrUsF0QrevO4abVsPrVNq0FVU3t4pM8uPiItdCeZumsOzfZh_cskSnzM19EnoP52mf019a16-vtVrxxJX4M5lIWAHc5XfymTo0jg-lvO8s9UWruSnSVdqT5uUbNLA/w640-h553/arcore-jetpack-android-xr-google-io.gif" width="640" /></div><imgcaption><center><em>Hands bring a natural input method to your Android XR experience.</em></center></imgcaption></image><br /> <p>For more guidance on developing apps for Android XR, check out our <a href="https://developer.android.com/codelabs/xr-fundamentals-part-1" target="_blank">Android XR Fundamentals codelab</a>, the updates to our <a href="http://goo.gle/haxr" target="_blank">Hello Android XR sample project</a>, and <a href="http://goo.gle/adaptive-jetstream" target="_blank">a new version of JetStream</a> with Android XR support.</p> <p>The <b>Android XR Emulator</b> has also received updates to stability, support for AMD GPUs, and is now fully integrated within the Android Studio UI.</p> <image><div style="text-align: center;"><img alt="the Android XR Emulator in Android STudio" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMsM6_DNRkrBrxM6yuvk2YW7f6VU0XG3o4xPPzxG0b_SzdVelcRKbVplMsu136nio1UpIotiAXjQtL_1ok7DMaMMZOsFKyVidFhzSKN1dWvevZ144LcODGH1O9pLVOJq49JdGh6kGywH4B451BaRI9w5jgmyREMoMK2pcwN9rFZG12v4Vft5qVgIKHE2Y/s16000/android-xr-emulator-in-android-studio-google-io.png" /></div><imgcaption><center><em>The Android XR Emulator is now integrated in Android Studio</em></center></imgcaption></image><br /> <p>Developers using Unity have <a href="https://unity.com/blog/porting-apps-games-over-android-xr-unity-6" target="_blank">already successfully created and ported existing games and apps to Android XR</a>. Today, you can upgrade to the <a href="https://discussions.unity.com/t/android-xr-pre-release-now-available/1634938" target="_blank">Pre-Release version 2</a> of the Unity OpenXR: Android XR package! This update adds many performance improvements such as support for <a href="https://docs.unity3d.com/Packages/com.unity.xr.androidxr-openxr@1.0/manual/features/display-utilities.html" target="_blank">Dynamic Refresh Rate</a>, which optimizes your app’s performance and power consumption. Shaders made with <a href="https://unity.com/features/shader-graph" target="_blank">Shader Graph</a> now support <a href="https://docs.unity3d.com/6000.1/Documentation/Manual/xr-graphics-spacewarp.html" target="_blank">SpaceWarp</a>, making it easier to use SpaceWarp to reduce compute load on the device. Hand meshes are now exposed with occlusion, which enables realistic hand visualization.</p> <p>Check out Unity’s <a href="https://docs.unity3d.com/Packages/com.unity.template.mixed-reality@2.1/manual/index.html" target="_blank">improved Mixed Reality template</a> for Android XR, which now includes support for occlusion and persistent anchors.</p> <p>We recently launched <a href="https://github.com/android/xr-unity-samples" target="_blank">Android XR Samples for Unity</a>, which demonstrate capabilities on the Android XR platform such as hand tracking, plane tracking, face tracking, and passthrough.</p> <image><div style="text-align: center;"><img alt="moving image of Google’s open-source Unity samples demonstrating platform features and showing how they’re implemented" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHiuAwjZJtPTRL6q7bvpY4xwXfqGj52bT1fYywSchvBHYVjeqi0_17QOZdn0BylkT9J-txSEJUjZu2WjMheml_sGX17Goi5ZkYSCVhvQ7i8JzXiuakPcR1_XnaRg7SI5OhWvN0ImaxLcpcHbky6rtz7vOXsOV4HZc6PVaeu623XnM6R23lM5tNZ171FxU/w640-h640/unity-demo-android-xr-google-io.gif" width="640" /></div><imgcaption><center><em>Google’s open-source Unity samples demonstrate platform features and show how they’re implemented</em></center></imgcaption></image><br /> <p>The Firebase AI Logic for Unity is now in public preview! This makes it easy for you to integrate gen AI into your apps, enabling the creation of AI-powered experiences with Gemini and Android XR. The Firebase AI Logic fully supports Gemini's capabilities, including multimodal input and output, and bi-directional streaming for immersive conversational interfaces. Built with production readiness in mind, Firebase AI Logic is integrated with core Firebase services like App Check, Remote Config, and Cloud Storage for enhanced security, configurability, and data management. Learn more about this on <a href="https://firebase.blog/posts/2025/05/ai-logic-unity-androidxr" target="_blank">the Firebase blog</a> or go straight to the <a href="https://firebase.google.com/docs/vertex-ai/get-started" target="_blank">Gemini API using Vertex AI in Firebase SDK documentation</a> to get started.</p> <h2><span style="font-size: x-large;">Continuing to build the future together</span></h2> <p>Our commitment to open standards continues with the <a href="https://www.khronos.org/blog/gltf-interactivity-specification-released-for-public-comment" target="_blank">glTF Interactivity specification</a>, in collaboration with the Khronos Group. which will be supported in glTF models rendered by Jetpack XR later this year. Models using the glTF Interactivity specification are self-contained interactive assets that can have many pre-programmed behaviors, like rotating objects on a button press or changing the color of a material over time.</p> <p>Android XR will be available first on Samsung’s Project Moohan, launching later this year. Soon after, our partners at XREAL will release the next Android XR device. Codenamed Project Aura, it’s a portable and tethered device that gives users access to their favorite Android apps, including those that have been built for XR. It will launch as a developer edition, specifically for you to begin creating and experimenting. The best news? With the familiar tools you use to build Android apps today, you can build for these devices too.</p> <image><div style="text-align: center;"><img alt="product image of XREAL’s Project Aura against a nebulous black background" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujCjZD5_MiRHDiDp_O-PRCGs_CdfARZbtfC5xqrKgMlJbWZQxNwdNN9C4SwVYB7Lu0Pm8GTubBcVenZm07pCIMAuAx5WcFjADHyE0JeQYhIlEmTqoW0te7xBz15Ab3Oh7C8IN4uk5zLnvqRJmUIEz0lOtSMO-e1oeiWK-jo2NvvrzBQoNUSU7_0UFmf4/s1600/android-xr-google-io-meta.png" width="100%" /></div><imgcaption><center><em>XREAL’s Project Aura</em></center></imgcaption></image><br /> <p>The Google Play Store is also getting ready for Android XR. It will list <a href="https://developer.android.com/develop/xr/get-started#app_manifest_compatibility_considerations_for_mobile_and_large_screen_apps" target="_blank">supported 2D Android apps</a> on the Android XR Play Store when it launches later this year. If you are working on an <a href="https://developer.android.com/docs/quality-guidelines/android-xr#android-xr-differentiated" target="_blank">Android XR differentiated app</a>, you can get it ready for the big launch and be one of the first differentiated apps on the Android XR Play Store:</p> <ul><ul> <li>Install and test your existing app in the <a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/studio-tools" target="_blank">Android XR Emulator</a></li> <li>Learn how to <a href="https://developer.android.com/develop/xr/package-and-distribute" target="_blank">package and distribute apps for Android XR</a></li> <li>New! <a href="https://support.google.com/googleplay/android-developer/answer/9866151?hl=en&amp;ref_topic=3450987&amp;sjid=1442238423744171917-NA" target="_blank">Make your XR app stand out</a> from others on Play Store with preview assets such as stereoscopic 180° or 360° videos, as well as screenshots, app description, and non-spatial video.</li> </ul></ul> <p>And we know many of you are excited for the future of Android XR on <a href="https://blog.google/products/android/android-xr-gemini-glasses-headset-io-2025/" target="_blank">glasses</a>. We are shaping the developer experience now and will share more details on how you can participate later this year.</p> <p>To get started creating and developing for Android XR, check out <a href="https://d.android.com/develop/xr" target="_blank">developer.android.com/develop/xr</a> where you will find all of the tools, libraries, and resources you need to work with the Android XR SDK. In particular, try out our <a href="https://developer.android.com/develop/xr/samples" target="_blank">samples</a> and <a href="https://developer.android.com/codelabs/xr-fundamentals-part-1#0" target="_blank">codelabs</a>.</p> <p>We welcome your <a href="https://d.android.com/develop/xr/support" target="_blank">feedback, suggestions, and ideas</a> as you’re helping shape Android XR. Your passion, expertise, and bold ideas are vital as we continue to develop Android XR together. We look forward to seeing your XR-differentiated apps when Android XR devices launch later this year!</p> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p><br /> #xr Android XR Android XR SDK ar Developer Preview Google I/O 2025 immersive experiences Jetpack Compose Mixed Reality OpenXR spatial computing Unity Virtual Reality VR WebXR Android Developers In-App Ratings and Reviews for TV http://android-developers.googleblog.com/2025/05/in-app-ratings-and-reviews-for-tv.html Android Developers Blog urn:uuid:6676b5a8-89cc-c35c-a39d-9264be28dba0 Tue, 20 May 2025 19:01:02 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI8u5ef64SB3dtNYxWNaem2LQHIQ6T22U2ZMN1i_GSSxJEYSkjzI4YU4dhRKq6Vd35DBr05KBbUNksNEYKQsoLu2ue1vPqtPm4uyTVV2wYJhnm3gMZki1AVtUniuyi7G1KpkBDkTfVpn3ZvgJi3oavdrDdOHV9NN2iLCWRoBt2DkDEWLrCcBqDZa7Cv64/s1600/In-App%20Ratings%20and%20Reviews%20for%20TV.png" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI8u5ef64SB3dtNYxWNaem2LQHIQ6T22U2ZMN1i_GSSxJEYSkjzI4YU4dhRKq6Vd35DBr05KBbUNksNEYKQsoLu2ue1vPqtPm4uyTVV2wYJhnm3gMZki1AVtUniuyi7G1KpkBDkTfVpn3ZvgJi3oavdrDdOHV9NN2iLCWRoBt2DkDEWLrCcBqDZa7Cv64/s1600/In-App%20Ratings%20and%20Reviews%20for%20TV.png" style="display: none;" /> <em>Posted by Paul Lammertsma – Developer Relations Engineer</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Mu2hOT6Ypnj7GLjRXlD0XgJZuVsNNY2KoSOchckvixh8dx70BhizYxxtH2hrjFwUHJhobtjhTz_cBCZJnk-56pn6NbAiI-dOhC6lqgTf5Ug40AKpOi41sOyIJeqoX2H3At6NHi4BPQx9jRvo8nzv_-DgWQopHlkJZFncNMrzozio0cJq0GpUsxVgxdQ/s1600/O25-BHero-Android-8.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Mu2hOT6Ypnj7GLjRXlD0XgJZuVsNNY2KoSOchckvixh8dx70BhizYxxtH2hrjFwUHJhobtjhTz_cBCZJnk-56pn6NbAiI-dOhC6lqgTf5Ug40AKpOi41sOyIJeqoX2H3At6NHi4BPQx9jRvo8nzv_-DgWQopHlkJZFncNMrzozio0cJq0GpUsxVgxdQ/s1600/O25-BHero-Android-8.png" /></a> <p>Ratings and reviews are essential for developers, offering quantitative and qualitative feedback on user experiences. In 2022, we enhanced the granularity of this feedback by <a href="https://android-developers.googleblog.com/2021/08/making-ratings-and-reviews-better-for.html" target="_blank">segmenting these insights by countries and form factors</a>.</p> <p>Now, we're extending the In-App Ratings and Reviews API to TV to allow developers to prompt users for ratings and reviews directly from Google TV.</p> <h2><span style="font-size: x-large;">Ratings and reviews on Google TV</span></h2> <image><div style="text-align: center;"><img alt="Ratings and reviews entry point forJetStream sample app on TV" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSiCzDyh4d5xTdHAd7qvboZAdTu27jR7vyKNXHDD7RUZRzLOZ6xEDj9t1s_VbMguC8sAS4RXSI188wYxfPhYjGUnY75EfbGdadUIUBDK_s0R7F6VTm7XVyYkrYsXEskVCTHq5S6WB4Cu0T70fctp_bZCiy5-VMDe6UFt4XP5X4PdXnZU5r_OWbJ_KdQfw/s16000/JetStream%20App%20Rating%20Menu%20(1).png" /></div></image><br /> <p>Users can now see rating averages, browse reviews, and leave their own review directly from an app's store listing on Google TV.</p> <image><div style="text-align: center;"><img alt="Ratings and written reviews input screen on TV" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiiuVwelcN726bFlMZfqEYdObhLFyVVnHbIfB-snHyLOqMtwUUOKq0yjy1j6ANxH8eTcpJtz4G23NENdrJKyl6cMkBKTccf9dxvXIafUgfVHhe_DOFuTM8Cd7yBoGIk3X1SGjybAaJXrikrPwQuZ4UvSSRbWoKAbuMZOn_DWnkenhuWOsimFTVWTIN1Z0/s16000/Apps%20Ratings%20-%20TV.png" /></div></image> <p>Users can interact with in-app ratings and reviews on their TVs by doing the following:</p> <ul><ul> <li>Select ratings using the remote control D-pad.</li> <li>Provide optional written reviews using Gboard’s on-screen voice input, or by easily typing from their phone.</li> <li>Send mobile notifications to themselves to complete their TV app review directly on their phone.</li> </ul></ul><br /> <image><div style="text-align: center;"><img alt="User instructions for submitting TV app ratings and reviews on mobile" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrCl8auQ-xpqFyC6pRATWehnwDlsKDjpA2aPj8YNltlGcxlen_zGj8Q29TMGLEc-eblYMMHp3wZCqnmShyphenhyphenzy2S2FTDXAdZAlYwsoC0hamJvbEm3VRJGrqvs6Wm0aaRqQg702WlPEe5su4fW0hovhBsFDUEi0UdtulpnPUc6E0KWb62j04fQ0SrJGC-TVs/s16000/Apps%20Ratings%20-%20Mobile.png" /></div></image><br /> <p>Additionally, users can leave reviews for other form factors directly from their phone by simply selecting the device chip when submitting an app rating or writing a review.</p> <p>We've already seen a considerable lift in app ratings on TV since bringing these changes to Google TV, and now, we're making it possible for developers to trigger a ratings prompt as well.</p> <p>Before we look at the integration, let's first carefully consider the best time to request a review prompt. First, identify optimal moments within your app to request user feedback, ensuring prompts appear only when the UI is idle to prevent interruption of ongoing content.</p> <h2><span style="font-size: x-large;">In-App Review API</span></h2> <p>Integrating the <a href="https://developer.android.com/guide/playcore/in-app-review" target="_blank">Google Play In-App Review API</a> is the same as on mobile and it's only a couple of method calls:</p> <!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">val</span> manager = ReviewManagerFactory.create(context) manager.requestReviewFlow().addOnCompleteListener { task -&gt; <span style="color: green; font-weight: bold;">if</span> (task.isSuccessful) { <span style="color: #408080; font-style: italic;">// We got the ReviewInfo object</span> <span style="color: green; font-weight: bold;">val</span> reviewInfo = task.result manager.launchReviewFlow(activity, reviewInfo) } <span style="color: green; font-weight: bold;">else</span> { <span style="color: #408080; font-style: italic;">// There was some problem, log or handle the error code</span> @ReviewErrorCode <span style="color: green; font-weight: bold;">val</span> reviewErrorCode = (task.getException() <span style="color: green; font-weight: bold;">as</span> ReviewException).errorCode } } </pre></div><br /> <p>First, invoke <span style="font-family: courier;"><a href="https://developer.android.com/reference/com/google/android/play/core/review/ReviewManager.html#requestReviewFlow()" target="_blank">requestReviewFlow()</a></span> to obtain a <span style="color: #0d904f; font-family: courier;">ReviewInfo</span> object which is used to launch the review flow. You must include an <span style="color: #0d904f; font-family: courier;"><a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task#addOnCompleteListener%28com.google.android.gms.tasks.OnCompleteListener%3CTResult%3E%29" target="_blank">addOnCompleteListener()</a></span> not just to obtain the <span style="color: #0d904f; font-family: courier;">ReviewInfo</span> object, but also to monitor for any problems triggering this flow, such as the unavailability of Google Play on the device. Note that <span style="color: #0d904f; font-family: courier;">ReviewInfo</span> does not offer any insights on whether or not a prompt appeared or which action the user took if a prompt did appear.</p> <p>The challenge is to identify <i>when</i> to trigger <span style="font-family: courier;"><a href="https://developer.android.com/reference/com/google/android/play/core/review/ReviewManager.html#launchReviewFlow(android.app.Activity,%20com.google.android.play.core.review.ReviewInfo)" target="_blank">launchReviewFlow()</a></span>. Track user actions—identifying successful journeys and points where users encounter issues—so you can be confident they had a delightful experience in your app.</p> <p>For this method, you may optionally also include an <span style="color: #0d904f; font-family: courier;">addOnCompleteListener()</span> to ensure it resumes when the returned task is completed.</p> <p>Note that due to throttling of how often users are presented with this prompt, there are no guarantees that the ratings dialog will appear when requesting to start this flow. For best practices, check <a href="https://developer.android.com/guide/playcore/in-app-review#when-to-request" target="_blank">this guide on when to request an in-app review</a>.</p> <h2><span style="font-size: x-large;">Get started with In-App Reviews on Google TV</span></h2> <p>You can get a head start today by following these steps:</p> <ul><ol> <li>Identify <i>successful journeys</i> for users, like finishing a movie or TV show season.</li> <li>Identify poor experiences that should be avoided, like buffering or playback errors.</li> <li>Integrate the <a href="https://developer.android.com/guide/playcore/in-app-review" target="_blank">Google Play In-App Review API</a> to trigger review requests at optimal moments within the user journey.</li> <li>Test your integration by following <a href="https://developer.android.com/guide/playcore/in-app-review/test" target="_blank">the testing guide</a>.</li> <li>Publish your app and continuously monitor <a href="https://play.google.com/console/app/user-feedback/ratings-breakdown?dimension=deviceType&ratingsThreshold=ANY_NUMBER&timeRange=LAST_TWENTY_EIGHT_DAYS" target="_blank">your ratings by device type</a> in the Play Console.</li> </ol></ul> <p>We're confident this integration enables you to elevate your Google TV app ratings and empowers your users to share valuable feedback.</p> <image><div style="text-align: center;"><img alt="Play Console Ratings graphic" border="0" height="179" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiogE70JfWQuMkET86-taW7P4o7j_FKD_ylQuMtK5x950waXHyq7B6XaMmElDguXeGy2Ea36euRH0cGNaJjvAJ0ZSYOpFDiGkbmWd6FDZV0j2wniSvc2n8cHir46hCXqLgMX18Nyuj6hkapfKsLAgbL08WXte4jgdxzycjyoQv-RLafwxiVTkc1nMGmAf8/s1600/Play%20Console%20Ratings%20Icon.png" width="20%" /></div></image> <h3><span style="font-size: large;">Resources</span></h3> <ul><ul> <li><a href="https://developer.android.com/guide/playcore/in-app-review" target="_blank">Google Play In-App Review API</a></li> <li><a href="https://play.google.com/console/app/user-feedback/ratings-breakdown?dimension=deviceType&amp;ratingsThreshold=ANY_NUMBER&amp;timeRange=LAST_TWENTY_EIGHT_DAYS" target="_blank">App ratings by device type</a> in your Play Console</li> </ul></ul> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p> #TV android-tv Compose Google I/O 2025 google-tv Android Developers Engage users on Google TV with excellent TV apps http://android-developers.googleblog.com/2025/05/engage-users-google-tv-excellent-apps.html Android Developers Blog urn:uuid:b8228e9e-5942-4050-5595-347689b99f0a Tue, 20 May 2025 19:00:03 +0000 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBD5VvvBuR8AfswZAlwvboh4l2DzgISOScKiZnoprl7W4QhdVYlKTMWt2KVIVr0jHZNRsQAGMg1qQjuDb1BUImQMroMyuDvr0TzgcWSYKVp36R08V7IszIxO75_uKInNJshrsXkKau05Tfza7uHJWzwuHZesH2hPzYBL6GVdf0HLPZZUL6ITMW7ZgLfOQ/s1600/gemini-google-tv-google-io-wicked.gif" name="twitter:image"></meta> <img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBD5VvvBuR8AfswZAlwvboh4l2DzgISOScKiZnoprl7W4QhdVYlKTMWt2KVIVr0jHZNRsQAGMg1qQjuDb1BUImQMroMyuDvr0TzgcWSYKVp36R08V7IszIxO75_uKInNJshrsXkKau05Tfza7uHJWzwuHZesH2hPzYBL6GVdf0HLPZZUL6ITMW7ZgLfOQ/s1600/gemini-google-tv-google-io-wicked.gif" style="display: none;" /> <em>Posted by Shobana Radhakrishnan - Senior Director of Engineering, Google TV, and Paul Lammertsma - Developer Relations Engineer, Android</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKjPUceDGVyuOm8Dvw_kMpTe5ArHNAYkWBvE0nNNktZiJJt8Lo45Mc4Gj827Y8M8W2hXa2xrRc1OeutuX_PxzcyobyNgzQ4tAyvPOK7j4A_MpynGEss5zJReG2gdZyo6QzsXa5ll77x6BUJjY5MdHBx1AEbDBnpt7gu_VvW8jjhQscpNNvo1QcjkGRWaA/s1600/engaging-users-google-tv-excellent-apps-google-io-hero.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKjPUceDGVyuOm8Dvw_kMpTe5ArHNAYkWBvE0nNNktZiJJt8Lo45Mc4Gj827Y8M8W2hXa2xrRc1OeutuX_PxzcyobyNgzQ4tAyvPOK7j4A_MpynGEss5zJReG2gdZyo6QzsXa5ll77x6BUJjY5MdHBx1AEbDBnpt7gu_VvW8jjhQscpNNvo1QcjkGRWaA/s1600/engaging-users-google-tv-excellent-apps-google-io-hero.png" /></a> <p>Over the past year, Google TV and Android TV achieved over 270 million monthly active devices, establishing one of the largest smart TV OS footprints. Building on this momentum, we are excited to share new platform features and developer tools designed to help you increase app engagement with our expanding user base.</p> <iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/OosLbRBM9dA" width="100%" youtube-src-id="OosLbRBM9dA"></iframe> <h2><span style="font-size: x-large;">Google TV with Gemini capabilities</span></h2> <p>Earlier this year, we announced that we’ll bring Gemini capabilities to Google TV, so users can speak more naturally and conversationally to find what to watch and get answers to complex questions.</p> <image><div style="text-align: center;"><img alt="A user pulls up Gemini on a TV asking for kid-friendly movie recommendations similar to Jurassic Park. Gemini responds with several movie recommendations" border="0" height="360" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKvfqPYyyIsHRhDIrjoDWYw86QGvs_HtECJcvKaDi2zl1yFX6DC3_W4QzdlosAmlo7hKVM3kv-Gv_1i6hFf9SQARCUGfpPoUqezGKVx4ncZJ3NkpxIQn14NfpLfZXoWRQdPbPLvXiRuf8B9mgrDPRyUkQMIlo9ubWotEjEEHIJra72reme_vemOiSOavs/w640-h360/Gemini-Google-TV-Jurassic-Park.gif" width="640" /></div></image><br /> <p>After each movie or show search, our new voice assistant will suggest relevant content from your apps, significantly increasing the discoverability of your content.</p> <image><div style="text-align: center;"><img alt="A user pulls up Gemini on a TV asking for help explaining the solar system to a first grader. Gemini responds with YouTube videos to help explain the solar system" border="0" height="360" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxjRZsbGmA8qf966pcJJY8TknBwyC9Inwxz4S5kHsdUifAfRhknxnYaOpsTWFqF7ZFsyFMTe8PUgWLOSUcoEEXBT0oR4D_SaY9mJDX6LkvHO0KbHiJaYJ11Jc2FG-oQsbFWZ9Nil7Gk5FL5QCqt-FJkXNmis_88wP2vuacbNCMCvo0-aDY7IuuA32g9yQ/w640-h360/Gemini-Google-TV-Solar-System.gif" width="640" /></div></image><br /> <p>Plus, users can easily ask questions about topics they're curious about and receive insightful answers with supporting videos.</p> <p>We’re so excited to bring this helpful and delightful experience to users this fall.</p> <h2><span style="font-size: x-large;">Video Discovery API</span></h2> <p>Today, we’ve also opened partner enrollment for our Video Discovery API.</p> <p>Video Discovery optimizes Resumption, Entitlements, and Recommendations across all Google TV form factors to enhance the end-user experience and boost app engagement.</p> <ul><ul> <li><b>Resumption:</b> Partners can now easily display a user's paused video within the 'Continue Watching' row from the home screen. This row is a prime location that drives 60% of all user interactions on Google TV.</li></ul><ul> <li><b>Entitlements:</b> Video Discovery streamlines entitlement management, which matches app content to user eligibility. Users appreciate this because they can enjoy personalized recommendations without needing to manually update all their subscription details. This allows partners to connect with users across multiple discovery points on Google TV.</li></ul><ul> <li><b>Recommendations:</b> Video Discovery even highlights personalized content recommendations based on content that users watched inside apps.</li> </ul></ul> <p>Partners can begin incorporating the Video Discovery API today, starting with resumption and entitlement integrations. Check out <a href="https://support.google.com/googletv/contact/vda?visit_id=638830411759402759-2269823034&amp;p=vda&amp;rd=1" target="_blank">g.co/tv/vda</a> to learn more. </p><h2><span style="font-size: x-large;">Jetpack Compose for TV</span></h2> <image><div style="text-align: center;"><img alt="Compose for TV 1.0 expands on the core and Material Compose libraries" border="0" height="163" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSVh3bbtDZ8DSG8juyjAhgAiyF36WLTrxrQpD78VMcgnr4yOsndJfMdVR55dfy_VcR7y8e_ydTqCYb0ylqCTNDowszojlfKYXLOuM-md8UI4NAGKIEn4Kpt3iav_rcwHVT9WBZeNqqVCU0YE78muCSB5C6YM55k7dOYrcopYy7DCGwCGLor5K7q4XhrTY/w200-h163/compose%20logo%20(for%20blog%20post).png" width="200" /></div></image><br /> <p>Last year, we launched Compose for TV 1.0 beta, which lets you build beautiful, adaptive UIs across Android, including Android TV OS.</p> <p>Now, <a href="https://developer.android.com/jetpack/androidx/releases/tv" target="_blank">Compose for TV</a> 1.0 is stable, and expands on the core and Material Compose libraries. We’ve even seen how the latest release of Compose significantly improves app startup within our internal benchmarking mobile sample, with roughly a 20% improvement compared with the March 2024 release. Because Compose for TV builds upon these libraries, apps built with Compose for TV should also see better app startup times.</p> <p>New to building with Compose, and not sure where to start? Our updated <a href="https://github.com/android/compose-samples/tree/main/Jetcaster" target="_blank">Jetcaster</a> audio streaming app sample demonstrates how to use Compose across form factors. It includes a dedicated module for playing podcasts on TV by combining separate view models with shared business logic.</p> <h2><span style="font-size: x-large;">Focus Management Codelab</span></h2> <p>We understand that focus management can be challenging at times. That’s why we’ve published a <a href="https://developer.android.com/codelabs/large-screens/keyboard-focus-management-in-compose#0" target="_blank">codelab</a> that reviews how to set initial focus, prepare for unexpected focus traversal, and efficiently restore focus.</p> <h2><span style="font-size: x-large;">Memory Optimization Guide</span></h2> <p>We’ve released a comprehensive guide on <a href="https://developer.android.com/training/tv/playback/memory" target="_blank">memory optimization</a>, including memory targets for low RAM devices as well. Combined with Android Studio's powerful memory profiler, this helps you understand when your app exceeds those limits and why.</p> <h2><span style="font-size: x-large;">In-App Ratings and Reviews</span></h2> <image><div style="text-align: center;"><img alt="Ratings and reviews entry point forJetStream sample app on TV" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSiCzDyh4d5xTdHAd7qvboZAdTu27jR7vyKNXHDD7RUZRzLOZ6xEDj9t1s_VbMguC8sAS4RXSI188wYxfPhYjGUnY75EfbGdadUIUBDK_s0R7F6VTm7XVyYkrYsXEskVCTHq5S6WB4Cu0T70fctp_bZCiy5-VMDe6UFt4XP5X4PdXnZU5r_OWbJ_KdQfw/s16000/JetStream%20App%20Rating%20Menu%20(1).png" /></div></image><br /> <p>Moreover, app ratings and reviews are essential for developers, offering quantitative and qualitative feedback on user experiences. Now, we're extending the In-App Ratings and Reviews API to TV to allow developers to prompt users for ratings and reviews directly from Google TV. Check out our recent blog post detailing <a href="https://android-developers.googleblog.com/2025/05/in-app-ratings-and-reviews-for-tv.html" target="_blank">how to easily integrate the In-App Ratings and Reviews API</a>.</p> <h2><span style="font-size: x-large;">Android 16 for TV</span></h2> <image><div style="text-align: center;"><img alt="Android 16 for TV" border="0" height="219" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9kuQGEvPuBLstoYlNuxPkcgPubPIjfOlUP9EEhss9y9qJq1soKvpXch2waIioJeC2rtQs64YjHSSRgYATy2U8k2BpfsEa0MpbyuV7P51jlAwpsTdnvWYkvCwjhHH8nD1VPRDL6CKUr_Xc9E23gwKQ1AtC8qO6ATDdulFsHQI9nhJTbfx1vvFRZ4pNn4g/w400-h219/A16-mascot.gif" width="75%" /></div></image><br /> <p>We're excited to announce the upcoming release of Android 16 for TV. Developers can begin using the latest beta today. With Android 16, TV developers can access several great features:</p> <ul><ul> <li>The <a href="https://developer.android.com/training/tv/playback/adjust-display-settings" target="_blank">MediaQualityManager</a> allows developers to take control over selecting picture profiles.</li></ul><ul> <li>Platform support for the <a href="https://opensource.googleblog.com/2025/01/introducing-eclipsa-audio-immersive-audio-for-everyone.html" target="_blank">Eclipsa Audio codec</a> enables creators to use the IAMF spatial audio format. For ExoPlayer support that includes previous platform versions, see ExoPlayer's <a href="https://github.com/androidx/media/tree/release/libraries/decoder_iamf" target="_blank">IAMF decoder module</a>.</li></ul><ul> <li>There are various improvements to media playback speed, consistency and efficiency, as well as HDMI-CEC reliability and performance optimizations for 64-bit kernels.</li></ul><ul> <li>Additional APIs and user experiences from Android 16 are also available. We invite you to explore the complete list from the <a href="https://developer.android.com/tv/release/16" target="_blank">Android 16 for TV release notes</a>.</li> </ul></ul> <h2><span style="font-size: x-large;">What's next</span></h2> <p>We're incredibly excited to see how these announcements will optimize your development journey, and look forward to seeing the fantastic apps you'll launch on the platform!</p> <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p> android-tv Compose Google I/O 2025 google-tv TV Android Developers Android’s Kotlin Multiplatform announcements at Google I/O and KotlinConf 25 http://android-developers.googleblog.com/2025/05/android-kotlin-multiplatform-google-io-kotlinconf-2025.html Android Developers Blog urn:uuid:5299b04c-923a-90b8-fd6a-736688a91b84 Tue, 20 May 2025 18:59:31 +0000 <meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE4JdIUT50f7W50YL6eGC3Mc_8PLWqQICySsTb3y6TthBWj56b-jJvSuJ-dcRGgSnlzwHIzZcF_dHvmIj78B19ZsBsqFDpyfaM-a6K1vLdfuYiixmeeRnkh9YtqaqqT6EBF5CUHbOOquXPNPvai_0otY2POILh98k61B-s3KqkaWTFWlk5yyykCC5rXUc/s1600/Op1_AndroidKoitlin_Multiplatform_SharedModule_Blogger.png"> <img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE4JdIUT50f7W50YL6eGC3Mc_8PLWqQICySsTb3y6TthBWj56b-jJvSuJ-dcRGgSnlzwHIzZcF_dHvmIj78B19ZsBsqFDpyfaM-a6K1vLdfuYiixmeeRnkh9YtqaqqT6EBF5CUHbOOquXPNPvai_0otY2POILh98k61B-s3KqkaWTFWlk5yyykCC5rXUc/s1600/Op1_AndroidKoitlin_Multiplatform_SharedModule_Blogger.png"> <em>Posted by Ben Trengrove - Developer Relations Engineer, Matt Dyor - Product Manager</em> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy8iK7IqYhEQuLt9A9CZ3Jk30P9m5kWXeDmcA4ZHwYOuBctn4rhsLeA9tX7C693r-RT0LXZ7XLjRY6y_OtXWZ1LlyXBpeR2aXWG6ghkDB5BrBVZb0Y_G5HasZg_yGuR-ImMjemCQN4ns3IJFNX75PsoKVgTYj7TrtyTzLIrQgkr-RVXWL3MkwJ7agA1mo/s1600/Op1_AndroidKoitlin_Multiplatform_SharedModule_Hero_Blog.png" imageanchor="1" ><img style="100%" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy8iK7IqYhEQuLt9A9CZ3Jk30P9m5kWXeDmcA4ZHwYOuBctn4rhsLeA9tX7C693r-RT0LXZ7XLjRY6y_OtXWZ1LlyXBpeR2aXWG6ghkDB5BrBVZb0Y_G5HasZg_yGuR-ImMjemCQN4ns3IJFNX75PsoKVgTYj7TrtyTzLIrQgkr-RVXWL3MkwJ7agA1mo/s1600/Op1_AndroidKoitlin_Multiplatform_SharedModule_Hero_Blog.png" data-original-width="100%" data-original-height="800" /></a> <p>Google I/O and KotlinConf 2025 bring a series of announcements on Android’s Kotlin and Kotlin Multiplatform efforts. Here’s what to watch out for:</p> <h2><span style="font-size: x-large ;">Announcements from Google I/O 2025</span></h2> <h3><span style="font-size: large ;">Jetpack libraries</span></h3> Our focus for Jetpack libraries and KMP is on sharing business logic across Android and iOS, but we have begun experimenting with web/WASM support. <p>We are adding KMP support to Jetpack libraries. Last year we started with <a href="https://developer.android.com/kotlin/multiplatform/room" target="_blank">Room</a>, <a href="https://developer.android.com/kotlin/multiplatform/datastore" target="_blank">DataStore</a> and Collection, which are now available in a stable release and recently we have added ViewModel, SavedState and Paging. The levels of support that our Jetpack libraries guarantee for each platform have been categorised into <a href="https://developer.android.com/kotlin/multiplatform#supported-platforms" target="_blank">three tiers</a>, with the top tier being for Android, iOS and JVM. <h3><span style="font-size: large ;">Tool improvements</span></h3> <p>We're developing new tools to help easily start using KMP in your app. With the KMP new <a href="https://android-developers.googleblog.com/2025/05/kotlin-multiplatform-shared-module-templates.html" target="_blank">module template</a> in Android Studio Meerkat, you can <a href="https://developer.android.com/kotlin/multiplatform/migrate" target="_blank">add a new module to an existing app</a> and share code to iOS and other supported KMP platforms.</p> <p>In addition to KMP enhancements, Android Studio now supports Kotlin K2 mode for Android specific features requiring language support such as Live Edit, Compose Preview and many more.</p> <h3><span style="font-size: large ;">How Google is using KMP</span></h3> <p>Last year, Google Workspace began experimenting with KMP, and this is now running in production in the Google Docs app on iOS. The app’s runtime performance is on par or better than before<sup>1</sup>. <p>It’s been helpful to have an app at this scale test KMP out, because we’re able to identify issues and fix issues that benefit the KMP developer community.</p> <p>For example, we've upgraded the Kotlin Native compiler to LLVM 16 and contributed a more efficient garbage collector and string implementation. We're also bringing the static analysis power of Android Lint to Kotlin targets and ensuring a unified Gradle DSL for both AGP and KGP to improve the plugin management experience.</p> <h3><span style="font-size: large ;">New guidance</span></h3> <p>We're providing comprehensive guidance in the form of two new codelabs: <a href="https://developer.android.com/codelabs/kmp-get-started" target="_blank">Getting started with Kotlin Multiplatform</a> and <a href="https://developer.android.com/codelabs/kmp-migrate-room" target="_blank">Migrating your Room database to KMP</a>, to help you get from standalone Android and iOS apps to shared business logic.</p> <h3><span style="font-size: large ;">Kotlin Improvements</span></h3> <p>Kotlin Symbol Processing (<a href="https://github.com/google/ksp?tab=readme-ov-file#ksp2-is-here" target="_blank">KSP2</a>) is stable to better support new Kotlin language features and deliver better performance. It is easier to integrate with build systems, is thread-safe, and has better support for debugging annotation processors. In contrast to KSP1, KSP2 has much better compatibility across different Kotlin versions. The rewritten command line interface also becomes significantly easier to use as it is now a standalone program instead of a compiler plugin.</p> <h2><span style="font-size: x-large ;">KotlinConf 2025</span></h2> <p>Google team members are presenting a number of talks at <a href="https://kotlinconf.com/" target="_blank">KotlinConf</a> spanning multiple topics:</p> <h3><span style="font-size: large ;">Talks</span></h3> <ul><ul> <li><b>Deploying KMP at Google Workspace</b> by Jason Parachoniak, Troels Lund, and Johan Bay from the Workspace team discusses the challenges and solutions, including bugs and performance optimizations, encountered when launching Kotlin Multiplatform at Google Workspace, offering comparisons to ObjectiveC and a Q&amp;A. (Technical Session)</li></ul><br/><ul> <li><b>The Life and Death of a Kotlin/Native Object</b> by Troels Lund offers a high-level explanation of the Kotlin/Native runtime's inner workings concerning object instantiation, memory management, and disposal. (Technical Session)</li></ul><br/><ul> <li><b>APIs: How Hard Can They Be?</b> presented by Aurimas Liutikas and Alan Viverette from the Jetpack team delves into the lifecycle of API design, review processes, and evolution within AndroidX libraries, particularly considering KMP and related tools. (Technical Session)</li></ul><br/><ul> <li><b>Project Sparkles: How Compose for Desktop is changing Android Studio and IntelliJ</b> with Chris Sinco and Sebastiano Poggi from the Android Studio team introduces the initiative ('Project Sparkles') aiming to modernize Android Studio and IntelliJ UIs using Compose for Desktop, covering goals, examples, and collaborations. (Technical Session)</li></ul><br/><ul> <li><b>JSpecify: Java Nullness Annotations and Kotlin</b> presented by David Baker explains the significance and workings of JSpecify's standard Java nullness annotations for enhancing Kotlin's interoperability with Java libraries. (Lightning Session)</li></ul><br/><ul> <li><b>Lessons learned decoupling Architecture Components from platform specific cod</b>e features Jeremy Woods and Marcello Galhardo from the Jetpack team sharing insights from the Android team on decoupling core components like SavedState and System Back from platform specifics to create common APIs. (Technical Session)</li></ul><br/><ul> <li><b>KotlinConf’s Closing Panel</b>, a regular staple of the conference, returns, featuring Jeffrey van Gogh as Google’s representative on the panel. (Panel)</li> </ul></ul> <h3><span style="font-size: large ;">Live Workshops</span></h3> <p>If you are at KotlinConf in person, we will have guided live workshops with our new codelabs from above.</p> <ul><ul> <li>The codelab <a href="https://developer.android.com/kmp-get-started" target="_blank">Get Started With Kotlin Multiplatform for Shared Business Logic</a>, offered by Matt Dyor, Dustin Lam, and Tomáš Mlynarič, provides hands-on guidance for extracting business logic from native Android and iOS apps into a shared KMP module.</li></ul><br/><ul> <li>The codelab <a href="https://developer.android.com/kmp-migrate-room" target="_blank">Migrating Room to Room KMP</a>, also led by Matt Dyor, and Dustin Lam, Tomáš Mlynarič, demonstrates the process of migrating an existing Room database implementation to Room KMP within a shared module.</li> </ul></ul> <p>We love engaging with the Kotlin community. If you are attending KotlinConf, we hope you get a chance to check out our booth, with opportunities to chat with our engineers, get your questions answered, and learn more about how you can leverage Kotlin and KMP.</p> <h2><span style="font-size: x-large ;">Learn more about Kotlin Multiplatform</span></h2> <p>To learn more about KMP and start sharing your business logic across platforms, check out our <a href="https://developer.android.com/kotlin/multiplatform" target="_blank">documentation</a> and the <a href="https://github.com/android/kotlin-multiplatform-samples/tree/main" target="_blank">sample</a>. <p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&amp;utm_medium=pr&amp;utm_campaign=event&amp;utm_content=" target="_blank">io.google</a> starting May 22.</p><br/> <small><sup>1</sup> <i>Google Internal Data, March 2025</i></small> Developer Tools Google I/O 2025 Jetpack KMP Kotlin Kotlin Multiplatform multiplatform apps Android Developers 5 Ways to Customize Your WordPress Post Embeds https://www.hongkiat.com/blog/customize-wordpress-post-embeds/ hongkiat.com urn:uuid:b901405b-9a06-52ee-0b73-9d0ea5f45106 Fri, 16 May 2025 13:00:49 +0000 <p>WordPress introduced post embeds in version 4.4, allowing you to easily share and display WordPress posts from one site to another. When you paste a link to a WordPress post, it automatically appears as a styled preview with the title, excerpt, and featured image. While this feature makes sharing content simple, the default look might&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/customize-wordpress-post-embeds/">5 Ways to Customize Your WordPress Post Embeds</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>WordPress introduced post embeds in version 4.4, allowing you to easily share and display WordPress posts from one site to another. When you paste a link to a WordPress post, it automatically appears as a styled preview with the title, excerpt, and featured image.</p> <p>While this feature makes sharing content simple, the default look might not always match your website’s style or layout, as we can see below.</p> <figure> <img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/customize-wordpress-post-embeds/embed-default-look.jpg" alt="Default WordPress post embeds look" width="1000" height="600"><figcaption>Default WordPress post embeds look</figcaption></figure> <p>Fortunately, WordPress provides several ways to customize these embeds to better fit your design. In this article, we’ll explore different ways to tweak and personalize WordPress post embeds, so they blend seamlessly with your site.</p> <hr> <h2>1. Customizing the Styles</h2> <p>You can easily change the embed’s appearance to better match your website’s theme by adding a custom CSS file with the <code><a href="https://developer.wordpress.org/reference/hooks/enqueue_embed_scripts/" target="_blank" rel="noopener noreferrer">enqueue_embed_scripts</a></code> hook, which ensures it’s loaded when the embed is displayed. You can add it in your theme’s <code>functions.php</code> file, for example:</p> <pre> add_action( 'enqueue_embed_scripts', function () { wp_enqueue_style( 'my-theme-embed', get_theme_file_uri( 'embed.css' ), ['wp-embed-template'] ); } ); </pre> <p>This function tells WordPress to load your custom <code>embed.css</code> file when rendering an embedded post. Now, you can define your own styles in <code>css/embed.css</code> to modify the look of the embed. For example, you can adjust the typography, colors, or layout with CSS like this:</p> <pre> .wp-embed { background-color: #f9f9f9; border: 1px solid #eee; border-radius: 8px; } .wp-embed-featured-image img { border-radius: 5px; } </pre> <p>With these changes, your WordPress post embeds will have a unique style that aligns with your site’s design, as shown below:</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/customize-wordpress-post-embeds/embed-styes.jpg" alt="Custom styled WordPress post embed with modern design" width="1000" height="600"> </figure> <hr> <h2>2. Customizing the Image</h2> <p>By default, WordPress post embeds use a predefined image size for the featured image. However, you can customize this to better match your design by specifying a different image size.</p> <p>For example, if you want the embed image to be a perfect square but don’t have a square image size set up yet, you can define one using the following code in your theme’s <code>functions.php</code> file. This code will create a new image size called <code>embed-square</code>, which crops images precisely to <strong>300×300</strong> pixels.</p> <pre> add_action( 'after_setup_theme', function () { add_image_size( 'embed-square', 300, 300, true ); } ); </pre> <p>Then, use the <code><a href="https://developer.wordpress.org/reference/hooks/embed_thumbnail_image_size/" target="_blank" rel="noopener noreferrer">embed_thumbnail_image_size</a></code> hook</p> <pre> add_filter( 'embed_thumbnail_image_size', function () { return 'embed-square'; } ); </pre> <p>If you’ve already uploaded images before adding this code, WordPress won’t automatically generate the new <code>embed-square</code> size for them. To fix this, you can use the <a href="https://wordpress.org/plugins/regenerate-thumbnails/" target="_blank" rel="noopener noreferrer">Regenerate Thumbnails</a> plugin. This ensures that all your older featured images are available in the new size and display correctly in post embeds.</p> <p>Now, your WordPress post embeds will now use the <code>embed-square</code> image size, as shown below:</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/customize-wordpress-post-embeds/embed-featured-image.jpg" alt="WordPress post embed with square featured image" width="1000" height="600"> </figure> <hr> <h2>3. Customizing the Excerpt</h2> <p>The post embeds also display an excerpt of the post content. However, the default length may not always fit your design or readability preferences. Fortunately, you can control how much text is shown by adjusting the excerpt length by using the <code><a href="https://developer.wordpress.org/reference/hooks/excerpt_length/" target="_blank" rel="noopener noreferrer">excerpt_length</a></code></p> <p>For example, if you want to shorten the excerpt to <strong>18</strong> words specifically for embeds, you can use the following code in your theme’s <code>functions.php</code> file:</p> <pre> add_filter( 'excerpt_length', function ($length) { return is_embed() ? 18 : $length; } ); </pre> <p>This code checks if the content is being displayed in an embed and, if so, limits the excerpt to 18 words. Otherwise, it keeps the default excerpt length, as shown below.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/customize-wordpress-post-embeds/embed-excerpt.jpg" alt="WordPress post embed with customized excerpt length" width="1000" height="600"> </figure> <p>Experiment with different word counts to find the right balance in your content.</p> <hr> <h2>4. Adding Custom Content</h2> <p>By default, WordPress post embeds display basic information like the title, excerpt, and featured image. However, you might want to include additional details, such as the post’s updated date, to provide more context.</p> <p>To do so, you can use the <code><a href="https://developer.wordpress.org/reference/hooks/embed_content/" target="_blank" rel="noopener noreferrer">embed_content</a></code>. In our case, we can add the following code in the <code>functions.php</code> file to display the post’s updated date:</p> <pre> add_action( 'embed_content', function () { if ( ! is_single() ) { return; } $updated_time = get_the_modified_time( 'U' ); $published_time = get_the_time( 'U' ); if ( $updated_time > $published_time ) { $time = sprintf( '&lt;time datetime="%s"&gt;%s&lt;/time&gt;', esc_attr( get_the_modified_date( 'Y-m-d' ) ), esc_html( get_the_modified_date() ) ); printf( '&lt;p class="wp-embed-updated-on"&gt;%s&lt;/p&gt;', sprintf( esc_html__( 'Updated on %s', 'devblog' ), $time ) ); } } ); </pre> <p>Now, the post embeds will display the updated date after the content, as shown below:</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/customize-wordpress-post-embeds/embed-date-content.jpg" alt="WordPress post embed showing updated date information" width="1000" height="600"> </figure> <p>Displaying the updated date is helpful for readers to know if the content has been recently refreshed. This is especially useful for articles with time-sensitive information, tutorials, or news posts that may change over time.</p> <hr> <h2>5. Overriding Embed Templates</h2> <p>By default, WordPress uses a single template file called <code>embed.php</code> to display embedded content for all post types, including blog posts, pages, and custom post types. If you want to change how embedded content looks across your site, you can create a custom <code>embed.php</code> file inside your theme folder.</p> <p>Additionally, WordPress lets you customize embeds for specific post types. For example, if you have a custom post type called “product” and want its embed to show extra details like price and availability without affecting other embeds you can create an <code>embed-product.php</code> file in your theme folder and customize it as needed.</p> <pre> &lt;?php get_header( 'embed' ); ?&gt; &lt;?php $product = wc_get_product( get_the_ID() ) ?&gt; &lt;div id="embed-product-&lt;?php the_ID(); ?&gt;" &lt;?php post_class("wp-embed") ?&gt;&gt; &lt;div class="embed-product-image"&gt; &lt;?php the_post_thumbnail( 'embed-square' ); ?&gt; &lt;/div&gt; &lt;div class="embed-product-details"&gt; &lt;header class="embed-product-header"&gt; &lt;h3 class="embed-product-title"&gt;&lt;?php the_title(); ?&gt;&lt;/h3&gt; &lt;/header&gt; &lt;div class="embed-product-content"&gt; &lt;?php the_excerpt(); ?&gt; &lt;p&gt;&lt;strong&gt;Price&lt;/strong&gt;: &lt;?php echo number_format($product-&gt;get_regular_price()); ?&gt;&lt;/p&gt; &lt;p&gt;&lt;button&gt;Buy Now&lt;/button&gt;&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;?php get_footer( 'embed' ); ?&gt; </pre> <p>Now, whenever a product post is embedded, WordPress will use this template instead of the default one.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/customize-wordpress-post-embeds/embed-custom-post-type.jpg" alt="Custom WordPress product post type embed template" width="1000" height="600"> </figure> <hr> <h2>Bonus:</h2> <h3>Disable Post Embed for Specific Post Types</h3> <p>While post embeds are a useful feature for sharing content, you might want to disable them for specific posts or post types. For example, you may have private content that you don’t want to be embedded on other sites.</p> <p>To disable post embeds for a specific post, you can use the <code><a href="https://developer.wordpress.org/reference/hooks/embed_oembed_html/" target="_blank" rel="noopener noreferrer">embed_oembed_html</a></code> filter to return an empty string.</p> <p>Here’s an example of how you can disable post embeds for <code>page</code> post type.</p> <pre> add_filter( 'embed_oembed_html', function ( $html, $url, $attr, $post_id ) { if ( get_post_type( $post_id ) === 'page' ) { return ''; } return $html; }, 10, 4 ); </pre> <hr> <h2>Wrapping up</h2> <p>WordPress post embeds make it easy to share content between websites. In this article, we explored several ways to customize how these embeds look, so they match your site’s design and include extra details for your readers. Now, you can try these techniques to create embeds that look better and make your content more engaging.</p><p>The post <a href="https://www.hongkiat.com/blog/customize-wordpress-post-embeds/">5 Ways to Customize Your WordPress Post Embeds</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> WordPress Thoriq Firdaus Secure Secret Management with 1Password CLI https://www.hongkiat.com/blog/secure-secrets-1password-cli-terminal/ hongkiat.com urn:uuid:769b8953-09d2-f58e-c667-56707c78d0a3 Thu, 15 May 2025 13:00:37 +0000 <p>As developers, we often deal with sensitive data like API keys, SSH credentials, database passwords, and other secrets. Keeping them secure while ensuring easy access across different projects can be a challenge. This is where 1Password‘s’ CLI comes in. 1Password CLI is a command-line tool that allows you to securely access and manage your 1Password&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/secure-secrets-1password-cli-terminal/">Secure Secret Management with 1Password CLI</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>As developers, we often deal with sensitive data like API keys, SSH credentials, database passwords, and other secrets. Keeping them secure while ensuring easy access across different projects can be a challenge.</p> <p>This is where <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/1password">1Password</a>‘s’ CLI comes in.</p> <figure> <img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/secure-secrets-1password-cli-terminal/1password-cover.jpg" alt="1Password CLI terminal interface for managing secrets" width="1000" height="600"> </figure> <p><strong>1Password CLI</strong> is a <a href="https://www.hongkiat.com/blog/web-designers-essential-command-lines/">command-line tool</a> that allows you to securely access and manage your 1Password vault without leaving the terminal. Instead of manually copying and pasting secrets, which can be tedious and risky, you can fetch credentials programmatically, automate authentication workflows, and integrate secrets management into your development processes.</p> <p>In this article, we’ll explore how to install, configure, and use 1Password CLI to streamline your workflow while keeping your credentials secure.</p> <hr> <h2>Getting Started</h2> <p>If you’re on macOS or Linux, the easiest way to install 1Password CLI is using <a rel="nofollow noopener" target="_blank" href="https://brew.sh/">Homebrew</a>:</p> <pre> brew install 1password-cli </pre> <p>If you’re on Windows, I recommend referring to the official <a rel="nofollow noopener" target="_blank" href="https://support.1password.com/command-line-getting-started/">1Password CLI documentation</a> for installation instructions.</p> <p>For Windows and Linux, follow the official 1Password CLI installation guide to get the appropriate setup for your system.</p> <p>Once installed, go to <q><strong>Settings… > Developer</strong></q> in the 1Password app, and check <q><strong>Integrate with 1Password CLI</strong></q>.</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/secure-secrets-1password-cli-terminal/integrate-with-app.jpg" alt="Enable 1Password CLI integration in app settings" width="1000" height="600"> </figure> <p>Then, sign in through the Terminal with the following command and select the 1Password account you want to sign in to:</p> <pre> op signin </pre> <p>Now, you’re ready to securely access and manage secrets without exposing them in plain text.</p> <hr> <h2>Command-Line Secret Management</h2> <p>When running commands that require authentication, manually copying and pasting credentials can be both tedious and insecure. With 1Password CLI, you can retrieve secrets dynamically using the <code>op read</code> command and the <q><strong>Secret References</strong></q>.</p> <p>To get the <q>Secret Reference</q>, you can click on the dropdown arrow of the value within the item you’d like to refer to in <strong>1Password</strong>.</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/secure-secrets-1password-cli-terminal/copy-secret-reference.jpg" alt="Copy secret reference from 1Password item menu" width="1000" height="600"> </figure> <p>Then pass it in the command that requires the secrets. For example, to authenticate with <q><strong>doctl</strong></q> using the <a rel="nofollow noopener" target="_blank" href="https://docs.digitalocean.com/reference/api/">DigitalOcean API</a> token, you can run:</p> <pre> doctl auth init --access-token $(op read op://Internet/d439ada/token) </pre> <hr> <h2>Environment Variables Integration</h2> <p>Another way you can use 1Password CLI is by setting the secrets as environment variables. This is useful when working with multiple secrets or when you need to pass them to a script or a program.</p> <p>If you’re using <a rel="nofollow noopener" target="_blank" href="https://www.chromatic.com/">Chromatic</a> to test your UI components, you can set the <code>CHROMATIC_PROJECT_TOKEN</code> as an environment variable using the <code>op read</code> command:</p> <pre> #!/bin/bash export NPM_TOKEN=$(op read op://Internet/d439ada/npm_token) export CHROMATIC_PROJECT_TOKEN=$(op read op://Internet/d439ada/chromatic_token) // Install the dependencies, including the private ones that require NPM_TOKEN. npm install // Chormatic will automatically use the CHROMATIC_PROJECT_TOKEN. // @see https://www.chromatic.com/docs/cli/#continuous-integration npx chromatic </pre> <p>Then, you can run the script using the <code>op run</code> command, as follows:</p> <pre> op run -- bash chormatic.sh </pre> <hr> <h2>Shell Plugin Extensions</h2> <p>To make it even more seamless, you can use the Shell Plugins to integrate 1Password with popular third-party apps such as <a rel="nofollow noopener" target="_blank" href="https://cli.github.com">Github CLI</a>, <a rel="nofollow noopener" target="_blank" href="https://www.docker.com/">Docker</a>, <a rel="nofollow noopener" target="_blank" href="https://docs.digitalocean.com/reference/doctl/">DigitalOcean CLI</a>, <a rel="nofollow noopener" target="_blank" href="https://aws.amazon.com/cli/">AWS</a>, <a rel="nofollow noopener" target="_blank" href="https://huggingface.co/docs/huggingface_hub/quick-start">HuggingFace</a>, <a rel="nofollow noopener" target="_blank" href="https://pypi.org/project/openai/">OpenAI</a>, and many more.</p> <p>In this example, we are going to try to integrate it with the Github CLI. To do so, we can run:</p> <pre> op plugin init gh </pre> <p>You’ll be prompted to import your GitHub credentials into 1Password or select an existing 1Password item where your credentials are saved. In this case, since we’ve already saved the GitHub credentials in 1Password, we can select the existing item.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/secure-secrets-1password-cli-terminal/shell-plugin-gh-init.jpg" alt="Initialize GitHub CLI plugin with 1Password integration" width="1000" height="600"> </figure> <p>Then, it will ask you the scope where the selected credentials can be used. In this case, we’d select it to use it globally so that we can use it across different repositories.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/secure-secrets-1password-cli-terminal/shell-plugin-gh-configure.jpg" alt="Configure GitHub CLI plugin scope in 1Password" width="1000" height="600"> </figure> <p>If this is your first time installing a shell plugin, you’ll need to add the source command to your RC file or shell profile to persist the plugin beyond the current terminal session. For example:</p> <pre> echo "source /Users/jondoe/.config/op/plugins.sh" >> ~/.zshrc && source ~/.zshrc </pre> <p>That’s it for the setup! Now, you can use the <q><strong>gh</strong></q> command to interact with GitHub without exposing your credentials in plain text. To test it out you can run the <code>gh auth status</code>.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/secure-secrets-1password-cli-terminal/shell-plugin-gh-status.jpg" alt="GitHub CLI authentication status with 1Password integration" width="1000" height="434"> </figure> <hr> <h2>Conclusion</h2> <p><strong>1Password CLI</strong> is a powerful tool that allows you to securely access and manage your secrets from the Terminal. With a little bit of setup, you can streamline your workflow and integrate secrets management into your development processes with other apps without exposing your credentials in plain text. If you haven’t tried it yet, I recommend giving it a try to make your development workflow more secure and efficient.</p><p>The post <a href="https://www.hongkiat.com/blog/secure-secrets-1password-cli-terminal/">Secure Secret Management with 1Password CLI</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Desktop Thoriq Firdaus 10+ Best Burner Email Providers https://www.hongkiat.com/blog/burner-email-providers/ hongkiat.com urn:uuid:0f740616-e11f-753b-d50a-1bea77f56931 Thu, 15 May 2025 10:00:39 +0000 <p>Keep your inbox clean with some of the best disposable email services. Privacy, simplified.</p> <p>The post <a href="https://www.hongkiat.com/blog/burner-email-providers/">10+ Best Burner Email Providers</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p><strong>A burner email</strong>, also known as a <strong>disposable email</strong>, is a temporary address that is used in place of your primary email. Think of it as a protective shield for your real email, keeping it safe from unwanted spam and potential data breaches.</p> <figure><img fetchpriority="high" decoding="async" alt="burner email providers" height="900" src="https://assets.hongkiat.com/uploads/burner-email-providers/burner-emails.jpg" width="1600"></figure> <h2>Why Would You Need a Burner Email?</h2> <p>Let’s be honest – we’ve all been there. You want to download that cool PDF guide or try out a new app, but they’re asking for your email address. Sure, you could use your main email, but do you really want to deal with the inevitable flood of marketing emails that follows?</p> <p>This is where burner emails come to the rescue. They’re perfect for:</p> <ul> <li><strong>Testing out new services</strong> without committing your real email address</li> <li><strong>Signing up for one-time downloads</strong> or temporary access to content</li> <li><strong>Protecting your privacy</strong> when you’re not sure about a website’s trustworthiness</li> <li><strong>Avoiding spam</strong> in your primary inbox</li> </ul> <h2>How Do Burner Emails Work?</h2> <p>Think of a burner email like a disposable phone number – it works just like your regular email but is designed to be temporary. When you use a burner email service, you get a unique email address that forwards messages to your real inbox (if you want it to), or you can check messages directly on the provider’s website.</p> <h2>Choosing the Right Burner Email Service</h2> <p>Before we dive into our list of providers, here’s what you should consider when picking a burner email service:</p> <ul> <li><strong>Duration:</strong> Do you need it for 10 minutes or 10 months?</li> <li><strong>Features:</strong> Some services offer email forwarding, while others provide a temporary inbox</li> <li><strong>Ease of use:</strong> Look for services that don’t require complex setup</li> <li><strong>Price:</strong> While many are free, some premium services offer extra features worth considering</li> </ul> <p>Now that you understand the basics, let’s explore some of the best burner email providers available today. We’ve tested and compiled a list of services that cater to different needs and preferences.</p> <h2>Best Burner Email Providers</h2> <ul> <li><strong><a rel="nofollow noopener" target="_blank" href="https://simplelogin.io/">SimpleLogin</a></strong>: A service that provides burner emails with a full subscription running at 0 per year.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://simplelogin.io/"><img decoding="async" alt="SimpleLogin" height="520" src="https://assets.hongkiat.com/uploads/burner-email-providers/SimpelLogin.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://burnermail.io/">Burner Mail</a></strong>: As the name suggests, this service specializes in providing burner emails. It’s slightly cheaper than SimpleLogin.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://burnermail.io/"><img decoding="async" alt="Burner Mail" height="477" src="https://assets.hongkiat.com/uploads/burner-email-providers/Burner-Mail.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://proprivacy.com/email/comparison/disposable-email-services">ProtonMail</a></strong>: This service offers more than just disposable emails, especially if you upgrade to a premium account.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://proprivacy.com/email/comparison/disposable-email-services"><img loading="lazy" decoding="async" alt="ProtonMail" height="547" src="https://assets.hongkiat.com/uploads/burner-email-providers/ProtonMail.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://10minutemail.com/">10 Minute Mail</a></strong>: A quick, simple, and effective service ideal for use with sites that require verification.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://10minutemail.com/"><img loading="lazy" decoding="async" alt="10 Minute Mail" height="484" src="https://assets.hongkiat.com/uploads/burner-email-providers/10-Minutes-Mail.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://temp-mail.org/">Temp-Mail</a></strong>: A secure disposable email service. Offers a premium option for folks wanting more features.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://temp-mail.org/"><img loading="lazy" decoding="async" alt="Temp-Mail" height="448" src="https://assets.hongkiat.com/uploads/burner-email-providers/Temp-Mail.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://www.emailondeck.com/">EmailOnDeck</a></strong>: This service is known for its simplicity and effectiveness in providing temporary emails.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://www.emailondeck.com/"><img loading="lazy" decoding="async" alt="" height="510" src="https://assets.hongkiat.com/uploads/burner-email-providers/Email-on-Deck.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://www.guerrillamail.com/">Guerrilla Mail</a></strong>: A popular choice for temporary email addresses.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://www.guerrillamail.com/"><img loading="lazy" decoding="async" alt="Guerrilla Mail" height="526" src="https://assets.hongkiat.com/uploads/burner-email-providers/Guerilla-Mail.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://www.maildrop.cc/">Maildrop</a></strong>: Another service that provides free disposable email addresses.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://www.maildrop.cc/"><img loading="lazy" decoding="async" alt="Maildrop" height="456" src="https://assets.hongkiat.com/uploads/burner-email-providers/Maildrop.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://www.hushmail.com/">Hushmail</a></strong>: This service is more business-oriented, with pricing starting at .99 per user per month for small businesses and nonprofits.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hushmail.com/"><img loading="lazy" decoding="async" alt="Hushmail" height="521" src="https://assets.hongkiat.com/uploads/burner-email-providers/Hushmail.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="http://www.yopmail.com/">YOPmail</a></strong>: YOPmail provides temporary, anonymous, free, secure, disposable email address.</li> <figure><a rel="nofollow noopener" target="_blank" href="http://www.yopmail.com/"><img loading="lazy" decoding="async" alt="YOPmail" height="501" src="https://assets.hongkiat.com/uploads/burner-email-providers/YOPmail.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://www.mailinator.com/">Mailinator</a></strong>: Mailinator lets you use any email address <code>@mailinator.com </code> and pick up the mail at its site.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://www.mailinator.com/"><img loading="lazy" decoding="async" alt="Mailinator" height="347" src="https://assets.hongkiat.com/uploads/burner-email-providers/Mailinator.jpg" width="1000"></a></figure> <li><strong><a rel="nofollow noopener" target="_blank" href="https://trashmail.com/">TrashMail</a></strong>: This service forwards all mail to your real email address and allows you to make unlimited disposable addresses.</li> <figure><a rel="nofollow noopener" target="_blank" href="https://trashmail.com/"><img loading="lazy" decoding="async" alt="TrashMail" height="648" src="https://assets.hongkiat.com/uploads/burner-email-providers/TrashMail.jpg" width="1000"></a></figure> </ul> <p>While these services can help protect your privacy, they should not be used for sensitive communications since the emails can be read by the service provider.</p> <h2>Frequently Asked Questions About Burner Emails</h2> <div class="faq"> <h3>Is Burner email free?</h3> <p>Yes, many burner email services offer free basic features. Services like 10 Minute Mail, Temp-Mail, and Guerrilla Mail are completely free. However, premium services like SimpleLogin and Burner Mail offer additional features like custom domains, unlimited aliases, and better privacy protection for a subscription fee.</p> <h3>Can burner emails be traced?</h3> <p>While burner emails provide a layer of anonymity, they aren’t completely untraceable. The level of privacy depends on the service provider and their logging policies. Premium services often offer better privacy features and fewer logs. For maximum privacy, consider using a VPN alongside your burner email.</p> <h3>How long does a burner email last?</h3> <p>The duration varies by service. Some temporary emails last for just 10 minutes (like 10 Minute Mail), others for 24 hours, and some premium services let you keep the address as long as you want. Many services also allow you to extend the duration or delete the address manually when you’re done.</p> <h3>Can I receive attachments with burner emails?</h3> <p>Most burner email services support receiving attachments, but there are usually size limitations. Free services typically have stricter limits (often 10MB or less), while paid services may offer larger attachment capabilities. Always check the service’s limitations before using it for receiving important files.</p> <h3>Are burner emails legal?</h3> <p>Yes, using burner emails is legal for legitimate purposes like protecting your privacy or reducing spam. However, using them for fraud, harassment, or other malicious activities is illegal. Always follow the service provider’s terms of use and local laws.</p> <h3>Can I send emails from a burner address?</h3> <p>This depends on the service. Some basic free services only allow receiving emails, while others provide full sending capabilities. Premium services typically offer more reliable sending features and may even let you reply from different aliases.</p> <h3>What happens to emails after the burner address expires?</h3> <p>When a burner email expires, any emails sent to that address will typically bounce back to the sender. Most services automatically delete all associated data and messages for privacy reasons. Some premium services may offer message archiving options before expiration.</p> </div><p>The post <a href="https://www.hongkiat.com/blog/burner-email-providers/">10+ Best Burner Email Providers</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Internet Email Internet Security and Privacy Gina Mark 20 Best Business WordPress Themes https://www.hongkiat.com/blog/business-wordpress-themes/ hongkiat.com urn:uuid:457833ee-894f-9c1b-d836-75f596cece1c Wed, 14 May 2025 07:00:46 +0000 <p>Selecting the right WordPress themes is crucial for any business aiming to establish a robust online presence. This article showcases 20 exceptional WordPress themes, catering to a diverse range of business needs. Whether you’re a startup, a small business, or a large corporation, you’ll find themes here that are tailored to your unique requirements. Our&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/business-wordpress-themes/">20 Best Business WordPress Themes</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>Selecting the right <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/elegant">WordPress themes</a> is crucial for any business aiming to establish a robust online presence. This article showcases 20 exceptional WordPress themes, catering to a diverse range of business needs. Whether you’re a startup, a small business, or a large corporation, you’ll find themes here that are tailored to your unique requirements.</p> <figure><img fetchpriority="high" decoding="async" alt="Business WordPress Themes" height="900" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/hero.jpg" width="1600"></figure> <p>Our curated list includes both <a href="#free_themes">free</a> and <a href="#premium_themes">premium WordPress themes</a>, ensuring that you can find a perfect match regardless of your budget. Each theme is designed with functionality and aesthetics in mind, making it easier for you to <a href="https://www.hongkiat.com/blog/website-and-page-building-tools/">create a website</a> that not only looks professional but also resonates with your <a href="https://www.hongkiat.com/blog/identity-branding-design-part-2/">brand identity</a>.</p> <p>Let’s explore these themes and find the one that aligns best with your business vision. </p> <hr> <h2 id="free_themes">Free Business WordPress Themes</h2> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/boostup-business/">BoostUp Business</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/boostup-business/"><img decoding="async" alt="BoostUp Business WordPress Theme" height="821" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/BoostUp-Business.jpg" width="1500"></a></figure> <p>Boostup Business transforms the way businesses and consultants build their online presence. It’s a Full Site Editing (FSE) WordPress theme that excels in creating both dynamic business websites and captivating blogs.</p> <p>With its modern, elegant design, it offers a plethora of customization features. The theme adapts beautifully across various devices, ensuring a seamless experience on any screen size.</p> <p>Plus, it’s built with SEO and mobile-friendly aspects, giving your site an edge in online performance.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/bosa-business-services/">Bosa Business Services</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/bosa-business-services/"><img decoding="async" alt="Bosa Business Services WordPress Theme" height="804" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Bosa-Business-Services.jpg" width="1500"></a></figure> <p>Bosa Business Services, branching from the versatile Bosa, caters to a broad spectrum of websites, ranging from e-commerce to fashion and more. This multipurpose theme melds aesthetics with speed and lightness, ensuring a responsive experience.</p> <p>It’s highly customizable, compatible with Gutenberg and Elementor page builders, making it simple to materialize your vision. Prioritizing SEO, speed, and user-friendliness, it offers diverse header and footer designs, ready-to-use starter sites, and works seamlessly with key plugins like WooCommerce and Yoast.</p> <p>Its adaptability and user-friendliness make it an excellent choice for any business-oriented site. You can explore its capabilities in the Bosa Business Services Demo.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-chat/">Business Chat</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-chat/"><img loading="lazy" decoding="async" alt="Business Chat WordPress Theme" height="1073" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Business-Chat.jpg" width="1500"></a></figure> <p>Business Chat is a free WordPress theme perfect for a variety of sites, including businesses, online shops, personal blogs, and journalistic outlets. Its minimalist design is both clean and modern, making it a great fit for corporate, fashion, food, travel, and lifestyle sites.</p> <p>With SEO optimization, it helps your content rank better in search engines. Features like sidebars and widgets are ideal for displaying Adsense, affiliate links, or author information.</p> <p>This theme is not only lightweight and customizable but also works smoothly with page builders like Elementor and Divi Builder. Its compatibility with WooCommerce adds e-commerce functionality, making it suitable for startups, agencies, and portfolios.</p> <p>The theme is mobile-friendly, translation-ready, and supports schema markup. A key feature is its live chat integration with JoinChat for real-time customer engagement.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-conference/">Business Conference</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-conference/"><img loading="lazy" decoding="async" alt="Business Conference WordPress Theme" height="1132" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Business-Conference.jpg" width="1500"></a></figure> <p>Business Conference Theme is a go-to free WordPress theme for events and conferences. Designed specifically for business meetups, technology conferences, and product launches, it’s compatible with WP Event Manager plugin and integrates well with popular page builders.</p> <p>It’s responsive, supports multiple browsers, and is translation-ready and SEO-optimized. With dedicated customer support, it’s an ideal choice for any event-focused website.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-fse/">Business FSE</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-fse/"><img loading="lazy" decoding="async" alt="Business FSE WordPress Theme" height="1128" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Business-FSE.jpg" width="1500"></a></figure> <p>Business FSE is a dynamic Full Site Editing WordPress theme, ideal for a range of business sectors including startups, law firms, and agencies. Leveraging the power of WordPress’s block editor, it enables the creation of eye-catching designs without the need for coding.</p> <p>This theme offers an array of pre-designed templates and patterns, addressing various business requirements and goals. Known for its rapid loading times, Business FSE enhances both user experience and SEO performance.</p> <p>It is search engine optimized, featuring clean code and compatibility with major SEO plugins. The interface is user-friendly, facilitating the implementation of SEO best practices. Consistency in responsive browsing across all devices ensures your website looks impeccable on any screen.</p> <p>Explore more about Business FSE through its demo, and access documentation or support as needed.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-growth-x/">Business Growth X </a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-growth-x/"><img loading="lazy" decoding="async" alt="Business Growth X WordPress Theme" height="1131" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Business-Growth-X.jpg" width="1500"></a></figure> <p>The theme is SEO-optimized, boosting your content’s search engine visibility. It supports popular page builders such as Elementor and Divi Builder, offering design flexibility. With WooCommerce compatibility, it enables e-commerce features and includes schema markup for improved online visibility.</p> <p>Mobile-friendly and translation-ready, Business Growth X is great for bloggers, startups, and anyone aiming for a professional online look. Explore Business Growth X for a customizable web experience.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-guidance-coach/">Business Guidance Coach</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/business-guidance-coach/"><img loading="lazy" decoding="async" alt="Business Guidance Coach WordPress Theme" height="1107" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Business-Guidance-Coach.jpg" width="1500"></a></figure> <p>Business Guidance Coach is a WordPress theme crafted specifically for business coaches, consultants, and mentors. It provides a polished and complete platform to showcase expertise and offer advice to emerging entrepreneurs and leaders.</p> <p>The theme’s design is sleek and user-friendly, reflecting the professionalism of business coaches and facilitating easy interaction. It’s responsive across various devices, extending its reach to a broader audience.</p> <p>Customizable to align with personal branding, it enhances each user’s unique identity. Supporting multimedia integration, it enriches interactions between coaches and their audience, making it an ideal choice for professionals in business coaching.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/cube-business/">Cube Business</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/cube-business/"><img loading="lazy" decoding="async" alt="Cube Business WordPress Theme" height="1049" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Cube-Business.jpg" width="1500"></a></figure> <p>Cube Business is a WordPress theme based on Elementor, fitting for agencies, businesses, and financial sites. It boasts a modern, responsive layout with excellent typography, prioritizing readability and user experience.</p> <p>Its compatibility with Elementor Page Builder makes it user-friendly, even for beginners, by removing the need for CSS or HTML skills. Cube Business is ideal for those who want an easy, yet powerful theme for a professional online presence.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/fse-business-blocks/">FSE Business Blocks</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/fse-business-blocks/"><img loading="lazy" decoding="async" alt="FSE Business Blocks WordPress Theme" height="1089" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/FSE-Business-Blocks.jpg" width="1500"></a></figure> <p>FSE Business Blocks delivers a simple yet elegant solution for WordPress website creation. It features a clean design and a comprehensive set of features, including hero sections, portfolio showcases, prominent call-to-action buttons, and client testimonials.</p> <p>Suitable for business sites, personal brands, or creative projects, FSE Business Blocks is designed for quick and effective website launches. It combines functionality with aesthetic appeal, making it a prime choice for establishing a prominent online presence.</p> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/goldy-business/">Goldy Business</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://wordpress.org/themes/goldy-business/"><img loading="lazy" decoding="async" alt="Goldy Business WordPress Theme" height="1131" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Goldy-Business.jpg" width="1500"></a></figure> <p>Goldy Business is a WordPress theme that blends a modern aesthetic with user-friendly functionality. It’s adaptable for a variety of websites, featuring an appealing design and numerous features like a featured slider, sections for about, portfolio, team, services, sponsors, and testimonials.</p> <p>The theme also includes a sticky header, social information, a sidebar, and excerpt options. These features are responsive and easily customizable, allowing Goldy Business to meet your specific requirements, providing an effortless experience for both site owners and visitors.</p> <h2 id="premium_themes">Premium Business WordPress Themes</h2> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19680707">AhaShop</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19680707"><img loading="lazy" decoding="async" alt="AhaShop WordPress Theme" height="933" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/AhaShop.jpg" width="1500"></a></figure> <p>AhaShop is tailored for small to medium-sized online fashion stores, making it a prime choice for businesses dealing in clothing for all ages, along with shoes, watches, jewelry, handbags, and accessories.</p> <p>This WordPress theme streamlines the creation of online fashion stores with tools like WPBakery Page Builder, Flexible Slider, compatibility with the latest versions of WooCommerce and WordPress, Bootstrap CSS framework, a shop grid layout, a mega menu, and a mobile-friendly design.</p> <p>AhaShop is dedicated to facilitating a quick and easy setup for online fashion businesses, offering a swift solution for launching fashion products online.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19680707">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-20567373">Cena Store</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-20567373"><img loading="lazy" decoding="async" alt="Cena Store WordPress Theme" height="1096" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Cena-Store.jpg" width="1500"></a></figure> <p>TB Cena Store is a flexible WooCommerce WordPress Theme, offering a variety of powerful customization options. It’s particularly effective for electronics online stores but versatile enough for various purposes.</p> <p>The theme excels in SEO, boosting your site’s visibility on search engines. It’s fully responsive, ensuring a seamless shopping experience across all devices. Cena Store provides more than 10 different homepage designs, giving you ample choices to find the ideal match for your needs.</p> <p>The One-click import feature simplifies the process of importing content, widgets, sliders, menus, and customization settings.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-20567373">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19196010">Fildisi</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19196010"><img loading="lazy" decoding="async" alt="Fildisi WordPress Theme" height="705" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Fildisi.jpg" width="1500"></a></figure> <p>Fildisi is a WordPress theme that serves a wide range of users, from corporations to freelancers, agencies, photographers, designers, and bloggers.</p> <p>Designed to spark creativity, it allows for unique layouts that break from traditional design norms. Fildisi adapts to your creative demands, offering the freedom to craft distinct and striking layouts for any purpose.</p> <p>It’s a top choice for those who prioritize design flexibility and aim to make a strong visual statement with their website.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19196010">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-16394318">Hermes</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-16394318"><img loading="lazy" decoding="async" alt="Hermes WordPress Theme" height="1204" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Hermes.jpg" width="1500"></a></figure> <p>Hermes is a WooCommerce theme that excels in versatility, fitting a wide range of e-commerce websites.</p> <p>It offers various layouts for home and product pages, providing extensive customization possibilities. Beyond e-commerce, Hermes serves business, creative, news, and corporate sites effectively.</p> <p>Its features include a responsive layout, mega menu, page builder, Slider Revolution, product quick view, and one-click installation. Designed for ease of use, Hermes allows you to create websites without coding skills, making it perfect for those looking for a professional and flexible WordPress theme.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-16394318">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-26963792">Krowd</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-26963792"><img loading="lazy" decoding="async" alt="Krowd WordPress Theme" height="829" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Krowd.jpg" width="1500"></a></figure> <p>Krowd is a WordPress theme designed for crowdfunding, charity, nonprofit, NGO, and donation websites, as well as other business and non-profit ventures.</p> <p>Tailored to meet all aspects of crowdfunding, Krowd includes essential features for successful fundraising campaigns. Fully responsive and optimized for conversion rates, it offers high-resolution graphics and easy customization.</p> <p>Key features include Elementor Page Builder, Slider Revolution, WooCommerce, MailChimp, and the Events Calendar. With its advanced control panel and use of technologies like Bootstrap 4, SASS, HTML5, CSS3, and Font Awesome, Krowd is ideal for creating impactful crowdfunding or charity websites.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-26963792">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-18399207">NowaDays</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-18399207"><img loading="lazy" decoding="async" alt="NowaDays WordPress Theme" height="1040" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/NowaDays.jpg" width="1500"></a></figure> <p>NowaDays is a multi-purpose WordPress theme suitable for creative agencies, portfolios, blogs, and showcases, whether as a multi-page or a one-page layout.</p> <p>It features the Unyson drag-and-drop Page Builder and a comprehensive Theme Options panel, making site building accessible without programming skills. The theme offers a range of Page Builder elements to make your site unique.</p> <p>NowaDays is designed to effectively showcase products or services, making it a great choice for those seeking a user-friendly, standout WordPress theme for their creative or business projects.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-18399207">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-16958600">Okab</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-16958600"><img loading="lazy" decoding="async" alt="Okab WordPress Theme" height="1259" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Okab.jpg" width="1500"></a></figure> <p>Okab is a multipurpose WordPress theme noted for its excellent performance. Responsive, user-friendly, and fast-loading, it’s adaptable for a variety of websites including business, finance, consulting, personal blogs, shops, photography, and events.</p> <p>The theme boasts over 275 stylish elements and numerous features, all customizable with an advanced visual builder that doesn’t require coding skills. Okab’s modern design and adaptability make it a top choice for creating a professional and diverse online presence.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-16958600">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19557577">Pheromone</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19557577"><img loading="lazy" decoding="async" alt="Pheromone WordPress Theme" height="1016" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Pheromone.jpg" width="1500"></a></figure> <p>Pheromone is a modern, minimalist WordPress theme, perfect for crafting a simple, fast-loading business or personal site.</p> <p>Tailored for developers, designers, bloggers, and creatives, it offers an easy-to-use and efficient platform. With a focus on simplicity and speed, combined with aesthetic appeal, Pheromone is ideal for those looking for a clean and effective online presence.</p> <div class="button"> <a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-19557577">Preview theme</a> </div> <hr> <h3><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-31941062">Restly</a></h3> <figure><a rel="nofollow noopener" target="_blank" href="https://www.hongkiat.com/blog/go/envato-31941062"><img loading="lazy" decoding="async" alt="Restly WordPress Theme" height="921" src="https://assets.hongkiat.com/uploads/business-wordpress-themes/Restly.jpg" wid WordPress WordPress Themes Nancy Young 10 Best Illustrated Children’s Books for iPad https://www.hongkiat.com/blog/beautiful-illustrated-kids-books/ hongkiat.com urn:uuid:cb73b8ef-6047-0103-01e6-ad2106568f81 Tue, 13 May 2025 07:00:24 +0000 <p>Discover beautifully illustrated kids books that will captivate your child's imagination and foster a love for reading. Perfect for parents and educators.</p> <p>The post <a href="https://www.hongkiat.com/blog/beautiful-illustrated-kids-books/">10 Best Illustrated Children&#8217;s Books for iPad</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>In the digital age, children are increasingly engaging with iPads, transforming the way they read and interact with books. This interactive platform offers a new dimension to storytelling, making it more dynamic and engaging. However, with a plethora of apps available, it can be challenging for parents to sift through and find high-quality, engaging content suitable for bedtime stories.</p> <p>Indeed, there are a select few children’s books on iPad that are <a href="https://www.hongkiat.com/blog/children-book-cover-illustration/">beautifully illustrated</a>, enabling children to immerse themselves in the magic of <a href="https://www.hongkiat.com/blog/digital-story-telling-tools/">storytelling</a>. The power of a captivating picture book lies not just in the written words, but also in the vibrant illustrations that breathe life into the narrative. In this article, I’ve curated a list of the top 10 children’s book apps, featuring stunning illustrations that bring stories to life.</p> <div class="ref-block ref-block--post" id="ref-post-1"> <a href="https://www.hongkiat.com/blog/children-book-cover-illustration/" class="ref-block__link" title="Read More: 20 Beautiful Children’s Book Cover Illustrations" rel="bookmark"><span class="screen-reader-text">20 Beautiful Children’s Book Cover Illustrations</span></a> <div class="ref-block__thumbnail img-thumb img-thumb--jumbo" data-img='{ "src" : "https://assets.hongkiat.com/uploads/thumbs/250x160/children-book-cover-illustration.jpg" }'> <noscript> <style>.no-js #ref-block-post-10912 .ref-block__thumbnail { background-image: url("https://assets.hongkiat.com/uploads/thumbs/250x160/children-book-cover-illustration.jpg"); }</style> </noscript> </div> <div class="ref-block__summary"> <h4 class="ref-title">20 Beautiful Children’s Book Cover Illustrations</h4> <p class="ref-description"> We all have a special place in our hearts for children's books. When we were young, they stirred... <span>Read more</span></p> </div> </div> <h5>In this article:</h5> <table> <tr> <th>Book Title</th> <th>Description</th> </tr> <tr> <td><a href="#cat-in-the-hat">The Cat in the Hat</a></td> <td>Classic Dr. Seuss tale transformed into an interactive learning adventure with kindergarten-level activities</td> </tr> <tr> <td><a href="#fairy-tales">Fairy Tales ~ Bedtime Stories</a></td> <td>Beloved fairy tales come alive with interactive scenes and customizable reading modes</td> </tr> <tr> <td><a href="#nighty-night">Nighty Night Forest</a></td> <td>Help seven adorable forest animals prepare for bedtime in this charming 3D-2D hybrid world</td> </tr> <tr> <td><a href="#little-stories">Little Stories: Bedtime Books</a></td> <td>Make your child the star with personalized tales featuring stunning illustrations and voice recording</td> </tr> <tr> <td><a href="#monsters-sick">Even Monsters Get Sick</a></td> <td>Heartwarming story about friendship between a boy and his under-the-weather monster companion</td> </tr> <tr> <td><a href="#little-fox">Little Fox Music Box</a></td> <td>Sing along to timeless children’s tunes brought to life with charming paper cutout animations</td> </tr> <tr> <td><a href="#heart-bottle">The Heart and the Bottle</a></td> <td>Touching tale of curiosity and emotion, beautifully blending traditional and digital art</td> </tr> <tr> <td><a href="#mr-wolf">Mr. Wolf and the Ginger Cupcakes</a></td> <td>Traditional fairy tale gets a delicious twist with stunning watercolor and pencil artwork</td> </tr> <tr> <td><a href="#cinderella">Cinderella</a></td> <td>Timeless princess story reimagined with modern animations and enchanting music</td> </tr> <tr> <td><a href="#monster-games">Monster Games on StoryBots</a></td> <td>Spooky castle adventure where your child becomes part of the bold, playful illustrations</td> </tr> </table> <hr> <h2 id="cat-in-the-hat"><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/the-cat-in-the-hat/id1004090290">The Cat in the Hat</a></h2> <figure><img loading="lazy" decoding="async" alt="The Cat in the Hat" height="1117" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/The-Cat-in-the-Hat.jpg" width="1500"></figure> <ul> <li><strong>Author and Illustrator:</strong> Dr. Seuss</li> <li><strong>Publisher:</strong> Oceanhouse Media</li> </ul> <p>Check out <strong>Dr. Seuss’s “The Cat in the Hat” iPad app</strong> to explore a fun and magical world. It’s not just an electronic version of the much-loved story; it’s also a lively, interactive space that brings the tale to life. Kids will love to tap, drag, and tilt their devices to find fun surprises and get more into the story.</p> <p>The unique feature of this app is its <strong>educational aspect</strong>. Apart from just being entertaining, it also includes learning activities. These activities have been designed with the help of literacy experts, focusing on enhancing kids’ skills in <strong>spelling, phonics, rhyming, and reading comprehension</strong>. They are in line with kindergarten level English Language Arts (ELA) standards. Hidden as stars throughout the book, these activities encourage kids to learn at their own speed and keep coming back for more.</p> <p>To top it all off, parents can keep track of their child’s learning journey. They can check the number of minutes their child spends reading and the pages they have read in a <strong>dedicated section</strong>. This way, the app not only brings joy but also provides significant value.</p> <hr> <h2 id="fairy-tales"><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/fairy-tales-bedtime-stories/id947235578">Fairy Tales ~ Bedtime Stories</a></h2> <figure><img loading="lazy" decoding="async" alt="Fairy Tales Bedtime Stories" height="1117" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/Fairy-Tales-Bedtime-Stories.jpg" width="1500"></figure> <ul> <li><strong>Author and Illustrator:</strong> Vincent Herriau</li> <li><strong>Publisher:</strong> AmayaKids</li> </ul> <p>The <strong>“Fairy Tales ~ Bedtime Stories” app</strong> lets your child dive into a magic-filled world of <strong>classic fairy tales</strong>. This amazing collection includes popular stories like “Puss in Boots”, “The Beauty and the Beast”, “Cinderella”, and “The Snow Queen”, plus so many more.</p> <p>But this isn’t just about reading – the app brings each story alive. It does this with <strong>interactive scenes</strong>, characters who move and talk, and even <strong>educational games</strong> hidden inside the stories. This way, every fairy tale becomes an exciting way to learn.</p> <p>Designed especially for children, this app is super easy to use. The <strong>“Read to Me”</strong> and <strong>“Read it Myself”</strong> modes let kids pick how they want to enjoy each story.</p> <hr> <h2 id="nighty-night"><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/nighty-night-forest/id1300717402">Nighty Night Forest</a></h2> <figure><img loading="lazy" decoding="async" alt=" Nighty Night Forest" height="683" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/Nighty-Night-Forest.jpg" width="1500"></figure> <ul> <li><strong>Author and Illustrator:</strong>Jeremy Kool</li> <li><strong>Publisher:</strong> Fox and Sheep GmbH</li> </ul> <p><strong>“Nighty Night Forest”</strong> is the delightful follow-up to the internationally adored bedtime apps <strong>“Nighty Night”</strong> and <strong>“Nighty Night Circus”</strong>. This third part takes kids on a magical journey into a sleep-filled forest with <strong>seven cute and playful animals</strong>. Designed to become part of your child’s nightly routine, it allows kids to help animals get ready for bed by switching off the lights. From deer to foxes, each animal performs funny and surprising activities before going to sleep.</p> <p>Developed by renowned artist Jeremy Kool, this app masterfully combines <strong>3D modeling and lighting with 2D drawings and textures</strong> to bring stunning landscapes to life. Features include an autoplay mode, hidden treasures, personalized sound effects and music, plus narration in 13 languages. Because of its perfect length, it’s an excellent way to establish a calming bedtime routine for <strong>children aged 2 to 5</strong>.</p> <hr> <h2 id="little-stories"><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/little-stories-bedtime-books/id977016099">Little Stories: Bedtime Books</a></h2> <figure><img loading="lazy" decoding="async" alt="Little Stories Bedtime Books" height="1125" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/Little-Stories-Bedtime-Books.jpg" width="1500"></figure> <ul> <li><strong>Publisher:</strong> Diveo Media OU</li> </ul> <p><strong>“Little Stories”</strong> is a fun <strong>collection of fairy tales</strong> designed to make your kid the star of the story. All you need to do is put in your child’s name and gender, and you’ll get a bunch of stories tailored just for them, complete with lovely pictures and captivating music. The app even lets you turn these stories into your own audiobooks. Parents can narrate the tales, adding a layer of comfort and familiarity.</p> <p>This story collection has more than <strong>50 thrilling tales</strong> and over <strong>2200 stunning illustrations</strong>. It’s been awarded numerous times, even bagging <strong>1st place in the “Entertainment” category</strong> at the 2018 Rating Runet.</p> <hr> <h2 id="monsters-sick"><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/app/id535303119">Even Monsters Get Sick</a></h2> <figure><img loading="lazy" decoding="async" alt="even monsters get sick michael bruza" height="1117" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/even-monsters-get-sick-michael-bruza.jpg" width="1500"></figure> <ul> <li><strong>Author and Illustrator:</strong> Michael Bruza</li> <li><strong>Publisher:</strong> Busy Bee Studios</li> </ul> <p><strong>Children aged 3 to 7</strong> are sure to enjoy this sweet tale about a little boy, <strong>Harry, and his unwell monster friend</strong>. The story is brought to life with <strong>cartoon-style drawings</strong>, enhanced with <strong>bold, eye-catching textures</strong> that make the lovable monster truly stand out.</p> <hr> <h2 id="little-fox"><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/id499541243">Little Fox Music Box</a></h2> <figure><img loading="lazy" decoding="async" alt="little fox music box heidi wittlinger" height="1117" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/little-fox-music-box-heidi-wittlinger.jpg" width="1500"></figure> <ul> <li><strong>Illustrator:</strong> Heidi Wittlinger</li> <li><strong>Publisher: </strong>Fox & Sheep</li> </ul> <p><strong>Little Fox</strong> is a <strong>sing-along book</strong> that’s perfect for <strong>kids aged 2 to 6</strong>. This musical app allows you to teach your kids timeless tunes like <strong>“London Bridge”</strong> and <strong>“Old Mac Donald Had A Farm”</strong>. The award-winning artist, <strong>Heidi Wittlinger</strong>, has filled the app with fun characters, created using a unique style of <strong>textured illustrations and paper cutout art</strong>.</p> <hr> <h2 id="heart-bottle"><a rel="nofollow noopener" target="_blank" href="https://books.apple.com/gb/audiobook/the-heart-and-the-bottle/id1441859075">The Heart and the Bottle</a></h2> <figure><img loading="lazy" decoding="async" alt="heart bottle oliver jeffers" height="620" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/heart-bottle-oliver-jeffers.jpg" width="600"></figure> <ul> <li><strong>Author / Illustrator: </strong>Oliver Jeffer</li> <li><strong>Publisher:</strong> HarperCollins Publishers Ltd</li> </ul> <p><strong>Oliver Jeffers</strong>, a celebrated author of children’s books, has crafted a book for <strong>kids aged 2 to 8</strong>. It’s all about a curious little girl who loves to discover new things. The book combines <strong>traditional art and digital illustrations</strong> to create fun, modern, doodle-like drawings.</p> <hr> <h2 id="mr-wolf"><a rel="nofollow noopener" target="_blank" href="https://books.apple.com/us/book/mr-wolf-and-the-ginger-cupcakes/id496359949">Mr. Wolf and the Ginger Cupcakes</a></h2> <figure><img loading="lazy" decoding="async" alt="wolf and ginger cupcakes lucia mascuillo" height="450" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/wolf-and-ginger-cupcakes-lucia-mascuillo.jpg" width="600"></figure> <ul> <li><strong>Illustrator:</strong> Lucia Mascuill</li> <li><strong>Publisher:</strong> BlueQuoll</li> </ul> <p><strong>Mr. Wolf and the Ginger Cupcakes</strong> has a fresh new twist that kids aged between <strong>1 to 8 years</strong> will surely enjoy. <strong>Lucia Mascuillo</strong> spices up the traditional fairytale vibe with her <strong>illustrations</strong>. She uses a mix of <strong>watercolor and pencil</strong> to give her artwork a unique touch.</p> <hr> <h2 id="cinderella"><a rel="nofollow noopener" target="_blank" href="https://books.apple.com/us/book/cinderella/id553628093">Cinderella</a></h2> <figure><img loading="lazy" decoding="async" alt="cinderella edward bryan" height="450" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/cinderella-edward-bryan.jpg" width="600"></figure> <ul> <li><strong>Illustrations:</strong> Edward Brya</li> <li><strong>Publisher:</strong> Nosy Crow</li> </ul> <p><strong>This award-winning app</strong> breathes life into the timeless tale of Cinderella through fun animations and unique music. <strong>Kids aged 3 and up</strong> will be thrilled to engage with the story. The app also features beautiful illustrations, which blend real-world textures with paper cutout styles, adding a contemporary touch to the story.</p> <hr> <h2 id="monster-games"><a rel="nofollow noopener" target="_blank" href="http://www.storybots.com/storybooks/monster-games">Monster Games on StoryBots</a></h2> <figure><img loading="lazy" decoding="async" alt="monster games nikolas ilac" height="449" src="https://assets.hongkiat.com/uploads/beautiful-illustrated-kids-books/monster-games-nikolas-ilac.jpg" width="600"></figure> <ul> <li><strong>Illustrator:</strong> Nikolas Ilac</li> <li><strong>Animator: </strong>Amelia Lorenz</li> <li><strong>Publisher: </strong>JibJab Media Inc</li> </ul> <p><strong>This Halloween book is perfect for kids aged two to eight!</strong> It’s all about a little kid who goes on an adventure to a scary castle. You can make the story extra special by <strong>adding a picture of your child</strong>. Children will surely enjoy the fun and unique character illustrations by Nikolas Ilac. His art style beautifully <strong>combines bold shapes with delicate details</strong>.</p><p>The post <a href="https://www.hongkiat.com/blog/beautiful-illustrated-kids-books/">10 Best Illustrated Children&#8217;s Books for iPad</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Mobile iPad Kids and Tech Veronica Howes 5 AI-Powered Tools to Automate Your Browser Tasks https://www.hongkiat.com/blog/best-ai-tools-browser-automation/ hongkiat.com urn:uuid:64c5a620-5ed9-b76a-3f87-e2d54581588f Mon, 12 May 2025 13:00:39 +0000 <p>AI has transformed how we interact with the web such as how we could handle some browser tasks. From data extraction and form submissions to workflow automation, AI-powered tools can handle these processes easily. So instead of manually clicking through pages or copying information, you can use these tools to automate these tasks to save&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/best-ai-tools-browser-automation/">5 AI-Powered Tools to Automate Your Browser Tasks</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>AI has transformed how we interact with the web such as how we could handle some browser tasks. From data extraction and form submissions to workflow automation, <a href="https://www.hongkiat.com/blog/ai-writing-tools/">AI-powered tools</a> can handle these processes easily.</p> <p>So instead of manually clicking through pages or copying information, you can use these tools to automate these tasks to save time and streamline your workflow.</p> <p>In this article, we’ve curated and tested some of the browser automation tools available today. If you’re a developer, researcher, or business professional, I’m sure you’ll appreciate these tools as they can help you work more efficiently.</p> <p>Without further ado, let’s check them out.</p> <hr> <h2 id="browseruse">1. <a rel="nofollow noopener" target="_blank" href="https://github.com/browser-use/browser-use">BrowserUse</a></h2> <p><strong>BrowserUse</strong> is an open-source tool designed to enable <a href="https://www.hongkiat.com/blog/ai-agents-101/">AI agents</a> to interact with web browsers. This allows the AI agents to perform tasks within the browser environment, such as navigating websites, extracting information, and interacting with the webapps.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/best-ai-tools-browser-automation/browser-use.jpg" alt="BrowserUse AI-powered browser automation tool" width="1000" height="640"> </figure> <p>It supports various models including <a rel="nofollow noopener" target="_blank" href="https://openai.com/">OpenAI</a>, <a rel="nofollow noopener" target="_blank" href="https://www.anthropic.com/">Antrhopic</a>, <a rel="nofollow noopener" target="_blank" href="https://gemini.google.com/">Gemini</a>, <a rel="nofollow noopener" target="_blank" href="https://www.deepseek.com/">DeepSeek</a>, and even <a rel="nofollow noopener" target="_blank" href="https://ollama.ai/">Ollama</a>.</p> <p>You can use it for a wide range of tasks, from <a href="https://www.hongkiat.com/blog/scrape-webpage-automatically/">web scraping</a>, making a purchase, applying for a job, sending email, saving files, and a lot more. And as it is backed with Playwright, it is compatible with all the browsers that Playwright supports including <a rel="nofollow noopener" target="_blank" href="https://www.chromium.org/getting-involved/download-chromium/">Chromium</a>, Firefox, and Safari.</p> <p>BrowserUse provides <a rel="nofollow noopener" target="_blank" href="https://github.com/browser-use/browser-use/tree/main/examples">a number of examples and use cases in their repository</a>, which you can learn or take an inspiration from. Below is an example how it can apply for a job for you.</p> <p> <video src="https://assets.hongkiat.com/uploads/best-ai-tools-browser-automation/best-ai-tools-browser-automation/browser-use-example.mp4" width="640" height="auto" controls></video></p> <div class="procon"> <h3>Pros</h3> <ul> <li>Supports multiple AI models including Ollama.</li> <li>Compatible with all browsers supported by Playwright.</li> </ul> <h3>Cons</h3> <ul> <li><strong>Requires Python</strong>, and some other technical knowledge to set up and use</li> </ul></div> <hr> <h2 id="stagehand">2. <a rel="nofollow noopener" target="_blank" href="https://github.com/browserbase/stagehand">Stagehand</a></h2> <p><strong>Stagehand</strong> is an AI-powerd web browsing framework designed to simplify and improve browser automation tasks.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/best-ai-tools-browser-automation/stagehand.jpg" alt="Stagehand AI-powered browser automation framework" width="1000" height="640"> </figure> <p>It allows you to convert natural language instructions into headless browser operations more efficiently. This not only reduces the complexity traditionally associated with browser automation but also could speed up your development workflows.</p> <p>Stagehand also runs with Playwright under the hood. But what makes it different is that it <strong>provides an easy to follow API in JavaScript</strong> which makes it easier to integrate with your existing JavaScript-based projects.</p> <p>You can use it to automate a wide range of tasks, from web scraping to testing and monitoring. Checkout how easy it is to use it.</p> <div style="position: relative; padding-bottom: 64.63195691202873%; height: 0;"> <iframe src="https://www.loom.com/embed/f5107f86d8c94fa0a8b4b1e89740f7a7?sid=5d31abe4-447a-4040-9c58-e146533b7713" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"></iframe> </div> <div class="procon"> <h3>Pros</h3> <ul> <li>Easy to install with NPX package</li> <li>Easy to use API in JavaScript</li> <li>Supports a wide range of browser automation tasks</li> </ul> <h3>Cons</h3> <ul> <li>Only supports OpenAI and Anthropic AI models</li> </ul></div> <hr> <h2 id="skyvern">3. <a rel="nofollow noopener" target="_blank" href="https://github.com/Skyvern-AI/skyvern">Skyvern</a></h2> <p><strong>Skyvern</strong> is a tool that use LLMs and computer vision to automate workflows across various browsers.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/best-ai-tools-browser-automation/skyvern.jpg" alt="Skyvern AI-powered browser automation with computer vision" width="1000" height="640"> </figure> <p>It comes with several AI agents designed to handle different tasks:</p> <ul> <li><strong>The 2FA Agent</strong>, which is capable of handling two-factor authentication</li> <li><strong>The Auto-complete Agent</strong>, which is capable of filling out forms with dynamic auto-complete features</li> <li><strong>The Data Extraction Agent</strong>, which is to extract information on the website like text and table and organize them in proper formatting.</li> <li><strong>The Interactable Element Agent</strong>, which capable of parsing the HTML to identify elements like buttons, links, and input fields that can be interacted with.</li> <li><strong>The Password Agent</strong>, which is capable of managing sensitive inputs such as usernames and password</li> </ul> <p>It combines prompts, computer vision, and these intelligent agents to analyze and interact with web pages in real time. This allows it to navigate and automate tasks on websites it has never seen before without needing custom code by mapping visual elements to the actions required for a given workflow.</p> <p>It supports a wide range of AI models, including OpenAI, Anthropic, AWS Bedrock, and it will soon also include Ollama, and Gemini.</p> <div class="procon"> <h3>Pros</h3> <ul> <li>An advanced tool that comes with anti-bot detection mechanisms, proxy network, and CAPTCHA solving to allow you to complete more complicated workflows.</li> <li>Supports various different AI models.</li> <li>Provides a user-friendly interface to create and manage the automatic workflows.</li> <li>Backed with Playwright under the hood, which allows it to work with different browsers including Chrome, Firefox, and Safari.</li> </ul> <h3>Cons</h3> <ul> <li>Requires some technical knowledge to use it on self-host setup.</li> </ul></div> <hr> <h2 id="shortest">4. <a rel="nofollow noopener" target="_blank" href="https://shortest.com">Shortest</a></h2> <p><strong>Shortest</strong> is an open-source, AI-powered testing framework that allows you to write end-to-end tests using plain English instruction.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/best-ai-tools-browser-automation/shortest.jpg" alt="Shortest AI-powered end-to-end testing framework" width="1000" height="640"> </figure> <p>This allows you to focus on describing your test scenarios, while Shortest handles the implementation details. For example, using the <code>shortest</code> function, you can specify actions like logging into an application with a username and password.</p> <pre> import { shortest } from '@antiwork/shortest' shortest('Login to the app using email and password', { username: process.env.GITHUB_USERNAME, password: process.env.GITHUB_PASSWORD }) </pre> <p>It is built on top of <a rel="nofollow noopener" target="_blank" href="https://playwright.dev/">Playwright</a>, and provides seamless <a href="https://www.hongkiat.com/blog/manage-git-github-atom/">GitHub integration</a> for continuous integration and deployment workflows.</p> <p>See how it works in action below.</p> <p> <video src="https://assets.hongkiat.com/uploads/best-ai-tools-browser-automation/shortest-example.mp4" width="640" height="auto" controls></video></p> <div class="procon"> <h3>Pros</h3> <ul> <li>Designed specifically for E2E testing</li> <li>Provides JavaScript API</li> <li>Seamless Github and Playwright integration, which makes it easier to adopt it, if you’re already using these tools</li> </ul> <h3>Cons</h3> <ul> <li>It’s designed only for automating E2E testing. If you’re looking to automate other browser tasks, you might want to consider other tools</li> </ul></div> <hr> <h2 id="automa">5. <a rel="nofollow noopener" target="_blank" href="https://www.automa.site">Automa</a></h2> <p><strong>Automa</strong> is a free, open-source <a href="https://www.hongkiat.com/blog/productivity-chrome-extensions/">browser extension</a> designed to automate various web tasks such as auto-filling forms, taking screenshots, scraping data from websites, and downloading assets.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/best-ai-tools-browser-automation/automa.jpg" alt="Automa browser extension for task automation" width="1000" height="640"> </figure> <p>Automating browser tasks is pretty simple.</p> <p>It provides a user-friendly, low-code interface that allows you to create automation workflows by connecting different blocks. It also has a workflow recording feature that captures your actions automatically, and the marketplace features numerous shared workflows that you can add and customize to suit your needs.</p> <p>Even though it is not an AI-powered tool per se, it’s the ease of use that makes it on the list, and it also provides a custom block where you can put your own functions to integrate with AI services such as OpenAI, Claude, or DeepSeek.</p> <p>It is available both <a rel="nofollow noopener" target="_blank" href="https://chromewebstore.google.com/detail/automa/infppggnoaenmfagbfknfkancpbljcca">for Chrome</a> and <a rel="nofollow noopener" target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/automa/">Firefox browsers</a>, and you can install it directly from their respective extension stores.</p> <div class="procon"> <h3>Pros</h3> <ul> <li>Comes as browser extensions. It’s very easy to install it.</li> <li>Provides a user-friendly interface to create automation workflows</li> <li>Supports custom blocks to integrate with external AI services</li> </ul> <h3>Cons</h3> <ul> <li>Since it’s not an AI-powered tool per se, it might not be as advanced as other tools on the list</li> </ul></div> <h2>Wrapping Up</h2> <p>AI-powered tools can help you automate your browser tasks, saving you time and streamlining your workflow. In this article, we’ve curated some of the best AI-powered tools available today that are free and open-source.</p> <p>Give them a try and see how they can help you work more efficiently.</p><p>The post <a href="https://www.hongkiat.com/blog/best-ai-tools-browser-automation/">5 AI-Powered Tools to Automate Your Browser Tasks</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Internet Thoriq Firdaus 6 Cursor AI Tips You Should Know https://www.hongkiat.com/blog/essential-cursor-editor-tips/ hongkiat.com urn:uuid:ca7a9d65-4876-04f3-fae9-819952e78ddc Mon, 12 May 2025 13:00:11 +0000 <p>Cursor is a code editor designed to help you write code faster and more efficiently. It uses AI assistants that understand your code, offers smart suggestions, generates code snippets, and even helps fix bugs. To make the most of Cursor, it’s important to use it effectively. In this article, we’ll share practical tips and tricks&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/essential-cursor-editor-tips/">6 Cursor AI Tips You Should Know</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>Cursor is a code editor designed to help you write code faster and more efficiently. It uses AI assistants that understand your code, offers smart suggestions, generates code snippets, and even helps fix bugs.</p> <p>To make the most of Cursor, it’s important to use it effectively. In this article, we’ll share practical tips and tricks to boost your workflow and get the best results in this <a href="https://www.hongkiat.com/blog/best-ai-powered-code-editors/">AI-powered code editor</a>.</p> <p>Ready to boost your productivity? Here are some practical ways to get the most out of Cursor.</p> <hr> <h2 id="cursor-cli">1. Use the Cursor CLI</h2> <p>The cursor CLI is a command-line tool for Windows, macOS, and Linux that allows you to interact with the Cursor editor directly from your terminal. To install the CLI, you can launch the command palette with <kbd>Cmd/Ctrl</kbd>+<kbd>P</kbd>, and select the <strong>Shell Command: Install “cursor” command</strong> menu, as follows:</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-cli-installation.jpg" alt="Installing Cursor CLI command through command palette" width="1000" height="640"> </figure> <p>It works similarly to the <code>code</code> CLI for VSCode. It allows you, for example, to create, manage, and open projects in the Cursor editor without leaving the command line.</p> <p>In addition to project management, the CLI also helps you handle extensions in Cursor. You can list installed extensions, update them, or uninstall ones you no longer need with simple commands.</p> <p>Here are a few examples of how you can use the <code>cursor</code> CLI:</p> <h5>Open current directory in Cursor editor:</h5> <pre> cursor . </pre> <h5>Add folder to the last active window:</h5> <pre> cursor --add site </pre> <h5>List currently installed extensions:</h5> <pre> cursor --list-extensions </pre> <p>Using the CLI is particularly useful especially if you frequently or prefer working in the Terminal, as it could help making your development process more efficient.</p> <hr> <h2 id="use-context">2. Use Context</h2> <p>The chat feature in Cursor allows you to interact with the <a href="https://www.hongkiat.com/blog/create-chatbot-with-openai/">AI assistant</a> directly. You can ask questions, request code changes, and get suggestions that you can apply with a single click.</p> <p>One important thing to remember is that Cursor works best when you provide the right context. The more relevant details you include, the better its responses will be.</p> <p>A great way to do this is by tagging relevant files using <strong>@</strong>. This helps the AI understand your code better and give more precise suggestions.</p> <p>For example, if you want to create a test for a class, you can tag the file.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-chat-context.jpg" alt="Using @ symbol to tag files in Cursor chat for context" width="1000" height="375"> </figure> <p>This way it can understand better what the code is about and thus can also provide more accurate responses. If you’re happy with it, you can simply click on the <strong>Apply</strong> option. It also understands where to put it in the directory, as we can see below:</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-chat-context-apply.jpg" alt="Applying AI-generated code suggestion in Cursor editor"> </figure> <hr> <h2 id="image-context">3. Use Image for Context in Chat</h2> <p>Furthermore, one of the cool things about Cursor chat is that you’re able to include image as context. You can do so by drag-n-drop the image on the chat box.</p> <p>When an image is included, it can analyze it alongside the provided text, enabling it to generate more relevant and accurate code. This is particularly useful for tasks that require visual cues, such as updating user interfaces or replicating design elements from mockups.</p> <p>In this example, we will use it to generate an SVG.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-chat-context-image.jpg" alt="Using drag and drop image feature in Cursor chat" width="1000" height="600"> </figure> <p>It’s pretty handy!</p> <p>But it’s important to note that results may vary depending on the image’s complexity and the task. It can still struggle with finer details.</p> <hr> <h2 id="custom-rules">4. Use Custom Rules</h2> <p>Cursor also ships with a feature called <strong>Rules for AI</strong>.</p> <p>This feature allows you to define rules for the AI to follow when suggesting or generating codes. You can define the format, naming conventions, best practices for your project, or apply rules for specific files.</p> <p>This is super helpful if you’re working with a team and need everyone to follow the same coding rules, or if you just have a personal way of doing things. It can save you time, avoid unnecessary edits, and get suggestions that fit your workflow perfectly.</p> <p>So, to set up the rules, you can go to the <strong>Settings > Cursor Settings > Rules</strong>. Click on the <strong>+ Add new rule</strong>. Then, you will need to add the name, description, and optionally attach a file to the rule.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-rules-create.jpg" alt="Creating new AI rule in Cursor settings" width="1000" height="600"> </figure> <p>Now, it’s time to set up your rules.</p> <p>If you’re just getting started, keep it simple. Don’t try to define every rule at once. Focus on the most important ones first. Then, test how the AI responds and refine your rules as needed to get the best results.</p> <p>Here is an example of how we can describe the rule:</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-rules-rules-description.jpg" alt="Setting up PSR-12 coding standards in Cursor AI rules" width="1000" height="600"> </figure> <p>This will ensure the AI assistant would follow PSR-12 convention when generating PHP codes with few exceptions, and also apply specific rule to a one specific file.</p> <hr> <h2 id="notepads">5. Use Notepads</h2> <p>Another feature in Cursor that can make your workflow even more efficient is <strong>Notepads</strong>. By default, this feature might be hidden in the editor, but you can enable it by right-clicking on the <strong>Primary Sidebar</strong> on the right side and selecting <strong>Notepads</strong> from the menu.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-notepads-show-menu.jpg" alt="Enabling Notepads feature in Cursor sidebar" width="1000" height="600"> </figure> <p>Now, you can find <strong>Notepads</strong> in the Cursor sidebar. Create a new one with a clear name, add your content using plain text or markdown.</p> <p>You can add for example the write down the project architecture decisions, recording development guidelines and best practices, and helping maintain consistency across your codebase.</p> <p>If you frequently use certain code snippets, Notepads can act as a handy place to store reusable templates. It’s also great for keeping frequently referenced documentation, like API details, troubleshooting steps, or internal workflows.</p> <p>Here is an example where we define the architecture decisions for the Frontend projects:</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-notepads-example.jpg" alt="Frontend architecture decisions documented in Cursor Notepad" width="1000" height="600"> </figure> <p>Now, you can refer your <strong>Notepads</strong> in Chat or in Composer (Agent) in Cursor, using <code>@Notepads</code>.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-notepads-reference.jpg" alt="Referencing Notepad content in Cursor chat" width="1000" height="600"> </figure> <hr> <h2 id="documentation">6. Documentation Integration</h2> <p>Cursor, like any AI assistant or tool, works best when it has the right context, such as relevant documentation, to guide its responses.</p> <p>In Cursor, you can add and reference external documentation directly in the editor to give the AI assistant access to important resources.</p> <p>By default, Cursor already includes a wide range of official documentation, covering frameworks like WordPress, Laravel, Vue, React, Angular, and many more. If the documentation you need isn’t available, you can easily add it by providing a URL. This is especially useful for including internal team documentation. As long as the content is publicly accessible, Cursor can fetch and use it.</p> <p>To includes documentation as reference, you can type <code>@docs</code> in the chat box, and then you can search for the documentation you need.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-docs-reference.jpg" alt="Searching for documentation using @docs command in Cursor" width="1000" height="600"> </figure> <p>In this example, I add the reference to <a rel="nofollow noopener" target="_blank" href="https://wordpress.org/documentation/">the WordPress official docs</a> and ask Cursor to create a post type.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/essential-cursor-editor-tips/cursor-docs-reference-example-prompt.jpg" alt="Creating WordPress custom post type using documentation reference" width="1000" height="600"> </figure> <p>Cursor is quite smart that it defined the post type with a class with proper name, add it in proper directory, set the <code>private</code> option to <code>false</code> and add all translatable labels with the correct text domain.</p> <hr> <h2>Wrapping Up</h2> <p>Cursor is a powerful AI assistant that can help you write code faster, and improve your workflow. In this article, we’ve explored some of the tips and tricks that can help you get the most out of Cursor. Hopefully, you’ve found them useful and can apply them to your own projects.</p><p>The post <a href="https://www.hongkiat.com/blog/essential-cursor-editor-tips/">6 Cursor AI Tips You Should Know</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Internet Thoriq Firdaus 10 Best Mobile Apps to Create Typography Easily https://www.hongkiat.com/blog/typography-mobile-apps/ hongkiat.com urn:uuid:adf929d1-1934-e45c-2fd8-cb83ed7f4c0d Fri, 25 Apr 2025 07:00:28 +0000 <p>Ever scrolled through Instagram and wondered how people create those gorgeous text designs? Or maybe you’ve tried to make a poster or meme, only to end up with something that looks, well, a bit amateur? I’ve been there too! The good news is, creating professional-looking typography doesn’t have to be hard. In fact, with the&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/typography-mobile-apps/">10 Best Mobile Apps to Create Typography Easily</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>Ever scrolled through Instagram and wondered how people create those gorgeous text designs? Or maybe you’ve tried to make a poster or meme, only to end up with something that looks, well, a bit amateur? I’ve been there too!</p> <p>The good news is, creating professional-looking typography doesn’t have to be hard. In fact, with the right apps, you can whip up stunning text designs in minutes – no graphic design degree required. While we’ve previously explored <a href="https://www.hongkiat.com/blog/online-typography-tools/" target="_blank" rel="noopener">essential web typography tools for designers</a>, this time we’re focusing on mobile solutions that let you create on the go.</p> <p>Whether you’re spicing up your social media, designing a flyer, or just having fun with text, there’s an app that can help. I’ve tested dozens of typography apps to bring you this list of the 10 best. We’ll look at what makes each one special, how much they cost, and which devices they work on. Ready to turn your text into art? Let’s get started!</p> <hr> <h3>Overview:</h3> <table> <thead> <tr> <th>Tool Name</th> <th>Features</th> <th>Pricing</th> <th>Platform</th> </tr> </thead> <tbody> <tr> <td><a href="#typorama" rel="nofollow">Typorama</a></td> <td>Create stunning text-based designs with no design skills needed.</td> <td>Free; Pro starts at $1.99.</td> <td>iOS</td> </tr> <tr> <td><a href="#text-art" rel="nofollow">Text Art</a></td> <td>Design posters, flyers, and social media posts quickly and easily.</td> <td>Free; Premium starts at $2.99.</td> <td>iOS</td> </tr> <tr> <td><a href="#tenada" rel="nofollow">TENADA</a></td> <td>Create logos, collages, and video posts with 3D effects and templates.</td> <td>Free; Pro starts at $4.99/month.</td> <td>iOS, Android</td> </tr> <tr> <td><a href="#word-swag" rel="nofollow">Word Swag</a></td> <td>Turn text and photos into stunning designs with pre-made layouts.</td> <td>Free; Pro starts at $4.99.</td> <td>iOS</td> </tr> <tr> <td><a href="#leto" rel="nofollow">Leto</a></td> <td>Create eye-catching Instagram stories, posts, and reels with fonts and effects.</td> <td>Free; Premium starts at $4.99.</td> <td>iOS, Android</td> </tr> <tr> <td><a href="#art-word" rel="nofollow">Art Word</a></td> <td>Transform photos into creative designs with text, stamps, and effects.</td> <td>Free with in-app purchases.</td> <td>iOS, Android</td> </tr> <tr> <td><a href="#font-candy" rel="nofollow">Font Candy</a></td> <td>Add text and artwork to photos for social media and merch designs.</td> <td>Free; Premium features via in-app purchases.</td> <td>iOS</td> </tr> <tr> <td><a href="#fontspiration" rel="nofollow">Fontspiration</a></td> <td>Create custom text designs and animations for social media.</td> <td>Free.</td> <td>iOS</td> </tr> </tbody> </table> <hr> <h2 id="typorama">Typorama</h2> <figure><img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/Typorama.jpg" alt="Typorama" width="1500" height="1066"></figure> <p>Typorama is a simple app for creating eye-catching text-based designs. It’s great for social media posts, posters, and quotes. With ready-made layouts and effects, you can turn plain text into stylish graphics quickly.</p> <p><strong>Key Features:</strong></p> <ul> <li>50+ text styles and fonts for different themes.</li> <li>Creative effects like ribbons, badges, and curved text.</li> <li>Basic photo editing with filters and overlays.</li> <li>3D effects and shadow options for added depth.</li> <li>High-resolution exports up to 2048 x 2048 pixels.</li> <li>Watermark support for branding.</li> </ul> <p><strong>Pricing:</strong> Free version; Pro features start at $1.99.</p> <p><a href="https://apps.apple.com/us/app/typorama-text-on-photo-editor/id978659937" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a></p> <hr> <h2 id="text-art">Text Art</h2> <figure><img decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/Text-Art.jpg" alt="Text-Art" width="1500" height="1057"></figure> <p>Text Art is an easy-to-use app for creating custom posters, flyers, and social media posts. Just add text to your photos and style it with fonts, layouts, and effects in seconds.</p> <p><strong>Key Features:</strong></p> <ul> <li>Wide range of fonts and layouts for quick designs.</li> <li>Custom colors, gradients, and textures for text.</li> <li>Access millions of free stock photos.</li> <li>Built-in library of inspirational quotes.</li> <li>High-resolution export for print-quality results.</li> </ul> <p><strong>Pricing:</strong> Free version; premium plans start at $2.99.</p> <p><a href="https://apps.apple.com/us/app/text-art-typography-word/id1478737802" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a></p> <hr> <h2 id="tenada">TENADA</h2> <figure><img decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/TENADA.jpg" alt="TENADA" width="1500" height="1383"></figure> <p>TENADA is a versatile design app for creating logos, collages, and video posts. It offers easy-to-use tools for editing text, photos, and videos-perfect for beginners and pros alike.</p> <p><strong>Key Features:</strong></p> <ul> <li>Animated templates for logos, collages, and typography.</li> <li>3D editor with 300+ motion presets.</li> <li>Customizable text effects like neon and fire animations.</li> <li>Backgrounds with gradients, colors, and Unsplash images.</li> </ul> <p><strong>Pricing:</strong> Free version; Pro starts at $4.99/month.</p> <p><a href="https://apps.apple.com/us/app/tenada-graphic-design-editor/id1557814350" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a> <a href="https://play.google.com/store/apps/details?id=com.tenada.android&hl=en_SG" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-android" style="font-size:16px;color:#fff"></i> Android </span></a></p> <hr> <h2 id="word-swag">Word Swag</h2> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/Word-Swag.jpg" alt="Word-Swag" width="1500" height="1056"></figure> <p>Word Swag makes it easy to create stylish text designs for social media, posters, and more. Its Typomatic™ engine helps you design pro-level layouts in seconds.</p> <p><strong>Key Features:</strong></p> <ul> <li>100+ stylish fonts with fun and creative themes.</li> <li>Instant layouts using the Typomatic™ engine.</li> <li>Design ideas from the Word Swag Genie tool.</li> <li>Millions of free backgrounds via Unsplash and Pixabay.</li> <li>22 filters and effects to enhance photos.</li> </ul> <p><strong>Pricing:</strong> Free version; Pro starts at $4.99.</p> <p><a href="https://apps.apple.com/us/app/word-swag-cool-fonts/id645746786" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a></p> <hr> <h2 id="leto">Leto</h2> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/Leto.jpg" alt="Leto" width="1500" height="1063"></figure> <p>Leto is a simple app for creating stylish stories, posts, and reels. It comes with fonts, stickers, and editing tools to level up your social media content.</p> <p><strong>Key Features:</strong></p> <ul> <li>500+ fonts, including calligraphy and animated styles.</li> <li>Photo and video editor with quick editing tools.</li> <li>Ready-made templates for posts and collages.</li> <li>Subtitles, filters, and effects to enhance visuals.</li> <li>One-tap background removal for clean edits.</li> <li>AR tools to add fonts and stickers to real-world scenes.</li> </ul> <p><strong>Pricing:</strong> Free version; premium plans start at $4.99.</p> <p><a href="https://apps.apple.com/us/app/leto-font-for-instagram-story/id1489707025" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a> <a href="https://play.google.com/store/apps/details?id=com.alexyndrik.leto&hl=en_SG" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-android" style="font-size:16px;color:#fff"></i> Android </span></a></p> <hr> <h2 id="art-word">Art Word</h2> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/Art-Word.jpg" alt="Art-Word" width="1500" height="1055"></figure> <p>Art Word is an easy-to-use app for turning photos into creative designs. Add text, stamps, and effects to make memes, greeting cards, and motivational quotes.</p> <p><strong>Key Features:</strong></p> <ul> <li>Stylish fonts for captions, quotes, and messages.</li> <li>Photo editing tools to adjust brightness, contrast, and saturation.</li> <li>Decorative stamps, ribbons, banners, and frames.</li> <li>Quick sharing to Instagram, Facebook, and Twitter.</li> </ul> <p><strong>Pricing:</strong> Free with optional in-app purchases.</p> <p><a href="https://apps.apple.com/us/app/art-word-add-text-to-photos/id1156396870" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a> <a href="https://play.google.com/store/apps/details?id=add.text.to.photo.write.on.picture.editor&hl=en" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-android" style="font-size:16px;color:#fff"></i> Android </span></a></p> <hr> <h2 id="font-candy">Font Candy</h2> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/Font-Candy.jpg" alt="Font-Candy" width="1500" height="1486"></figure> <p>Font Candy lets you add text and artwork to photos quickly. It’s perfect for creating social media posts, merch designs, and quotes with minimal effort.</p> <p><strong>Key Features:</strong></p> <ul> <li>45+ artistic fonts for custom text designs.</li> <li>Text tools to curve, add shadows, and edit captions.</li> <li>Built-in artwork and quotes for quick inspiration.</li> <li>Filters and customizable colors to enhance photos.</li> <li>Design and order t-shirts, posters, and more.</li> <li>Resize and crop images for social media platforms.</li> </ul> <p><strong>Pricing:</strong> Free download; premium features via in-app purchases and subscriptions.</p> <p><a href="https://apps.apple.com/us/app/font-candy-photo-text-editor/id661971496" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a></p> <hr> <h2 id="fontspiration">Fontspiration</h2> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/typography-mobile-apps/Fontspiration.jpg" alt="Fontspiration" width="1500" height="866"></figure> <p>Fontspiration is a simple app for creating custom text designs and animations. It’s great for social media posts and personal projects with plenty of fonts and motion effects to explore.</p> <p><strong>Key Features:</strong></p> <ul> <li>Hundreds of fonts for unique designs.</li> <li>Custom tools to adjust size, alignment, and colors.</li> <li>Animated text effects to add motion.</li> <li>Inspiration feed with creative design ideas.</li> <li>Quick sharing to Instagram, Facebook, and Twitter.</li> </ul> <p><strong>Pricing:</strong> Free to download and use.</p> <p><a href="https://apps.apple.com/us/app/fontspiration/id930147513" class="su-button su-button-style-flat" style="color:#FFFFFF;background-color:#2D89EF;border-color:#246ec0;border-radius:0px" target="__blank" rel="noopener nofollow"><span style="color:#FFFFFF;padding:7px 20px;font-size:16px;line-height:24px;border-color:#6cadf4;border-radius:0px;text-shadow:none"><i class="sui sui-apple" style="font-size:16px;color:#fff"></i> iOS </span></a> </p><p>The post <a href="https://www.hongkiat.com/blog/typography-mobile-apps/">10 Best Mobile Apps to Create Typography Easily</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Mobile Font Tools Fonts Agus How to Make Files Immutable in Linux Using chattr Command https://www.hongkiat.com/blog/linux-chattr-command/ hongkiat.com urn:uuid:c8ec9018-097c-0d0b-1185-2ea76c3fa1d1 Thu, 24 Apr 2025 10:00:25 +0000 <p>Use chattr's immutable flag to protect Linux files from deletion or modification-even by root users.</p> <p>The post <a href="https://www.hongkiat.com/blog/linux-chattr-command/">How to Make Files Immutable in Linux Using chattr Command</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>Have you ever accidentally deleted an important configuration file or overwritten changes you needed? Linux offers a powerful but lesser-known feature that can help prevent these situations: file immutability.</p> <p>Making a file immutable means it cannot be modified, deleted, renamed, or linked to-even by users with root privileges. This provides an extra layer of protection for critical system files or important data.</p> <p>In this guide, we’ll look at how to use the <code>chattr</code> command to make files immutable in Linux, what happens when you try to modify protected files, and how to remove this protection when needed.</p> <hr> <h2 id="making-files-immutable">Making Files Immutable in Linux</h2> <p>The <code>chattr</code> (change attribute) command is what we’ll use to make files immutable. Unlike regular file permissions that only restrict access based on user privileges, file attributes can prevent specific operations regardless of who attempts them.</p> <h3>The Command Syntax</h3> <p>To make a file immutable, you use the <code>chattr</code> command with the <code>+i</code> flag:</p> <pre> sudo chattr +i filename.txt </pre> <p>You’ll need root privileges (using <code>sudo</code>) to change file attributes, especially for system files. If you’re not familiar with <code>sudo</code>, check out our guide on <a href="https://www.hongkiat.com/blog/linux-command-sudo/">how to use the sudo command in Linux</a>.</p> <h3>What Happens When a File is Immutable?</h3> <p>Once a file is marked as immutable, several operations will fail with an “operation not permitted” error:</p> <ul> <li>You can’t modify the file’s contents</li> <li>You can’t rename the file</li> <li>You can’t delete the file</li> <li>You can’t create a hard link to the file</li> <li>You can’t change permissions or ownership</li> </ul> <p>Let’s look at some examples of what happens when you try to modify an immutable file:</p> <pre> $ sudo chattr +i important.conf $ rm important.conf rm: cannot remove 'important.conf': Operation not permitted $ mv important.conf renamed.conf mv: cannot move 'important.conf' to 'renamed.conf': Operation not permitted $ echo "new content" > important.conf bash: important.conf: Operation not permitted </pre> <p>Notice that even with proper file permissions, these operations fail. That’s the power of the immutable attribute – it overrides normal permission checks.</p> <p class="note">Remember that while a file is immutable, even root users cannot modify it until the immutable attribute is removed.</p> <h3>Checking if a File is Immutable</h3> <p>Before attempting to modify a file, you might want to check if it has the immutable attribute set. You can use the <code>lsattr</code> (list attributes) command:</p> <pre> $ lsattr filename.txt ----i--------e---- filename.txt </pre> <p>The presence of the ‘i’ flag indicates the file is immutable.</p> <h3>When to Remove Immutability</h3> <p>You should remove immutability when:</p> <ul> <li>You need to update configuration files</li> <li>You’re performing system maintenance</li> <li>You’re upgrading software that will modify protected files</li> <li>You no longer need the protection for specific files</li> </ul> <p>A good practice is to remove immutability, make your changes, and then set the file as immutable again once you’re done.</p> <hr> <h2 id="removing-immutability">Removing Immutability from Files</h2> <p>When you need to update or manage an immutable file, you’ll first need to remove the immutable attribute. This is done with the <code>chattr</code> command again, but using the <code>-i</code> flag:</p> <pre> sudo chattr -i filename.txt </pre> <p>After removing the immutable attribute, you can perform all normal file operations:</p> <pre> $ sudo chattr -i important.conf $ echo "Updated content" > important.conf # Now works $ mv important.conf renamed.conf # Now works $ rm renamed.conf # Now works </pre> <hr> <h2 id="practical-use-cases">Practical Use Cases for File Immutability</h2> <p>Making files immutable isn’t just a cool trick-it has several practical applications for system administrators and security-conscious users:</p> <h3>1. Protecting Critical Configuration Files</h3> <p>System configuration files like <code>/etc/passwd</code>, <code>/etc/shadow</code>, and <code>/etc/hosts</code> contain essential information. Making them immutable prevents accidental or malicious changes that could compromise your system.</p> <pre> sudo chattr +i /etc/passwd /etc/shadow /etc/hosts </pre> <p>Remember to temporarily remove immutability when legitimate updates are needed, then re-apply it afterward.</p> <h3>2. Preventing Accidental File Deletion</h3> <p>We’ve all had that sinking feeling after accidentally deleting an important file. For files you rarely change but always need, immutability provides peace of mind:</p> <pre> sudo chattr +i ~/Documents/important_records.pdf </pre> <h3>3. Hardening Against Malware</h3> <p>Some malware attempts to modify system files or configuration files. By making critical system files immutable, you can prevent malware from successfully compromising your system, even if it somehow gains elevated privileges.</p> <h3>4. Managing Production Environments</h3> <p>In production environments where stability is crucial, you can make deployment configurations immutable to prevent accidental changes that might cause outages:</p> <pre> sudo chattr +i /etc/nginx/nginx.conf sudo chattr +i /etc/apache2/apache2.conf </pre> <h3>5. Securing Boot Files</h3> <p>Making boot files immutable helps protect against boot-sector malware and ensures your system boots reliably:</p> <pre> sudo chattr +i /boot/grub/grub.cfg </pre> <h3>6. Creating Write-Once Files</h3> <p>For logs or records that should never be altered after creation (for compliance or security reasons), you can create the file, add content, and then make it immutable:</p> <pre> echo "Initial log entry: $(date)" > audit_log.txt sudo chattr +i audit_log.txt </pre> <p>Remember that immutability doesn’t replace backups! While it prevents modification or deletion, it won’t protect against hardware failures or other issues that might corrupt your storage.</p> <hr> <h2>Conclusion</h2> <p>The <code>chattr</code> command with its immutable flag provides a simple but powerful way to protect critical files on your Linux system. With just two commands-<code>chattr +i</code> to make a file immutable and <code>chattr -i</code> to remove immutability-you can add an extra layer of protection to your most important files.</p> <p>This feature is especially valuable because:</p> <ul> <li>It works regardless of file permissions or user privileges</li> <li>It provides protection against both accidents and malicious actions</li> <li>It’s easy to apply and remove as needed</li> <li>It requires no additional software installation (it’s built into Linux)</li> </ul> <p>While not a replacement for good backup practices or proper system administration, file immutability is a valuable tool in your Linux security toolkit. It creates a simple “lock” that requires deliberate action to remove, preventing many common file disasters.</p> <h3>Other Useful File Attributes</h3> <p>Beyond immutability, the <code>chattr</code> command offers several other useful attributes:</p> <ul> <li><code>a</code> (append-only): Files can only be opened for appending data, not editing existing content</li> <li><code>s</code> (secure deletion): When a file is deleted, blocks are zeroed and written to disk</li> <li><code>A</code> (no atime updates): The file’s access time record isn’t modified when the file is accessed</li> <li><code>c</code> (compressed): The file is automatically compressed on disk and decompressed when read</li> </ul> <p>Next time you have an important configuration file that needs protection, or just want to ensure you don’t accidentally delete your tax records, remember the simple power of <code>chattr +i</code>. It might just save your day!</p><p>The post <a href="https://www.hongkiat.com/blog/linux-chattr-command/">How to Make Files Immutable in Linux Using chattr Command</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Desktop Linux Commands Hongkiat.com How to Integrate ChatGPT With Visual Studio Code https://www.hongkiat.com/blog/chatgpt-vscode-integration-guide/ hongkiat.com urn:uuid:010e00d1-313c-9cba-5caa-0263c9a3e178 Wed, 23 Apr 2025 13:00:12 +0000 <p>In the past, if you ran into a coding issue in Visual Studio Code (VS Code) and wanted help from ChatGPT, you’d usually have to copy your code, paste it into ChatGPT, type your question, then copy the answer and paste it back into VS Code. This back-and-forth could be a bit slow and interrupt&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/chatgpt-vscode-integration-guide/">How to Integrate ChatGPT With Visual Studio Code</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>In the past, if you ran into a coding issue in Visual Studio Code (VS Code) and wanted help from ChatGPT, you’d usually have to copy your code, paste it into ChatGPT, type your question, then copy the answer and paste it back into VS Code.</p> <p><strong>This back-and-forth could be a bit slow and interrupt your flow.</strong></p> <figure> <img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/cover.jpg" alt="ChatGPT VS Code integration interface" width="1000" height="600"> </figure> <p>But now, with the latest version, ChatGPT can work directly with apps on your desktop, <strong>including VS Code</strong>. This means ChatGPT can “see” the files you have open when you ask for help, so it understands the context without you needing to copy and paste everything.</p> <p>Let’s see how this works.</p> <p class="recommended_top">See Also: <a href="https://www.hongkiat.com/blog/chatgpt-macos-apps-integration/">How to Use ChatGPT with macOS Apps</a></p> <h2>Enabling Integration</h2> <p>First, you need to install <a rel="nofollow noopener" target="_blank" href="https://marketplace.visualstudio.com/items?itemName=openai.chatgpt">the official ChatGPT extension for VS Code</a>.</p> <p>Next, you will need to make sure that it’s setting in <strong>Settings > Works with Apps > Enable Work with Apps</strong> is on.</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/enable-apps.jpg" alt="ChatGPT VS Code settings panel" width="1000" height="600"> </figure> <h2>Example: Using ChatGPT With VS Code</h2> <p>First, <strong>make sure that ChatGPT is opened and running</strong>. Then, type <kbd>Option</kbd> + <kbd>Space</kbd>. This shortcut will open the ChatGPT “Companion Chat” window on top of VS Code.</p> <p>Now, we’ll see how to use ChatGPT with VS Code.</p> <h3>Batch Editing</h3> <p>One powerful way to use the ChatGPT integration with VS Code is to make changes to multiple functions, classes, variables, arguments, or just strings all at once. In the example below, we ask ChatGPT to rename the plugin hooks.</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/rewrite-letter-case.jpg" alt="ChatGPT batch code editing example" width="1000" height="600"> </figure> <p>The best part? You don’t need to copy and paste any code. ChatGPT can scan the code directly and suggest edits. It even shows a diff and gives you a button to apply the changes with a single click.</p> <h3>Generating Boilerplate</h3> <p>Besides making changes to existing code, ChatGPT is also smart enough to generate boilerplate code to help you get started quickly.</p> <p>In this example, I created a new file and asked it to generate the code to add a submenu in the WordPress dashboard.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/generate-boilerplate-codes.jpg" alt="ChatGPT WordPress submenu code generation" width="1000" height="600"> </figure> <p>What’s great is that it understands the structure of your codebase and follows the same coding style as the other files.</p> <h3>Generating Tests</h3> <p>Another handy use case is generating tests. In this example, I asked ChatGPT to create tests for all the methods in a class. The prompt I used was: <q>Create tests for all the public methods in this class.</q></p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/generate-tests.jpg" alt="ChatGPT test case generation example" width="1000" height="600"> </figure> <p>What I like is that the generated tests cover both <a rel="nofollow noopener" target="_blank" href="https://en.wikipedia.org/wiki/Happy_path">the “happy” and “unhappy” paths</a>, which makes them quite thorough.</p> <p>However, ChatGPT doesn’t yet support creating these tests in a separate file. That means you can’t just click the <strong>“Apply”</strong> button. You’ll need to copy the generated code and paste it into a new file yourself.</p> <h3>Writing Inline Docs</h3> <p>Another common utility is to generate inline documentation. In this example, I asked it to add inline documentation for the class and the method with the following prompt: <q>Generate inline docs for the methods within the class. Describe what each method is used for in as detailed as possible.</q></p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/generate-inline-docs.jpg" alt="ChatGPT inline documentation generation" width="1000" height="600"> </figure> <h3>Improve Code Readability</h3> <p>If you’re not sure whether your code is easy to read, you can ask ChatGPT to help make it clearer. In this example, I asked it to improve the readability of a piece of code. You can simply use a prompt like: <q>Make the code more readable.</q></p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/make-code-reable.jpg" alt="ChatGPT code readability improvements" width="1000" height="600"> </figure> <p><strong>Tip</strong>: Select the part of the code you want to improve before pressing <kbd>Option</kbd> + <kbd>Space</kbd>. This way, ChatGPT will focus only on the selected code instead of trying to update the whole file.</p> <h3>Find Potential Vulnerability</h3> <p>If you’re concerned about the security of your code, you can ask ChatGPT to review it for potential vulnerabilities. While it’s not a replacement for a full security audit, this can be a great first step to spot common issues like hardcoded secrets, unsafe function usage, or missing input validation or sanitization.</p> <p>Just select the code you want to analyze and use a prompt like: <q>Check this code for security issues.</q>.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/chatgpt-vscode-integration-guide/check-security.jpg" alt="ChatGPT code security analysis" width="1000" height="600"> </figure> <p>I find the suggestions are good and valid. Because it does not understand the full picture of the code, it does not offer to apply the code updates immediately as you need to consider if this is something that you really need to apply.</p> <h2>Wrapping Up</h2> <p>ChatGPT and VS Code make a great pair. While it might not be as tightly integrated or as powerful as <a rel="nofollow noopener" target="_blank" href="https://github.com/features/copilot">GitHub Copilot</a>, ChatGPT is still a helpful assistant. It’s a solid alternative, especially if you prefer an AI that’s less intrusive and only steps in when you ask for it.</p><p>The post <a href="https://www.hongkiat.com/blog/chatgpt-vscode-integration-guide/">How to Integrate ChatGPT With Visual Studio Code</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Coding Artificial Intelligence Thoriq Firdaus Hiding Secret Files in Images Using Steghide https://www.hongkiat.com/blog/hide-secret-files-in-images-using-steghide/ hongkiat.com urn:uuid:4e59d367-ad80-0b68-fb63-fb34a9641c73 Tue, 22 Apr 2025 10:00:43 +0000 <p>Ever wanted to hide sensitive information in plain sight? That’s exactly what steganography allows you to do. Unlike encryption, which makes data unreadable but obvious that something is hidden, steganography conceals the very existence of the secret data. Steghide is a powerful Linux tool that lets you embed any file into an image with minimal&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/hide-secret-files-in-images-using-steghide/">Hiding Secret Files in Images Using Steghide</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>Ever wanted to hide sensitive information in plain sight? That’s exactly what steganography allows you to do. Unlike encryption, which makes data unreadable but obvious that something is hidden, steganography conceals the very existence of the secret data.</p> <p><a rel="nofollow noopener" target="_blank" href="http://steghide.sourceforge.net/">Steghide</a> is a powerful Linux tool that lets you embed any file into an image with minimal visual changes to the original picture. This makes it perfect for securely transferring sensitive information or simply keeping private files hidden from casual observers, similar to how you might <a href="https://www.hongkiat.com/blog/password-protect-folder-mac/" target="_blank" rel="noopener noreferrer">password protect folders on Mac</a> for added security.</p> <figure><img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/hide-secret-files-in-images-using-steghide/hero.jpg" alt="Steghide hide files in images" width="1600" height="900"></figure> <p>While there are many legitimate uses for this technology-like watermarking, protecting intellectual property, or secure communication-it’s important to use these techniques responsibly and legally.</p> <hr> <h2 id="steganography-prerequisites">Prerequisites</h2> <p>Before we begin hiding files in images, you’ll need:</p> <ul> <li><strong>A Linux system</strong> with Steghide installed (install it using <code>sudo apt-get install steghide</code> on Debian/Ubuntu). For Mac users, follow the installation instructions at <a rel="nofollow noopener" target="_blank" href="https://github.com/glorelvalle/steghide-osx">steghide-osx</a>. Windows users can download the Windows binary from the <a rel="nofollow noopener" target="_blank" href="http://steghide.sourceforge.net/">Steghide website</a>.</li> <li><strong>A cover image</strong> – preferably a high-quality JPEG file with some visual complexity</li> <li><strong>A file to hide</strong> – this can be any type of file, though smaller files work better</li> </ul> <p>For this tutorial, I’ll be using:</p> <ul> <li>A <a rel="nofollow noopener" target="_blank" href="https://unsplash.com/photos/a-group-of-people-standing-on-top-of-a-beach-next-to-the-ocean-MfXLjDlUI4M">random image from Unsplash</a> as my cover image</li> <li>A CSV file I randomly created as the file to hide</li> </ul> <p>This setup mimics a realistic scenario where someone might want to securely transfer sensitive information without raising suspicion.</p> <hr> <h2 id="hide-files-guide">Step-by-Step Guide: Hiding Files</h2> <p>Follow these steps to hide your files in images:</p> <h3>1. Prepare Your Cover Image</h3> <p>First, you’ll need a suitable image to hide your data in. For this tutorial, I’m using a high-quality random image from Unsplash. The best cover images have:</p> <ul> <li>High resolution and quality</li> <li>Complex patterns or textures</li> <li>JPEG format (though Steghide supports other formats too)</li> </ul> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/hide-secret-files-in-images-using-steghide/random-image.jpg" alt="Steghide cover image example" width="1145" height="897"> </figure> <h3>2. Prepare the File to Hide</h3> <p>Next, you need the file you want to hide. In this example, I’m using a CSV file I randomly created containing sample data.</p> <p>When opened, this CSV file shows rows of data that would be valuable to protect. In a real-world scenario, this could be any sensitive information you need to transfer securely.</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/hide-secret-files-in-images-using-steghide/sample-csv.jpg" alt="Steghide CSV file example" width="2156" height="1174"> </figure> <h3>3. Use Steghide to Embed the File</h3> <p>Now for the actual hiding process. Open your terminal and use the following Steghide command:</p> <pre>steghide embed -cf example.jpg -ef sample_data.csv</pre> <p>Let’s break down this command:</p> <ul> <li><code>steghide embed</code> – Tells Steghide we want to hide a file</li> <li><code>-cf example.jpg</code> – Specifies our cover file (the image)</li> <li><code>-ef sample_data.csv</code> – Specifies the file we want to embed</li> </ul> <h3>4. Set a Secure Passphrase</h3> <p>After running the command, Steghide will prompt you to enter a passphrase. This password will be required later to extract the hidden file, so make sure it’s something secure that you’ll remember.</p> <p>For demonstration purposes, I used “password” as my passphrase, but in real-world scenarios, you should use a strong, unique password.</p> <p>Once you’ve entered and confirmed your passphrase, Steghide will process the files and create a new image with your data hidden inside. The output file will be named according to your cover file (in this case, it created “example.jpg” with the hidden data).</p> <hr> <h2 id="verify-steganography">Verifying the Steganography</h2> <p>After hiding your files, you’ll want to verify the process:</p> <h3>1. Visual Comparison</h3> <p>When comparing the original image with the modified one containing our hidden data, there should be no visible differences to the naked eye. If you quickly switch between the two images, they should appear identical.</p> <p>This is the beauty of steganography – the changes made to accommodate the hidden data are so subtle that they’re practically invisible without specialized analysis tools.</p> <h3>2. File Size Considerations</h3> <p>One thing to note is that the modified image will typically have a slightly larger file size than the original. This increase depends on the size of the hidden file, but Steghide is quite efficient at minimizing this difference.</p> <p>For sensitive operations, be aware that file size differences could potentially tip off very observant individuals that something has been modified.</p> <hr> <h2 id="extract-hidden-files">Extracting Hidden Files</h2> <p>To retrieve your hidden files, follow these steps:</p> <h3>1. Using the Steghide Extract Command</h3> <p>To extract the hidden file, use the following command in your terminal:</p> <pre>steghide extract -sf example.jpg</pre> <p>Breaking down this command:</p> <ul> <li><code>steghide extract</code> – Tells Steghide we want to extract a hidden file</li> <li><code>-sf example.jpg</code> – Specifies the steganographic file (the image containing hidden data)</li> </ul> <h3>2. Entering the Passphrase</h3> <p>After running the command, Steghide will prompt you for the passphrase you set earlier. Enter it correctly, and Steghide will extract the hidden file to your current directory.</p> <h3>3. Verifying the Extracted File</h3> <p>Once extraction is complete, you should find your original file (in our case, the CSV file) in your directory. Open it to verify that all the data is intact and matches the original file you embedded.</p> <p>In our example, we can confirm that all the fake social security numbers and credit card numbers from our original CSV file have been perfectly preserved in the extracted file.</p> <hr> <h2 id="steganography-security">Security Considerations</h2> <p>Keep these security aspects in mind:</p> <h3>Importance of Strong Passphrases</h3> <p>The security of your hidden data relies heavily on your passphrase. A weak passphrase like “password” (used in our demo) could be easily guessed, compromising your hidden data.</p> <p>For real security needs, use a strong, unique passphrase that includes a mix of uppercase and lowercase letters, numbers, and special characters.</p> <h3>Limitations and Best Practices</h3> <p>While Steghide is a powerful tool, it’s important to understand its limitations:</p> <ul> <li><strong>File size ratio</strong> – The file you’re hiding should be significantly smaller than the cover image</li> <li><strong>Format limitations</strong> – Steghide works best with <code>JPEG</code>, <code>BMP</code>, <code>WAV</code>, and <code>AU</code> files</li> <li><strong>Steganalysis tools</strong> – Advanced forensic tools can sometimes detect steganography</li> </ul> <p>For maximum security:</p> <ul> <li>Consider encrypting your sensitive file before hiding it</li> <li>Use high-quality, complex images as your cover files</li> <li>Avoid reusing the same cover image multiple times</li> <li>Be mindful of metadata in your files</li> </ul> <hr> <h2>Conclusion</h2> <p>Steghide offers a fascinating and practical way to hide sensitive information within ordinary-looking image files. By following the steps in this tutorial, you can securely embed any file into an image and later extract it with the correct passphrase.</p> <p>This technique provides an additional layer of security beyond encryption alone, as it conceals the very existence of the secret data. While someone might demand you decrypt an encrypted file, they won’t even know to ask about data hidden through steganography.</p> <p>Remember to use this technology responsibly and legally. Steganography has legitimate uses in privacy protection, secure communication, and digital watermarking, but like any powerful tool, it should be used ethically.</p><p>The post <a href="https://www.hongkiat.com/blog/hide-secret-files-in-images-using-steghide/">Hiding Secret Files in Images Using Steghide</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Desktop Hongkiat.com Fresh Resources for Web Designers and Developers (April 2025) https://www.hongkiat.com/blog/designers-developers-monthly-04-2025/ hongkiat.com urn:uuid:0bc0c65c-e7fe-e73d-82ea-c9bc4a139278 Mon, 21 Apr 2025 13:00:08 +0000 <p>We are back with another collection of fresh resources for our fellow web developers. This month, we have a variety of tools, frameworks, and libraries that can help you in your web development projects. From CSS frameworks to JavaScript libraries, I’m sure there’s something for everyone. So, without further ado, let’s dive into the list.&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/designers-developers-monthly-04-2025/">Fresh Resources for Web Designers and Developers (April 2025)</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>We are back with another collection of fresh resources for our fellow web developers. This month, we have a variety of tools, frameworks, and libraries that can help you in your web development projects.</p> <p>From <a href="https://www.hongkiat.com/blog/tag/css-framework/">CSS frameworks</a> to <a href="https://www.hongkiat.com/blog/javascript-framework-to-know/">JavaScript libraries</a>, I’m sure there’s something for everyone. So, without further ado, let’s dive into the list.</p> <div class="ref-block ref-block--tax noLinks" id="ref-block-tax-73785-1"> <a href="https://www.hongkiat.com/blog/tag/fresh-resources-developers/" target="_blank" class="ref-block__link" title="Read More: Click Here for More Resources" rel="bookmark"><span class="screen-reader-text">Click Here for More Resources</span></a> <div class="ref-block__thumbnail img-thumb img-thumb--jumbo" data-img='{ "src" : "https://assets.hongkiat.com/uploads/thumbs/related/tag-fresh-resources-developers.jpg" }'> <noscript> <style>.no-js #ref-block-tax-73785-1 .ref-block__thumbnail { background-image: url( "https://assets.hongkiat.com/uploads/thumbs/related/tag-fresh-resources-developers.jpg" ); }</style> <p> </p></noscript> </div> <div class="ref-block__summary"> <h4 class="ref-title">Click Here for More Resources</h4> <div class="ref-description"> <p>Check out our complete collection of hand-picked tools for designers and developers.</p> </div></div> </div> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://firebase.studio">Firebase Studio</a></h2> <p><strong>Firebase Studio</strong> is an IDE from Google that allows you to build and test full-stack apps right from your browser. It’s great for fast prototyping, with Gemini built-in to help write and debug code.</p> <p>You can start from templates, import your projects, or even create apps just by describing what you want.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/firebase-studio.jpg" alt="Firebase Studio IDE interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/vapor/vapor">Vapor</a></h2> <p>Vapor is a web framework written in <a rel="nofollow noopener" target="_blank" href="https://www.swift.org/">Swift</a>. It can help you build websites, APIs, and real-time apps using clean and modern code.</p> <p>It supports features like fast, async operations, user login systems, database connections, real-time updates with WebSockets, and even HTML templates.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/vapor.jpg" alt="Vapor Swift web framework" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/punkpeye/awesome-mcp-servers">Awesome MCP Servers</a></h2> <p>A handpicked list of awesome tools that support <strong>Model Context Protocol (MCP)</strong>. You can find various types of MCP, from browser automation and cloud platforms to gaming, security, customer support, and more.</p> <p>If you’re building smart apps or connecting AI to real-world data and services, this list is a great starting point.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/awesome-mcp-servers.jpg" alt="Model Context Protocol tools list" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/microsoft/playwright-mcp">Playwright MCP</a></h2> <p>An official MCP for <strong>Playwright</strong> that enables LLM and AI apps, like chatbots, to interact with browsers. Instead of using screenshots or visual tricks, it works with the website’s actual structure so it can click buttons, fill out forms, or grab data more accurately.</p> <p>It’s great for automating web tasks, running tests, or powering AI agents that need to browse the web.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/playwright-mcp.jpg" alt="Playwright browser automation interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/liveblocks/frimousse">Frimousse</a></h2> <p><strong>Frimousse</strong> is a lightweight, open-source emoji picker built for React apps. It’s fully unstyled and highly customizable, so you can style it however you like with tools like <a rel="nofollow noopener" target="_blank" href="https://tailwindcss.com/">Tailwind</a> or <a rel="nofollow noopener" target="_blank" href="https://cssinjs.org/">CSS-in-JS</a>.</p> <p>It only loads emoji data when needed, making it fast and efficient, and uses a modular design so you can build a custom picker that fits perfectly into your UI.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/frimousse.jpg" alt="Frimousse emoji picker demo" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/alfonsusac/check-site-meta">Check Site Meta</a></h2> <p><strong>check-site-meta</strong> is a command-line tool that allows you to preview website metadata, like <a rel="nofollow noopener" target="_blank" href="https://ogp.me">OpenGraph</a> and <a rel="nofollow noopener" target="_blank" href="https://developer.x.com/en/docs/x-for-websites/cards/overview/abouts-cards">Twitter cards</a>, without deploying your site.</p> <p>It works with any URL, including localhost, and supports preview formats for platforms like X, Discord, Google, and Facebook. It also handles CORS and caching issues, so you can always get accurate results.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/npx-check-site-meta.jpg" alt="Website metadata preview tool" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/camel-ai/owl">OWL</a></h2> <p><strong>OWL</strong> is an open-source framework that allows multiple AI agents to collaborate on different tasks such as web browsing, coding, and content analysis.</p> <p>It supports real-time search, handles text, images, and audio, and includes tools for PDFs, research papers, and weather data. It’s an overall great tool for building smart, automated systems.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/owl.jpg" alt="OWL AI framework interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://phpacker.dev">PHPacker</a></h2> <p><strong>PHPacker</strong> is a handy tool that allows you to turn your PHP scripts or <a rel="nofollow noopener" target="_blank" href="https://www.php.net/manual/en/book.phar.php">PHAR files</a> into one standalone file that works on Windows, macOS, or Linux.</p> <p>It bundles your code with the PHP runtime, so users don’t need to install PHP to run your app. You can even choose which PHP version to use or add custom extensions.</p> <p>It’s perfect for making and sharing PHP CLI apps easily across different systems.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/phpacker.jpg" alt="PHPacker packaging tool interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://wp.com/ai">WordPress.com AI</a></h2> <p><strong>WordPress.com</strong> now offers a free <a href="https://www.hongkiat.com/blog/website-and-page-building-tools/">AI website builder</a> that allows you to create a website by chatting with AI. Just tell it what kind of site you want, like for a coffee shop or personal blog, and it will build it for you with text, images, and layout.</p> <p>You can also edit the site manually or ask the AI to make changes. It’s a perfect tool for small business owners, freelancers, or anyone who wants a quick and easy way to get online.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/wp-ao.jpg" alt="WordPress AI website builder" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://agents.cloudflare.com/">Cloudflare Agents</a></h2> <p><strong>Cloudflare Agents</strong> allows you to build smart <a href="https://www.hongkiat.com/blog/ai-agents-101/">AI agents</a> that run at the edge, interact in real time, remember context, browse the web, and connect to various AI models.</p> <p>Using the SDK, you can then deploy it on <a rel="nofollow noopener" target="_blank" href="https://workers.cloudflare.com">Cloudflare Workers</a> and link them to external services with built-in auth and transport.</p> <p>It’s a great way to create powerful, real-time AI applications that can handle complex tasks and workflows.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/cloudflare-agents.jpg" alt="Cloudflare AI agents dashboard" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://fumadocs.vercel.app">Fumadocs</a></h2> <p><strong>Fumadocs</strong> is a documentation framework built on <a rel="nofollow noopener" target="_blank" href="https://nextjs.org/">Next.js</a>. It supports Markdown, MDX, React components, and includes customizable UI components out of the box.</p> <p>With tools like UI, CLI, and support for various content sources, it’s easy to set up and tailor to your project’s needs. It’s a great choice if you’re looking to create documentation quickly and efficiently.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/fumadocs.jpg" alt="Fumadocs documentation interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/idosal/git-mcp">Git MCP</a></h2> <p><strong>Git MCP</strong> makes GitHub projects easier for AI to understand by turning public repos into accessible endpoints, for example <code>gitmcp.io/owner/repo</code>.</p> <p>It supports semantic search, prioritizes key files like <code>llms.txt</code> and <code>README.md</code>, and only uses public data. It’s a simple way to connect AI with GitHub docs.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/git-mcp.jpg" alt="Git MCP repository interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/sxyazi/yazi">Yazi</a></h2> <p><strong>Yazi</strong> is a fast, cross-platform terminal file manager written in Rust with async I/O for smooth performance.</p> <p>It supports image and file previews, syntax highlighting, batch operations, and deep CLI tool integration like <a rel="nofollow noopener" target="_blank" href="https://github.com/sharkdp/fd">fd</a>, rg, <a rel="nofollow noopener" target="_blank" href="https://github.com/junegunn/fzf">fzf</a>, and more.</p> <p>It’s highly customizable with themes, layouts, and Vim-like controls.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/yazi.jpg" alt="Yazi terminal file manager" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/exelban/stats">Stats</a></h2> <p><strong>Stats</strong> is a free, open-source macOS app that shows real-time system info like CPU, GPU, memory, disk, network, battery, sensors, and more, right in the menu bar.</p> <p>It’s easy to use, highly customizable, and works with macOS Catalina and up.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/macstats.jpg" alt="macOS system monitor app" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp">Cursor Talk to Figma MCP</a></h2> <p><strong>Cursor Talk to Figma MCP</strong> is a project that connects Cursor AI to <a rel="nofollow noopener" target="_blank" href="https://www.figma.com">Figma</a> using the Model Context Protocol (MCP).</p> <p>It allows AI to read and update Figma designs in real time through an MCP server, a WebSocket server, and a Figma plugin. With this setup, AI can create and style elements, manage layouts, and even run code directly in Figma.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/cursor-talk-to-figma.jpg" alt="Cursor Figma integration demo" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/solidtime-io/solidtime">Solidtime</a></h2> <p><strong>Solidtime</strong> is a free, open-source <a href="https://www.hongkiat.com/blog/time-saving-apps-freelancers/">time tracker for freelancers</a> and agencies. It allows you to track hours, manage projects, tasks, clients, and billable rates, all in one place.</p> <p>Built with <a rel="nofollow noopener" target="_blank" href="https://laravel.com/">Laravel</a> and <a rel="nofollow noopener" target="_blank" href="https://vuejs.org/">Vue.js</a>, it works on the web and has a desktop app for Windows, macOS, and Linux.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/solidtime.jpg" alt="Solidtime time tracking dashboard" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/browserable/browserable">Browserable</a></h2> <p><strong>Browserable</strong> is an open-source browser automation tool for AI agents. It helps them browse websites, fill forms, click buttons, and extract data.</p> <p>The tool includes a JavaScript SDK and supports custom setups with various LLMs, storage options, and browser configs. It’s a great way to build smart agents that can interact with the web.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/browserable.jpg" alt="Browserable automation interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/payloadcms/payload">PayloadCMS</a></h2> <p><strong>PayloadCMS</strong> is a modern, headless CMS built for developers. It offers a code-first setup, full API access, and a customizable admin panel.</p> <p>It supports MongoDB, self-hosting, and serverless deployment, giving you full control over content and structure. It’s an ideal solution for building custom content-driven applications.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/payload.jpg" alt="PayloadCMS admin interface" width="1000" height="600"> </figure> <hr> <h2><a rel="nofollow noopener" target="_blank" href="https://github.com/lukeautry/tsoa">tsoa</a></h2> <p><strong>tsoa</strong> is a TypeScript framework for building REST APIs that automatically generates <a rel="nofollow noopener" target="_blank" href="https://www.openapis.org">OpenAPI</a> docs.</p> <p>It works with <a rel="nofollow noopener" target="_blank" href="https://expressjs.com/">Express</a>, <a rel="nofollow noopener" target="_blank" href="https://koajs.com/">Koa</a>, and <a rel="nofollow noopener" target="_blank" href="https://hapi.dev/">Hapi</a>, and uses TypeScript decorators to create type-safe APIs with minimal boilerplate.</p> <p>It also handles input validation at runtime and turns your TypeScript code into OpenAPI 2.0 or 3.0 specs, making API development smoother and more consistent.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-04-2025/tsoa.jpg" alt="tsoa API documentation" width="1000" height="600"> </figure><p>The post <a href="https://www.hongkiat.com/blog/designers-developers-monthly-04-2025/">Fresh Resources for Web Designers and Developers (April 2025)</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Web Design Tools for Designers & Developers Thoriq Firdaus 10 Best iOS Apps to Create and Edit GIFs https://www.hongkiat.com/blog/gif-makers-editors-ios/ hongkiat.com urn:uuid:ef12efdf-289a-f963-39e5-6da7491ef5e6 Fri, 18 Apr 2025 10:00:41 +0000 <p>GIF animations are small compressed files of looping fun that is, more often than not, used for memes. While you can create GIFs straight from a browser (here’s how you can easily create GIFs in Chrome using the Chrome Capture extension) or through online GIF creation tools, these days we prefer to have tools that&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/gif-makers-editors-ios/">10 Best iOS Apps to Create and Edit GIFs</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>GIF animations are small compressed files of looping fun that is, more often than not, used for memes. While you can create GIFs straight from a browser (here’s how you can <a href="https://www.hongkiat.com/blog/create-gifs-from-chrome-makegif/" title="Create GIFs Directly in Chrome">easily create GIFs in Chrome</a> using the Chrome Capture extension) or through <a href="https://www.hongkiat.com/blog/websites-to-create-animated-gifs/" title="Best Websites to Create Animated GIFs">online GIF creation tools</a>, these days we <strong>prefer to have tools that can make or edit GIFs of our personal photos or videos</strong>.</p> <p>If you are part of this group, you’re in luck cause we have the iOS mobile apps to help you <strong>make, edit and share GIFs right from your iPhone</strong>.</p> <p>These are the apps that can help you create GIFs easily and quickly — either from live shoots or photos/videos already in your gallery — as well as share them with your friends and family via social networks, messaging apps or via URL.</p> <div class="ref-block ref-block--post" id="ref-post-1"> <a href="https://www.hongkiat.com/blog/cinemagraph/" class="ref-block__link" title="Read More: Cinemagraph: 28 Still Photos With Subtle Motion" rel="bookmark"><span class="screen-reader-text">Cinemagraph: 28 Still Photos With Subtle Motion</span></a> <div class="ref-block__thumbnail img-thumb img-thumb--jumbo" data-img='{ "src" : "https://assets.hongkiat.com/uploads/thumbs/250x160/cinemagraph.jpg" }'> <noscript> <style>.no-js #ref-block-post-10026 .ref-block__thumbnail { background-image: url("https://assets.hongkiat.com/uploads/thumbs/250x160/cinemagraph.jpg"); }</style> </noscript> </div> <div class="ref-block__summary"> <h4 class="ref-title">Cinemagraph: 28 Still Photos With Subtle Motion</h4> <p class="ref-description"> So today, we're going to showcase animated GIF artwork, but there is no regular GIF we use on... <span>Read more</span></p> </div> </div> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gifsart-gif-maker/id1063953163">GifsArt</a></h2> <p>This is a powerful and comprehensive animated GIF generator made by Apple Inc. This application helps you capture images and videos with the in-app camera and then lets you <strong>combine images, video, and GIFs into one perfect animation</strong>. Without leaving the application, you can customize your GIF by using <strong>animated masks, effects, stickers, and text</strong>.</p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gifsart-gif-maker/id1063953163"><img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/gifsart.jpg" alt="GifsArt" width="784" height="696"></a></figure> <p>Animated masks and stickers are imported through <strong>Giply</strong>. Users can also export different <strong>filters, effects, text and captions</strong> to their PicArt Gallery. One very good thing about this application is that users <strong>will not be bothered by a watermark</strong>.</p> <h2><a rel="nofollow noopener" target="_blank" href="http://hipgif.com/">HipGif</a></h2> <p>With <strong>HipGif</strong>, you can choose many kinds of animated stickers to add to your GIF file. These stickers and popular GIFs can be <strong>mixed with your own</strong>, and the pile is <strong>updated multiple times a day</strong>. Speed up, slow down, draw on your GIFs, add a filter, text or frame to any of your GIF and <strong>share them on Instagram</strong> as a video.</p> <figure><a rel="nofollow noopener" target="_blank" href="http://hipgif.com/"><img decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/hipgif.jpg" alt="HipGif" width="784" height="696"></a></figure> <p>You can <strong>snap multiple photos</strong>, or use any of the<strong> meme background templates available</strong>. The app is also great for making photo slideshows, but best of all, you can share easily to Facebook, Messenger, Twitter, WhatsApp, and even via SMS.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gifo-best-gif-maker/id1020210826">Gifo</a></h2> <p>Share animated GIFS, memes, and reactions through Gifo with your iPhone or iPad camera. It makes it easy for you to <strong>make stunning animated collages</strong>, to <strong>speed up or slow down GIFs</strong> as what you want. Furthermore, you can make 4 GIFs in one go. It also comes with <strong>cool filters, frames, colorful text and font</strong>s that you can add to your GIFs.</p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gifo-best-gif-camera/id1020210826"><img decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/gifo.jpg" alt="Gifo" width="784" height="696"></a></figure> <p>Your Gifo results <strong>can be copied</strong> without saving it first into the camera roll. Just <strong>directly paste it into any application</strong> you want to share it to. If you do want to save it into the camera roll, you can, in GIF form or as a video file.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/app/lively-export-live-photo-to-gif-and-movie/id1049711205">Lively</a></h2> <p>If you’re looking for a quick and easy way to <strong>trim</strong>, <strong>play backwards</strong>, have <strong>speed control</strong> and <strong>export your captured videos to GIF format</strong>, Lively can do all that and more. The catch is your exported GIFs will carry their watermark, which you can remove with a one-time purchase.</p> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/lively.jpg" alt="lively" width="784" height="696"></figure> <p>Lively <strong>works with an iPhone 6S/6S Plus</strong>. The app comes with <strong>3D Touch support</strong>. Its extensive editing features not only give you full control of what to show and not to show others but also lets you <strong>shrink the size of your GIF files,</strong> pick a single frame from a full video, and share to iMessage, Facebook Messenger, Twitter, Slack, Tumblr and many more.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/app/id1054906533?_branch_match_id=262049759490609108">Slowmographer</a></h2> <p>Slowmographer is aimed to mix the best feature of <strong>mobile photography and video making</strong>. Instead of a photo or regular video, Slowmographer helps you create <strong>3-second loops of slowed-down videos</strong>. It doesn’t seem like a cool thing to shout about until you figure out its use in capturing tricks and more.<strong>sports like mountain biking, skateboarding, surfing, skiing</strong></p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/app/id1054906533?_branch_match_id=262049759490609108"><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/slowmographer.jpg" alt="slowmographer" width="784" height="696"></a></figure> <p>Not only is the video-taking easy, with this app, you can also <strong>add image filters, transition effects, remove flickering effects </strong>, which are a pain in slow motion shots, and easily share them on your favorite social network sites. Here are some examples on <a rel="nofollow noopener" target="_blank" href="https://www.instagram.com/explore/tags/everydayslowmo/">Instagram</a>.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/video-to-gif-gif-maker-gif/id1065396853">Video to GIF</a></h2> <p>Everything you can do with GIF, you can do with this app. <strong>Shoot in GIF</strong>, <strong>convert</strong> your own videos or YouTube videos to GIF, <strong>turn photos into GIF</strong> and <strong>add animated text or effects</strong> to it, all with this handy GIF-making tool.</p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/video-to-gif-gif-maker-gif/id1065396853"><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/videotogif.jpg" alt="Video to GIF" width="784" height="696"></a></figure> <p>The app also lets you add animated text, save GIFs as a video or share it to your favorite social networks. You can also <strong>get a URL for your GIF</strong>, to share with others. If you need a quick and easy way to make GIFs, you will find it.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/imgplay-photos-burst-video/id989843523">ImgPlay</a></h2> <p><strong>ImgPlay</strong> brings to you who love to shoot in different modes – burst photos, iOS Live Photo or normal mode – as this app can turn your shots into GIF. You can edit your GIF before publishing it, by adding captions, editing <strong>frame sector/order</strong>, <strong>control speed/direction</strong> (forward, in reverse), and loop count.</p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/imgplay-photos-burst-video/id989843523"><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/ImgPlay.jpg" alt="IMGPlay" width="784" height="696"></a></figure> <p>In the end, you can <strong>export your creation into several GIF quality </strong>levels, or you can also <strong>export it into video</strong> to share easily on multiple social networks and messaging apps.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/giflab-gif-maker-editor-create/id975415947">GifLab</a></h2> <p><strong>GifLab</strong> allows to to create GIFs on your iOS device with plenty of customization options. The app makes it <strong>easy to trim, adjust quality and speed, add text with dozens of nice fontfaces</strong>, and beautify images with its range of <strong>filters</strong>. If you are a huge fan of Instagram, then GifLab can export GIFs into videos that are upload-ready.</p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/giflab-gif-maker-editor-create/id975415947"><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/giflab.jpg" alt="GifLab" width="784" height="696"></a></figure> <p>The GIFs can also be shared on social network sites, via messaging apps or group chats, and <strong>via URL</strong>. Previously a free app, now the app costs $1.99 to own. <strong>Watermarks and locks on filters and fonts have been removed</strong>.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gif-toaster-convert-photo/id948064297">GIF Toaster</a></h2> <p><strong>GIF Toaster</strong> is handy app to convert photos or video into animated GIF. It works for both iPad and iPhone. Just select the photo or video you want to convert to GIF, then <strong>set encoding options</strong> such as range (which part of the video), playback speeds, number of frames per second, size of video, then click <em>Start Encoding</em>.</p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gif-toaster-convert-photo/id948064297"><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/gif-toaster.jpg" alt="GIF Toaster" width="784" height="696"></a></figure> <p>The app can <strong>convert GIF to video, photo, live photo or to new GIF</strong>. It can also do all that in <strong>batch mode</strong> (doing multiple at the same time). You can also share the resulting GIF via URL.</p> <h2><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gif-maker-make-video-to-gifs/id1215606098">GIF Maker</a></h2> <p><strong>GIF Maker</strong> allows you to shoot your moments and save them in animated GIF format. You can create GIFs from your video shots from as short as <strong>5 seconds to a maximum of 25 seconds</strong>. Alternatively, one can choose to take a minimum of <strong>10 photos to a maximum of 50 photos</strong> to turn into GIFs.</p> <figure><a rel="nofollow noopener" target="_blank" href="https://apps.apple.com/us/app/gif-maker-make-video-to-gifs/id1215606098"><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/gif-makers-editors-ios/gifmaker.jpg" alt="GIF maker" width="640" height="568"></a></figure> <p>Users can also create <strong>GIFS from pre-existing photos or videos</strong> in their camera gallery. The app also includes some effects that make your GIF look <strong>funny, bizarre or scary</strong> plus other cool effects.</p><p>The post <a href="https://www.hongkiat.com/blog/gif-makers-editors-ios/">10 Best iOS Apps to Create and Edit GIFs</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Mobile Animated GIFs GIF iOS Mobile Apps Agus How to Fix Epson Printer Communication Error on Mac https://www.hongkiat.com/blog/epson-mac-communication-error-fix/ hongkiat.com urn:uuid:b4790523-4816-99b2-2409-87b8d9309837 Thu, 17 Apr 2025 13:00:37 +0000 <p>Recently, my Epson printer suddenly stopped working with a frustrating Epson printer communication error. Everything was fine until I tried printing – the printer would attempt to connect but then display a Communication Error message on my Mac. What made this particularly puzzling was that the printer appeared to be properly connected – there was&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/epson-mac-communication-error-fix/">How to Fix Epson Printer Communication Error on Mac</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>Recently, my Epson printer suddenly stopped working with a frustrating Epson <em>printer communication</em> error. Everything was fine until I tried printing – the printer would attempt to connect but then display a <strong>Communication Error</strong> message on my Mac.</p> <p>What made this particularly puzzling was that the printer appeared to be properly connected – there was even a green status light showing in the Mac’s Printers & Scanners settings page.</p> <figure><img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/epson-mac-communication-error-fix/connected-on-printers-scanners.jpg" alt="Epson printer showing connected status in Mac Printers & Scanners settings" width="1000" height="430"></figure> <p>When I ran a test print page, it worked perfectly fine.</p> <figure><img decoding="async" src="https://assets.hongkiat.com/uploads/epson-mac-communication-error-fix/print-test-page-works.jpg" alt="Successful test page print from Epson printer" width="1000" height="413"></figure> <p>The Epson Printer Utility also showed that the printer was connected properly.</p> <figure><img decoding="async" src="https://assets.hongkiat.com/uploads/epson-mac-communication-error-fix/epson-printer-utility.jpg" alt="Epson Printer Utility showing proper connection status"></figure> <p>The issue specifically occurred when trying to print from applications like Notes, Pages, or Chrome. The Epson printer would attempt to connect but then display an Epson printer communication error message in the end.</p> <figure><img decoding="async" src="https://assets.hongkiat.com/uploads/epson-mac-communication-error-fix/epson-printer-communication-error.jpg" alt="Epson printer communication error message displayed on Mac when attempting to print from applications" width="1000" height="396"></figure> <p>In this article, I’ll walk you through my troubleshooting journey and share what I’ve done to try resolving this frustrating problem. We’ll explore the potential causes of the Epson printer communication error and, most importantly, how to fix each of them.</p> <hr> <h2 id="what-causes-the-epson-printer-communication-error">What Causes the Epson Printer Communication Error?</h2> <p>When your Epson printer displays a communication error, it means your Mac has trouble communicating with the Epson printer and cannot send files to print. Here are the common causes of Epson printer communication errors:</p> <ul> <li><strong>Outdated or missing printer drivers</strong> – macOS updates sometimes break compatibility with older drivers.</li> <li><strong>Wi-Fi or USB connection issues</strong> – the printer might be connected to a different network or the cable might be loose.</li> <li><strong>macOS printer settings glitch</strong> – sometimes settings just get corrupted and need to be reset.</li> <li><strong>Firewall or security software blocking communication</strong> – rare but possible if your firewall is strict.</li> <li><strong>Printer unable to access local area network</strong> – this was the cause of my problem.</li> </ul> <p>Now that we’ve covered the “why,” let’s move on to the actual fixes that worked for me (and should work for you too).</p> <hr> <h2 id="quick-checks-before-you-start">Quick Checks Before You Start</h2> <p>Before getting into the more involved fixes, there are a few quick things you should check. These might sound obvious, but trust me – I’ve skipped them before and wasted time troubleshooting something that just needed a simple reboot.</p> <ol> <li><strong>Restart both your Mac and the printer</strong>. This clears out temporary glitches and often fixes the connection.</li> <li><strong>Check all cable connections</strong> if you’re using USB. Make sure they’re snug and try a different port if needed.</li> <li><strong>Make sure the printer and Mac are on the same Wi-Fi network</strong>. if printers are connected via wifi, make sure both copmputer and ptinert are on the same network,.</li> <li><strong>Confirm the printer is powered on</strong> and not showing any errors on its screen (like paper jams or low ink).</li> <li><strong>Try printing a test page</strong> from the printer’s control panel to rule out hardware issues.</li> </ol> <p>If everything here checks out and it’s still not working, don’t worry – let’s get into the real fixes next.</p> <hr> <h2 id="reset-the-printing-system-for-epson-printer-on-mac">Fix #1 – Reset the Printing System for Epson Printer on Mac</h2> <p>This was the first thing I tried, though it didn’t work for me, but it may work for you. Resetting the printing system essentially wipes all printer settings and gives you a fresh start.</p> <p><strong>Here’s how to do it:</strong></p> <ol> <li>Go to <strong>System Settings</strong> (or <strong>System Preferences</strong> on older macOS versions).</li> <li>Select <strong>Printers & Scanners</strong>.</li> <li>Press <kbd>Control</kbd> + click (or right-click) in the list of printers on the left side.</li> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/epson-mac-communication-error-fix/reset-printer-settings.jpg" alt="Reset printing system option in Mac Printers & Scanners settings" width="1000" height="444"></figure> <li>Choose <strong>Reset printing system…</strong></li> <li>Click <strong>Reset</strong> to confirm.</li> <li>Once it resets, click the <strong>+</strong> button to re-add your Epson printer.</li> </ol> <p><strong>Heads-up:</strong> This will remove all printers you’ve added. You’ll need to re-add any other printers you use as well.</p> <p>If this doesn’t work for you, try the next solution.</p> <hr> <h2 id="reinstall-your-epson-printer-driver">Fix #2 – Reinstall Your Epson Printer Driver</h2> <p>If resetting didn’t do the trick, it might be a driver issue. Try reinstalling the Epson printer’s driver.</p> <p><strong>Here’s what I did:</strong></p> <ol> <li>Go to the <a href="https://www.epson.com/Support/Printers" rel="nofollow noopener" target="_blank">Epson Support site</a>.</li> <li>Enter your printer model and download the latest driver for macOS.</li> <li>On your Mac, open the <strong>Applications</strong> folder and look for any Epson software. If you see Epson Printer Utility or Epson Scan, uninstall them.</li> <li>Run the installer you just downloaded and follow the prompts to reinstall the driver.</li> <li>Once installed, go back to <strong>Printers & Scanners</strong> and add your Epson printer again using the <strong>+</strong> button.</li> </ol> <p>Make sure when you re-add the printer, under the <strong>“Use”</strong> dropdown, it says something like <strong>Epson [Model] Series</strong> – not “AirPrint.” (Assuming your Epson model supports AirPrint.) If it says “AirPrint,” you’re not using the full driver, and that can cause problems.</p> <p>After reinstalling, try printing a test page.</p> <hr> <h2 id="verify-epson-printer-settings-on-mac">Fix #3 – Verify Epson Printer Settings on Mac</h2> <p>If the driver’s installed and it still won’t print, your Mac might be using the wrong settings. Sometimes settings can get unintentionally changed, so this is worth checking.</p> <p><strong>Check these settings:</strong></p> <ol> <li>Open <strong>System Settings > Printers & Scanners</strong>.</li> <li>Select your Epson printer from the list.</li> <li>Click <strong>Options & Supplies</strong>.</li> <li>Go to the <strong>Utility</strong> tab and click <strong>Open Printer Utility</strong>.</li> <li>Check for any error messages or connection warnings.</li> </ol> <p>Now go back to the main printer list:</p> <ul> <li>If you see multiple Epson printers, remove the ones you’re not using – especially if one says “Idle” or “Offline.”</li> <li>Make sure the correct driver is being used. Under the printer name, it should say something like <strong>“Epson [Model] Series”</strong> and not just “Generic PostScript Printer.”</li> </ul> <hr> <h2 id="reset-network-connection-wi-fi-models">Fix #4 – Reset Network Connection (Wi-Fi Models)</h2> <p>If you’re using a wireless Epson printer and getting the communication error, there’s a good chance it’s a network problem.</p> <p><strong>Reset the network settings on the printer:</strong></p> <ol> <li>On the printer’s screen, go to <strong>Setup</strong> or <strong>Settings</strong>.</li> <li>Navigate to <strong>Network Settings</strong>.</li> <li>Select <strong>Reset Network Settings</strong> or <strong>Restore Default Network Settings</strong>.</li> <li>After it resets, go back and select <strong>Wi-Fi Setup</strong>.</li> <li>Choose your Wi-Fi network and enter the password.</li> </ol> <p><strong>Then, on your Mac:</strong></p> <ol> <li>Go to <strong>Printers & Scanners</strong>.</li> <li>Remove the Epson printer if it’s already added.</li> <li>Click the <strong>+</strong> button to re-add it. Make sure the one you pick says “Bonjour” or “Epson [Model] Series.”</li> </ol> <p>If you’re using a USB connection instead of Wi-Fi, try a different USB cable or port. That’s solved things for me before when I thought the printer was broken.</p> <p>Once the printer is back on the right network, try a test print to see if it’s working.</p> <hr> <h2 id="allow-printer-to-access-local-network">Fix #5 – Allow Printer to Access Local Network</h2> <p>And here we are – the fifth fix and the culprit that caused my printer to give that communication error message.</p> <p>If your Epson printer is connected via Wi-Fi (like mine) but can’t communicate with your Mac, it’s likely blocked from accessing the local network. This typically happens if you accidentally clicked “Do not allow” when prompted about network access.</p> <p><strong>To check and fix network permissions:</strong></p> <ol> <li>Open <strong>System Settings</strong> on your Mac</li> <li>Go to <strong>Privacy & Security</strong></li> <li>Scroll down and select <strong>Local Network</strong></li> <li>Look for any applications starting with “Epson” in the list</li> <li>Make sure the toggle switch is turned on for all Epson applications</li> </ol> <p>After enabling access, try printing again to see if the communication error is resolved.</p> <figure><img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/epson-mac-communication-error-fix/local-network.jpg" alt="Mac Local Network settings for Epson printer permissions" width="1000" height="488"></figure> <hr> <h2>When to Contact Epson Printer Support</h2> <p>If you’ve tried all these fixes and your Epson printer communication error persists, you may need professional help. I researched through printer forums and Reddit for additional Epson printer solutions, though they didn’t resolve my specific issue.</p><p>The post <a href="https://www.hongkiat.com/blog/epson-mac-communication-error-fix/">How to Fix Epson Printer Communication Error on Mac</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Desktop Hongkiat Lim Fresh Resources for Web Designers and Developers (March 2025) https://www.hongkiat.com/blog/designers-developers-monthly-03-2025/ hongkiat.com urn:uuid:764abcc9-b35f-b3ba-d1b2-d9e839b64475 Mon, 31 Mar 2025 09:58:33 +0000 <p>It’s time for our monthly roundup! We’ve got a collection of the best new web development tools, resources, and frameworks for our fellow web developers. This month, we’ve got quite a handful of AI-powered tools, everything from open-source AI platforms to chat UIs and AI-powered browsers. So, without further ado, let’s get started! Lynx.js Lynx.js&#8230;</p> <p>The post <a href="https://www.hongkiat.com/blog/designers-developers-monthly-03-2025/">Fresh Resources for Web Designers and Developers (March 2025)</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> <p>It’s time for our monthly roundup! We’ve got a collection of the best new <a href="https://www.hongkiat.com/blog/tools-to-build-premium-looking-websites/">web development tools</a>, resources, and frameworks for our fellow web developers. This month, we’ve got quite a handful of <a href="https://www.hongkiat.com/blog/ai-writing-tools/">AI-powered tools</a>, everything from open-source AI platforms to chat UIs and AI-powered browsers.</p> <p>So, without further ado, let’s get started!</p> <div class="ref-block ref-block--post" id="ref-post-1"> <a href="https://www.hongkiat.com/blog/designers-developers-monthly-02-2025/" class="ref-block__link" title="Read More: Fresh Resources for Web Designers and Developers (February 2024)" rel="bookmark"><span class="screen-reader-text">Fresh Resources for Web Designers and Developers (February 2024)</span></a> <div class="ref-block__thumbnail img-thumb img-thumb--jumbo" data-img='{ "src" : "https://assets.hongkiat.com/uploads/thumbs/250x160/designers-developers-monthly-02-2025.jpg" }'> <noscript> <style>.no-js #ref-block-post-73306 .ref-block__thumbnail { background-image: url("https://assets.hongkiat.com/uploads/thumbs/250x160/designers-developers-monthly-02-2025.jpg"); }</style> </noscript> </div> <div class="ref-block__summary"> <h4 class="ref-title">Fresh Resources for Web Designers and Developers (February 2024)</h4> <p class="ref-description"> It's time for our monthly roundup! We've gathered a bunch of useful resources for our fellow web developers,... <span>Read more</span></p> </div> </div> <h4 id="lynxjs"><a href="https://lynxjs.org" rel="nofollow noopener" target="_blank">Lynx.js</a></h4> <p><strong>Lynx.js</strong> is an open-source app development framework created by ByteDance, the company behind TikTok. It allows you to build cross-platform mobile applications using web technologies while delivering a native-like experience on iOS and Android. Unlike some frameworks, Lynx supports standard CSS which makes it a lot more flexible.</p> <p>It also boasts a dual-threaded UI rendering engine and Rust-based tooling that provide smoother performance and faster launch times compared to alternatives like <a href="http://https://reactnative.dev" rel="nofollow noopener" target="_blank">React Native</a> and <a href="https://flutter.dev" rel="nofollow noopener" target="_blank">Flutter</a>.</p> <figure> <img fetchpriority="high" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/lynxjs.jpg" alt="Lynx.js app development interface" width="1000" height="640"> </figure> <h4 id="laravel-starter-kits"><a href="https://laravel.com/starter-kits" rel="nofollow noopener" target="_blank">Laravel Starter Kits</a></h4> <p>Laravel 12 introduces starter kits for React, Vue, and Livewire, built with Tailwind CSS and featuring authentication, registration, settings, and best practices.</p> <p>Each of these Starter Kits support GitHub, Google, Microsoft, Apple ID, passkeys, and SSO login via a <a href="https://www.authkit.com/" rel="nofollow noopener" target="_blank">WorkOS AuthKit</a>. The React and Vue kits use <a href="https://inertiajs.com" rel="nofollow noopener" target="_blank">Inertia</a>, TypeScript, and <a href="https://ui.shadcn.com/docs/installation/laravel" rel="nofollow noopener" target="_blank">Shadcn UI</a>, while Livewire features <a href="https://livewire.laravel.com/docs/volt" rel="nofollow noopener" target="_blank">Livewire Volt</a> and <a href="https://fluxui.dev/" rel="nofollow noopener" target="_blank">Flux UI</a>. It’s fully customizable, and can help you streamline your development workflows with modern tools.</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/laravel-starter-kits.jpg" alt="Laravel Starter Kits dashboard" width="1000" height="640"> </figure> <h4 id="huggingface-course"><a href="https://github.com/huggingface/course" rel="nofollow noopener" target="_blank">HuggingFace Course</a></h4> <p>The <strong>Hugging Face Course</strong> is a free, open-source resource that teaches how to use Transformers for <strong>natural language processing (NLP)</strong> and beyond. It covers key tools like Transformers, Datasets, Tokenizers, and Accelerate, along with the <a href="https://huggingface.co/docs/hub/en/index" rel="nofollow noopener" target="_blank">HuggingFace Hub</a>.</p> <p>All content is open with complete code examples available in the <code>huggingface/notebooks</code> directory in their repository. A great resource for anyone looking to get started with LLMs and other NLP models.</p> <figure> <img decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/huggingface-course.jpg" alt="Hugging Face Course interface" width="1000" height="640"> </figure> <h4 id="librechat"><a href="https://www.librechat.ai" rel="nofollow noopener" target="_blank">LibreChat.ai</a></h4> <p><strong>LibreChat</strong> is an open-source AI chat platform that supports multiple AI providers, custom APIs, and advanced features like multimodal chat, conversation search, and prompt templates.</p> <p>With a ChatGPT-inspired UI, customization options, and authentication support (OAuth, <a href="https://www.microsoft.com/id-id/security/business/identity-access/microsoft-entra-id" rel="nofollow noopener" target="_blank">Azure AD</a>). It’s a great tool if you’re looking to build chatbots and conversational AI applications.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/librechat.jpg" alt="LibreChat AI platform" width="1000" height="640"> </figure> <h4 id="reactbits"><a href="https://www.reactbits.dev" rel="nofollow noopener" target="_blank">ReactBits</a></h4> <p><strong>ReactBits</strong> is an open-source library of animated React components that you can use to improve your web applications with dynamic UI elements. It provides over 60 customizable components, including text animations and interactive elements.</p> <p>It supports <a href="https://www.hongkiat.com/blog/tag/javascript-libraries/">JavaScript libraries</a>, TypeScript, vanilla CSS, and Tailwind CSS. A great resource for adding flair to your projects without starting from scratch.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/reactbits.jpg" alt="ReactBits animated components" width="1000" height="640"> </figure> <h4 id="dify"><a href="https://github.com/langgenius/dify" rel="nofollow noopener" target="_blank">Dify</a></h4> <p><strong>Dify</strong> is an open-source platform for developing <a href="https://www.hongkiat.com/blog/run-llm-locally-lm-studio/">LLM applications</a>. It provides AI workflow orchestration, <abbr title="Retrieval-Augmented Generation">RAG</abbr> pipelines, and agent-based automation.</p> <p>On top of that, it also provides a visual interface for designing AI workflows, managing models, and monitoring performance. A great tool for building and deploying LLM applications with ease.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/dify.jpg" alt="Dify LLM platform" width="1000" height="640"> </figure> <h4 id="vllm"><a href="https://docs.vllm.ai/en/latest/" rel="nofollow noopener" target="_blank">VLLM</a></h4> <p><strong>vLLM</strong> is an open-source library that optimizes LLM inference for better efficiency, scalability, and memory management. Supporting models like <a href="https://www.llama.com" rel="nofollow noopener" target="_blank">Llama 3</a> and <a href="https://mistral.ai/en" rel="nofollow noopener" target="_blank">Mistral</a>, it simplifies deployment with an OpenAI-compatible API and seamless Hugging Face integration.</p> <p>It makes high-performance AI serving more accessible and cost-effective.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/vllm.jpg" alt="vLLM optimization tool" width="1000" height="640"> </figure> <h4 id="ragflow"><a href="https://github.com/infiniflow/ragflow" rel="nofollow noopener" target="_blank">RAGFLow</a></h4> <p><strong>RAGFlow</strong> is an open-source tool that helps AI answer questions more accurately by pulling information from documents, tables, and other data sources. It uses a smart system to understand complex queries, refine searches, and provide reliable answers with citations.</p> <p>With features like no-code editing and database integration, It makes it easier for you to build AI-powered search tools without needing advanced technical skills.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/ragflow.jpg" alt="RAGFlow document search" width="1000" height="640"> </figure> <h4 id="cherry-studio"><a href="https://github.com/CherryHQ/cherry-studio" rel="nofollow noopener" target="_blank">Cherry Studio</a></h4> <p><strong>Cherry Studio</strong> is a multi-platform AI desktop application that allows you to switch between different Large Language Models (LLMs) like OpenAI, Gemini, and Anthropic while also supporting local models like <strong>DeepSeek R1</strong>.</p> <p>It comes with some notable features including document processing, translation, and data visualization tools. A great all-in-one solution for working with LLMs, and a must-have for anyone working with AI models on a regular basis.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/cherry-studio.jpg" alt="Cherry Studio AI app" width="1000" height="640"> </figure> <h4 id="copilotkit"><a href="https://github.com/CopilotKit/CopilotKit" rel="nofollow noopener" target="_blank">CopilotKit</a></h4> <p><strong>CopilotKit</strong> is an open-source framework that simplifies adding AI-powered features to your apps. You can add things like in-app chatbots, AI suggestions, and automated actions.</p> <p>It seamlessly integrates with Large Language Models through the React component it provides. With CopilotKit, you can improve your applications with AI without building everything from scratch.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/copilotkit.jpg" alt="CopilotKit AI framework" width="1000" height="640"> </figure> <h4 id="superagi"><a href="https://github.com/TransformerOptimus/SuperAGI" rel="nofollow noopener" target="_blank">SuperAGI</a></h4> <p><strong>SuperAGI</strong> is an open-source framework for building and managing autonomous AI agents. It provides a user-friendly interface, workflow management tools, and SDKs for Python and Node.js.</p> <p>So it’s easier to integrate it into your existing Python and Node.js applications. An overall powerful tool that simplifies AI agent development, and that can help you create smarter, more efficient automation.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/superagi.jpg" alt="SuperAGI agent platform" width="1000" height="640"> </figure> <h4 id="docsgpt"><a href="https://github.com/arc53/DocsGPT" rel="nofollow noopener" target="_blank">DocsGPT</a></h4> <p><strong>DocsGPT</strong> is an open-source AI tool designed to help users find reliable answers from documentation while avoiding AI hallucinations. It supports various file formats including PDF and DOCX, and integrates with web data sources for comprehensive information retrieval.</p> <p>The tool works with LLMs like Ollama and offers pre-built chat widgets, bots, and secure Kubernetes deployment. It’s particularly useful for building AI-powered search engines and chatbots for private documents, making documentation access more efficient and accurate.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/docsgpt.jpg" alt="DocsGPT documentation tool" width="1000" height="520"> </figure> <h4 id="webllm"><a href="https://github.com/mlc-ai/web-llm" rel="nofollow noopener" target="_blank">WebLLM</a></h4> <p><strong>WebLLM</strong> is a JavaScript package that enables in-browser AI chat functionality without requiring server support. It leverages WebGPU for hardware acceleration, ensuring smooth performance even for complex AI tasks.</p> <p>Supporting models like Llama, Mistral, and Gemma, WebLLM enables real-time streaming responses. With its plug-and-play setup available via NPM, Yarn, or CDN, and support for Web Workers, it’s an ideal solution for developers looking to build AI applications that run directly in the browser.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/webllm.jpg" alt="WebLLM browser AI" width="1000" height="640"> </figure> <h4 id="mastraai"><a href="https://github.com/mastra-ai/mastra" rel="nofollow noopener" target="_blank">MastraAI</a></h4> <p><strong>MastraAI</strong> is an open-source TypeScript framework developed by the creators of Gatsby, designed for building AI applications and workflows. It provides comprehensive tools for AI agent development and workflow graphs.</p> <p>The framework supports Retrieval-Augmented Generation (RAG) and deployment on platforms like Vercel and Cloudflare Workers. With built-in evaluation metrics for assessing AI output, MastraAI is an ideal choice for developers seeking to integrate AI into applications with minimal complexity.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/mastra-ai.jpg" alt="MastraAI workflow tool" width="1000" height="640"> </figure> <h4><a href="https://github.com/huggingface/chat-ui" target="_blank" rel="noopener noreferrer">HuggingFace Chat UI</a></h4> <p>The <strong>HuggingFace Chat UI</strong> is an open-source chat interface built with SvelteKit that powers the HuggingChat app. It serves as a customizable reference UI for generative AI applications, supporting open-source models like Falcon and BLOOM.</p> <p>With minimal setup requirements, users can deploy it on Hugging Face Spaces. The UI boasts key features including multi-turn conversation history, function calling, web search, multimodal support, and optional OpenID authentication, making it a versatile solution for AI chat applications.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/huggingface-chat-ui.jpg" alt="HuggingFace Chat UI" width="1000" height="640"> </figure> <h4 id="langfuse"><a href="https://github.com/langfuse/langfuse" rel="nofollow noopener" target="_blank">LangFuse</a></h4> <p><strong>LangFuse</strong> is an open-source tool designed to help developers build and improve AI applications powered by LLMs. It provides comprehensive tracking of AI model performance, including cost and speed metrics, while helping identify and fix issues.</p> <p>The tool also facilitates AI prompt management, version testing, and user feedback collection. With compatibility for popular AI frameworks like LangChain and LlamaIndex, LangFuse is a valuable resource for teams aiming to create more reliable AI-powered applications.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/langfuse.jpg" alt="LangFuse LLM monitor" width="1000" height="640"> </figure> <h4 id="bentoml"><a href="https://github.com/bentoml/BentoML" rel="nofollow noopener" target="_blank">BentoML</a></h4> <p><strong>BentoML</strong> is an open-source tool that simplifies the process of turning machine learning models into production-ready APIs. It handles complex tasks like packaging, deployment, and scaling, allowing developers to focus on building AI applications.</p> <p>Whether deploying on cloud platforms or local environments, BentoML streamlines the process, making it faster and more accessible. This tool is particularly valuable for teams looking to deploy machine learning models without getting bogged down in infrastructure complexities.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/bentoml.jpg" alt="BentoML model deployment" width="1000" height="640"> </figure> <h4 id="wrenai"><a href="https://github.com/Canner/WrenAI" rel="nofollow noopener" target="_blank">WrenAI</a></h4> <p><strong>WrenAI</strong> is an open-source AI agent designed to help data teams interact with their data using natural language. It enables users to generate Text-to-SQL queries, charts, reports, and business intelligence insights with ease.</p> <p>The tool integrates with multiple LLMs, including OpenAI, Google Gemini, Anthropic, and DeepSeek. By eliminating the need to learn complex query languages or BI tools, WrenAI makes data analysis more accessible to teams of all technical levels.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/wrenai.jpg" alt="WrenAI data analysis" width="1000" height="640"> </figure> <h4 id="steel-browser"><a href="https://github.com/steel-dev/steel-browser" rel="nofollow noopener" target="_blank">Steel Browser</a></h4> <p><strong>Steel Browser</strong> is an open-source tool designed to simplify the development of AI applications that interact with the web. It provides a secure, containerized browser environment with full control using tools like Puppeteer and Playwright.</p> <p>The browser supports session management, proxies, Chrome extensions, and includes anti-detection features. These capabilities make tasks like web scraping, automation, and AI-driven browsing more reliable and easier to implement.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/steel.jpg" alt="Steel Browser automation" width="1000" height="640"> </figure> <h4 id="lida"><a href="https://microsoft.github.io/lida/" rel="nofollow noopener" target="_blank">LIDA</a></h4> <p>Microsoft LIDA is an AI-powered tool that automates the generation of visualizations and infographics. It’s compatible with any programming language and can perform data summarization, chart suggestion, and infographic creation.</p> <p>Beyond creating new visuals, LIDA can also enhance existing ones. As a powerful data visualization tool, it enables users to transform raw data into clear, meaningful visuals without requiring extensive technical expertise.</p> <figure> <img loading="lazy" decoding="async" src="https://assets.hongkiat.com/uploads/designers-developers-monthly-03-2025/lida.jpg" alt="Microsoft LIDA visualizer" width="1000" height="640"> </figure><p>The post <a href="https://www.hongkiat.com/blog/designers-developers-monthly-03-2025/">Fresh Resources for Web Designers and Developers (March 2025)</a> appeared first on <a href="https://www.hongkiat.com/blog">Hongkiat</a>.</p> Web Design Tools for Designers & Developers Thoriq Firdaus Broadcast Design News Package http://www.aftereffectvn.info/2017/05/broadcast-design-news-package.html Free After Effect Template urn:uuid:1e1b6456-1fea-d06f-1b71-1d6d1aa27597 Wed, 03 May 2017 12:48:53 +0000 <div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-3jAqJjDpizg/WQVSjfZ0JDI/AAAAAAAAARw/mWPEorMhozshyXpI3qr--NTbxPFWGl1-gCLcB/s1600/preview_590_300_V21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-3jAqJjDpizg/WQVSjfZ0JDI/AAAAAAAAARw/mWPEorMhozshyXpI3qr--NTbxPFWGl1-gCLcB/s1600/preview_590_300_V21.jpg"></a></div><h6 style="text-align: center;">VideoHive Broadcast Design News Package<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5 | 2.82gb</h6></div><a href="http://www.aftereffectvn.info/2017/05/broadcast-design-news-package.html#more">Đọc thêm »</a> After Effects Project File Broadcast Packages Files News VideoHive Jc-imedia.com VideoHive 100 Photo Slideshow http://www.aftereffectvn.info/2017/05/videohive-100-photo-slideshow.html Free After Effect Template urn:uuid:03674f16-1a70-6d0c-dd5f-d03d26465c84 Mon, 01 May 2017 18:53:51 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-wFDBjcoHPWs/WQeCJE9M-QI/AAAAAAAAFrU/lNEU7LppZFkR7NPrkKegxZuUXbNI1mioACLcB/s1600/100-photo-slide-show-after-effects-template-inline-VH-updated.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-wFDBjcoHPWs/WQeCJE9M-QI/AAAAAAAAFrU/lNEU7LppZFkR7NPrkKegxZuUXbNI1mioACLcB/s1600/100-photo-slide-show-after-effects-template-inline-VH-updated.jpg"></a></div><h6 style="text-align: center;">VideoHive 100 Photo Slideshow<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5, CS4 | 130mb</h6><a href="http://www.aftereffectvn.info/2017/05/videohive-100-photo-slideshow.html#more">Đọc thêm »</a> After Effects Project File Files Grunge Video Displays VideoHive StLove Cinematic Light Logo Reveal Pack http://www.aftereffectvn.info/2017/05/cinematic-light-logo-reveal-pack.html Free After Effect Template urn:uuid:5c80ab03-1d82-8487-0b2e-dcc9e3462691 Mon, 01 May 2017 18:25:27 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-mcF98zcbaYw/WQdsBeAs58I/AAAAAAAAFrE/NOYnsv8owWw8LeqpDvKMKGy8YLFv_D24ACLcB/s1600/stop.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-mcF98zcbaYw/WQdsBeAs58I/AAAAAAAAFrE/NOYnsv8owWw8LeqpDvKMKGy8YLFv_D24ACLcB/s1600/stop.jpg"></a></div><h6 style="text-align: center;">VideoHive Cinematic Light Logo Reveal Pack<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5 | 65mb</h6><a href="http://www.aftereffectvn.info/2017/05/cinematic-light-logo-reveal-pack.html#more">Đọc thêm »</a> After Effects Project File Files Light Logo Stings VideoHive StLove HUD UI Infographics Pack 800+ http://www.aftereffectvn.info/2017/04/hud-ui-infographics-pack-800.html Free After Effect Template urn:uuid:7fc050fc-1443-aab5-7680-2524ddf19761 Fri, 21 Apr 2017 03:01:45 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-jB8kOIc71xE/WPl0E-KEBFI/AAAAAAAAFpQ/iHqjVZdAHtYWc2sJI0e859BRDD2oHh3cgCLcB/s1600/hudinfo_poster_new.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-jB8kOIc71xE/WPl0E-KEBFI/AAAAAAAAFpQ/iHqjVZdAHtYWc2sJI0e859BRDD2oHh3cgCLcB/s1600/hudinfo_poster_new.jpg"></a></div><h6 style="text-align: center;">VideoHive HUD UI Infographics Pack 800+<br>1920x1080 | CC2017, CC 2015, CC 2014, CC, CS6 | 460mb</h6><a href="http://www.aftereffectvn.info/2017/04/hud-ui-infographics-pack-800.html#more">Đọc thêm »</a> After Effects Project File Files Infographics VideoHive StLove Colorful Shadows - Motion Titles Pack http://www.aftereffectvn.info/2017/04/colorful-shadows-motion-titles-pack.html Free After Effect Template urn:uuid:ca556598-f791-a4ed-9d62-414ada300b95 Sat, 08 Apr 2017 04:41:20 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-LNBAVLKntx8/WOho6_0hGoI/AAAAAAAAFe8/-6kHXo8hwS07YWKP9ik3Oqg22J35OXMoQCLcB/s1600/Colorful%2BShadows%2B-%2BIMAGE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-LNBAVLKntx8/WOho6_0hGoI/AAAAAAAAFe8/-6kHXo8hwS07YWKP9ik3Oqg22J35OXMoQCLcB/s1600/Colorful%2BShadows%2B-%2BIMAGE.png"></a></div><h6 style="text-align: center;">VideoHive Colorful Shadows - Motion Titles Pack<br>1920x1080 | CC 2015, CC 2014, CC, CS6 | 95mb</h6><a href="http://www.aftereffectvn.info/2017/04/colorful-shadows-motion-titles-pack.html#more">Đọc thêm »</a> 3D - Object After Effects Project File Files Titles VideoHive StLove HUD - UI Graphics for FILM, TV and GAMES http://www.aftereffectvn.info/2017/04/hud-ui-graphics-for-film-tv-and-games.html Free After Effect Template urn:uuid:ee2bfff2-00ad-c7df-0153-b471a18c850a Wed, 05 Apr 2017 08:37:47 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-bV6pszONPX8/WOSfdCheYEI/AAAAAAAAFd8/16tt9E1JEIYcVBr6-a3dV2EJsPLxEZ6UgCLcB/s1600/HUD-UI-GRAPHICS_590x332_V2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-bV6pszONPX8/WOSfdCheYEI/AAAAAAAAFd8/16tt9E1JEIYcVBr6-a3dV2EJsPLxEZ6UgCLcB/s1600/HUD-UI-GRAPHICS_590x332_V2.jpg"></a></div><h6 style="text-align: center;">VideoHive HUD - UI Graphics for FILM, TV and GAMES<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5 | 2.17gb</h6><a href="http://www.aftereffectvn.info/2017/04/hud-ui-graphics-for-film-tv-and-games.html#more">Đọc thêm »</a> After Effects Project File Elements Files Miscellaneous Technology VideoHive StLove Element 3D Tutorials Model http://www.aftereffectvn.info/2017/03/element-3d-tutorials-model.html Free After Effect Template urn:uuid:56132028-1a19-63be-6cda-c7d0ae372cac Fri, 31 Mar 2017 08:00:01 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-P_C3W6UjJcc/WN4L8zlDPHI/AAAAAAAAFc4/Q2STf2-m-lcvJ8MGpH_qpsA6L2UXV-LlQCLcB/s1600/1%2Bthumb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="378" src="https://4.bp.blogspot.com/-P_C3W6UjJcc/WN4L8zlDPHI/AAAAAAAAFc4/Q2STf2-m-lcvJ8MGpH_qpsA6L2UXV-LlQCLcB/s640/1%2Bthumb.jpg" width="640"></a></div><h6 style="text-align: center;">Element 3D Tutorials Model<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5, CS4 | 30min</h6><a href="http://www.aftereffectvn.info/2017/03/element-3d-tutorials-model.html#more">Đọc thêm »</a> After Effects Tutorial StLove VideoHive Lotus Pond Opener http://www.aftereffectvn.info/2017/03/videohive-lotus-pond-opener.html Free After Effect Template urn:uuid:c00b8c80-f582-30ba-5360-38508f4ee646 Thu, 30 Mar 2017 17:46:52 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-7j_x4c2CZwU/WN1BLbhEV5I/AAAAAAAAFco/xKUviLrfaH0PIyLCX_lj1s5O3NNz5bydwCLcB/s1600/590.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-7j_x4c2CZwU/WN1BLbhEV5I/AAAAAAAAFco/xKUviLrfaH0PIyLCX_lj1s5O3NNz5bydwCLcB/s1600/590.jpg"></a></div><h6 style="text-align: center;">VideoHive Lotus Pond Opener<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5 | 455mb</h6><a href="http://www.aftereffectvn.info/2017/03/videohive-lotus-pond-opener.html#more">Đọc thêm »</a> 3D - Object After Effects Project File Files Openers VideoHive StLove VideoHive Cartoon FX Pack http://www.aftereffectvn.info/2017/03/videohive-cartoon-fx-pack.html Free After Effect Template urn:uuid:bc54c5cb-f593-3771-32a2-31ce78fb7dc2 Sun, 26 Mar 2017 07:12:17 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-JsT8jYpgeSw/WNdjfc7jAAI/AAAAAAAAFcI/KXwYS7ST1yICay8jRgWtzbzLBjPUwNPYgCLcB/s1600/Untitled-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-JsT8jYpgeSw/WNdjfc7jAAI/AAAAAAAAFcI/KXwYS7ST1yICay8jRgWtzbzLBjPUwNPYgCLcB/s1600/Untitled-1.jpg"></a></div><h6 style="text-align: center;">VideoHive Cartoon FX Pack<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5, CS4 | 4.1gb</h6><a href="http://www.aftereffectvn.info/2017/03/videohive-cartoon-fx-pack.html#more">Đọc thêm »</a> After Effects Project File Background Cartoons Elements Files VideoHive StLove Solar System 2 ( Fantasy Planets ) 8K http://www.aftereffectvn.info/2017/03/solar-system-2-fantasy-planets-8k.html Free After Effect Template urn:uuid:b853400c-e63d-c27b-6c0e-ad142d3f6117 Sun, 26 Mar 2017 04:10:41 +0000 <div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-IRk_2qL2Opg/WNc4eUo0c1I/AAAAAAAAARc/yMtGuHdI-tI2M7KWX-fcpTsW1lNWnHK8gCLcB/s1600/preview%2Bimage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-IRk_2qL2Opg/WNc4eUo0c1I/AAAAAAAAARc/yMtGuHdI-tI2M7KWX-fcpTsW1lNWnHK8gCLcB/s1600/preview%2Bimage.jpg"></a></div><h6 style="text-align: center;">VideoHive Solar System 2 ( Fantasy Planets ) 8K<br>7680x4320 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5 | 600mb</h6></div><a href="http://www.aftereffectvn.info/2017/03/solar-system-2-fantasy-planets-8k.html#more">Đọc thêm »</a> After Effects Project File Files Space Titles VideoHive Jc-imedia.com VideoHive Whiteboard Kit - Infographic http://www.aftereffectvn.info/2017/03/videohive-whiteboard-kit-infographic.html Free After Effect Template urn:uuid:fa143d3b-4bbf-0bd8-84e0-6dc0c7df7407 Fri, 24 Mar 2017 04:22:30 +0000 <div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-XmeAUsWcAx0/WNSdhxWi33I/AAAAAAAAARM/AyrXDfjEb1c582-BYpO3U8t-hWX8ZKxmACLcB/s1600/whiteboard-kit-infographic-preview_image-590x300_v3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-XmeAUsWcAx0/WNSdhxWi33I/AAAAAAAAARM/AyrXDfjEb1c582-BYpO3U8t-hWX8ZKxmACLcB/s1600/whiteboard-kit-infographic-preview_image-590x300_v3.png"></a></div><h6 style="text-align: center;">VideoHive Whiteboard Kit - Infographic<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5 | 360mb</h6></div><a href="http://www.aftereffectvn.info/2017/03/videohive-whiteboard-kit-infographic.html#more">Đọc thêm »</a> After Effects Project File Commercials Files Product Promo VideoHive Jc-imedia.com VideoHive HDtv Complete Broadcast Package http://www.aftereffectvn.info/2017/03/videohive-hdtv-complete-broadcast.html Free After Effect Template urn:uuid:9b61736d-4a4e-2043-8b59-678c94d3d090 Tue, 14 Mar 2017 02:30:10 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-2rdlSlkwGOM/WMbIobEm4MI/AAAAAAAAFb0/l7IqdpNettUpBgB7gm5Ej-xbEm3aZoykQCLcB/s1600/PREVIEW.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-2rdlSlkwGOM/WMbIobEm4MI/AAAAAAAAFb0/l7IqdpNettUpBgB7gm5Ej-xbEm3aZoykQCLcB/s1600/PREVIEW.jpg"></a></div><h6 style="text-align: center;">VideoHive HDtv Complete Broadcast Package<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5, CS4 | 116mb</h6><a href="http://www.aftereffectvn.info/2017/03/videohive-hdtv-complete-broadcast.html#more">Đọc thêm »</a> After Effects Project File Broadcast Packages Files Miscellaneous VideoHive StLove VideoHive Hand Drawn Elements Pack http://www.aftereffectvn.info/2017/03/videohive-hand-drawn-elements-pack.html Free After Effect Template urn:uuid:71d8736f-7012-0490-078e-a49a1255700e Mon, 13 Mar 2017 08:00:13 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-f2vFUUz8G4A/WMVXo7L8tMI/AAAAAAAAFbk/Ti4YDh1Ld_EuP3L-B0WxTQsSxUgqaNzXgCLcB/s1600/preview-elements-pack-icons-hand-drawn-handy-drawing-Ae-Project-After-Effects-vidnoa-Free-Download-Videohive-Project-Banner-After-Effects-Template.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-f2vFUUz8G4A/WMVXo7L8tMI/AAAAAAAAFbk/Ti4YDh1Ld_EuP3L-B0WxTQsSxUgqaNzXgCLcB/s1600/preview-elements-pack-icons-hand-drawn-handy-drawing-Ae-Project-After-Effects-vidnoa-Free-Download-Videohive-Project-Banner-After-Effects-Template.jpg"></a></div><h6 style="text-align: center;">VideoHive Hand Drawn Elements Pack<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5, CS4 | 100mb</h6><a href="http://www.aftereffectvn.info/2017/03/videohive-hand-drawn-elements-pack.html#more">Đọc thêm »</a> Add-ons After Effects Presets After Effects Project File Files VideoHive StLove VideoHive HUD Typo Graphics Pack http://www.aftereffectvn.info/2017/03/videohive-hud-typo-graphics-pack.html Free After Effect Template urn:uuid:e70f60f9-dc97-1c6b-682a-056eed630638 Mon, 13 Mar 2017 02:30:00 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-sI6jEad1bzQ/WMIVde-BWVI/AAAAAAAAFbE/KzRH6M3lg9gM1Bu4oENHZ-ULwmHHfDtrwCLcB/s1600/Preview_image.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-sI6jEad1bzQ/WMIVde-BWVI/AAAAAAAAFbE/KzRH6M3lg9gM1Bu4oENHZ-ULwmHHfDtrwCLcB/s1600/Preview_image.jpg"></a></div><h6 style="text-align: center;">VideoHive HUD Typo Graphics Pack<br>1920x1080 | CC 2015, CC 2014, CC, CS6 | 330mb</h6><a href="http://www.aftereffectvn.info/2017/03/videohive-hud-typo-graphics-pack.html#more">Đọc thêm »</a> After Effects Project File Elements Files Overlay Technology VideoHive StLove VideoHive Handy Parallax Presets http://www.aftereffectvn.info/2017/03/videohive-handy-parallax-presets.html Free After Effect Template urn:uuid:85b274de-46ec-72c0-2ee7-2508fa24b8bd Sun, 12 Mar 2017 08:00:07 +0000 <div dir="ltr" style="text-align: left;" trbidi="on"><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-yJXJX7xUOxo/WMFecth3GsI/AAAAAAAAAQ8/enYLILGAt6UMskHRbnPdWJaSt8fi6D31ACLcB/s1600/HPP_PREVIEW_IMG_NEW.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-yJXJX7xUOxo/WMFecth3GsI/AAAAAAAAAQ8/enYLILGAt6UMskHRbnPdWJaSt8fi6D31ACLcB/s1600/HPP_PREVIEW_IMG_NEW.jpg"></a></div><h6 style="text-align: center;">VideoHive Handy Parallax Presets<br>3840x2160 | CC 2015, CC 2014, CC, CS6, CS5.5 | 350mb</h6></div><a href="http://www.aftereffectvn.info/2017/03/videohive-handy-parallax-presets.html#more">Đọc thêm »</a> After Effects Project File Files Special Events Video Displays VideoHive Jc-imedia.com 75 Animated Texture (Element 3D) http://www.aftereffectvn.info/2017/03/75-animated-texture-element-3d.html Free After Effect Template urn:uuid:e03de830-1099-9ac7-fbe8-db9bedf49513 Sun, 12 Mar 2017 02:30:03 +0000 <div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-pRAi6kCrVeA/WL_WXM_2GQI/AAAAAAAAFaw/wZMFkP6i4BQi6_GycKoSThQG065P4QiuwCLcB/s1600/Cover%2B590x300.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-pRAi6kCrVeA/WL_WXM_2GQI/AAAAAAAAFaw/wZMFkP6i4BQi6_GycKoSThQG065P4QiuwCLcB/s1600/Cover%2B590x300.jpg"></a></div><h6 style="text-align: center;">VideoHive 75 Animated Texture (Element 3D)<br>1920x1080 | CC 2015, CC 2014, CC, CS6, CS5.5, CS5 | 484mb</h6><a href="http://www.aftereffectvn.info/2017/03/75-animated-texture-element-3d.html#more">Đọc thêm »</a> After Effects Project File Background Elements Files Miscellaneous VideoHive StLove