# ui

A user interface (UI) comprises software components through which users observe and manipulate an interactive system.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## GNOME 51 Released With Improved Frame Scheduling, Many App Improvements

DevFeed: [GNOME 51 Released With Improved Frame Scheduling, Many App Improvements](<https://devfeed.tech/articles/gnome-51-released-with-improved-frame-scheduling-many-app-improvements-31407.md>)

Original publisher: [Read original article](<https://www.phoronix.com/news/GNOME-51-Released>)

Author: Michael Larabel

Published: 2026-09-16T16:25:21Z

Content type: news

Language: en

Sources: [Phoronix](<https://devfeed.tech/sources/phoronix.md>)

Topics: [releases](<https://devfeed.tech/topics/releases.md>), [Wayland](<https://devfeed.tech/topics/wayland.md>), [Release notes](<https://devfeed.tech/topics/release-notes.md>), [Software](<https://devfeed.tech/topics/software.md>), [ui](<https://devfeed.tech/topics/ui.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [Nvidia](<https://devfeed.tech/topics/nvidia.md>)

Tags: [desktop](<https://devfeed.tech/tags/desktop.md>), [desktop-linux](<https://devfeed.tech/tags/desktop-linux.md>), [driver](<https://devfeed.tech/tags/driver.md>), [experience](<https://devfeed.tech/tags/experience.md>), [faster](<https://devfeed.tech/tags/faster.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [linux-benchmarking](<https://devfeed.tech/tags/linux-benchmarking.md>), [linux-hardware-benchmarks](<https://devfeed.tech/tags/linux-hardware-benchmarks.md>), [linux-hardware-reviews](<https://devfeed.tech/tags/linux-hardware-reviews.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [linux-performance](<https://devfeed.tech/tags/linux-performance.md>), [linux-server-benchmarks](<https://devfeed.tech/tags/linux-server-benchmarks.md>), [notes](<https://devfeed.tech/tags/notes.md>), [nvidia](<https://devfeed.tech/tags/nvidia.md>), [offline](<https://devfeed.tech/tags/offline.md>), [open-source-graphics](<https://devfeed.tech/tags/open-source-graphics.md>), [other](<https://devfeed.tech/tags/other.md>), [phoronix](<https://devfeed.tech/tags/phoronix.md>), [phoronix-test-suite](<https://devfeed.tech/tags/phoronix-test-suite.md>), [protocols](<https://devfeed.tech/tags/protocols.md>), [release](<https://devfeed.tech/tags/release.md>), [release-notes](<https://devfeed.tech/tags/release-notes.md>), [settings](<https://devfeed.tech/tags/settings.md>), [software](<https://devfeed.tech/tags/software.md>), [time](<https://devfeed.tech/tags/time.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>), [ubuntu-benchmarks](<https://devfeed.tech/tags/ubuntu-benchmarks.md>), [ubuntu-hardware](<https://devfeed.tech/tags/ubuntu-hardware.md>), [ui](<https://devfeed.tech/tags/ui.md>), [wayland](<https://devfeed.tech/tags/wayland.md>), [workstation](<https://devfeed.tech/tags/workstation.md>)

### AI overview

GNOME 51 has been released with improved frame scheduling and desktop responsiveness, new Wayland protocol support, removal of legacy NVIDIA EGLStreams driver support, and updates to several GNOME applications and settings.

### Source excerpt

Right on schedule and in time for appearing in the likes of Ubuntu 26.10 and Fedora Workstation 45, the GNOME 51 desktop is officially released...

## Automating Highly Similar Translations

DevFeed: [Automating Highly Similar Translations](<https://devfeed.tech/articles/automating-highly-similar-translations-27416.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/translation_assistant.htm>)

Author: Khan Academy

Published: 2016-02-15T23:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [Template](<https://devfeed.tech/topics/template.md>), [Tool](<https://devfeed.tech/topics/tool.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [languages](<https://devfeed.tech/tags/languages.md>), [news](<https://devfeed.tech/tags/news.md>), [templates](<https://devfeed.tech/tags/templates.md>), [tool](<https://devfeed.tech/tags/tool.md>), [translation](<https://devfeed.tech/tags/translation.md>), [ui](<https://devfeed.tech/tags/ui.md>), [web-frontend](<https://devfeed.tech/tags/web-frontend.md>)

### AI overview

Khan Academy describes a redesigned translator dashboard and a translation tool with smart translations. The system groups highly similar English strings, reuses existing translations through templates, and updates the UI to show which strings can be translated automatically.

### Source excerpt

By Kevin Barabash Khan Academy is available in 12 languages and is in the process of being translated ... Read more

## Object-Oriented Design Lessons from Trello, Notion, Tinder, and Amazon

DevFeed: [Object-Oriented Design Lessons from Trello, Notion, Tinder, and Amazon](<https://devfeed.tech/articles/copy-these-3-industry-leading-apps-and-turn-object-oriented-design-into-your-secret-career-advantage-31383.md>)

Original publisher: [Read original article](<https://ixdf.org/literature/article/copy-these-3-industry-leading-apps-and-turn-object-oriented-design-into-your-secret-career-advantage>)

Author: William Hudson

Published: 2026-09-16T08:30:06Z

Content type: tutorial

Language: en

Sources: [UX Daily - User Experience Daily](<https://devfeed.tech/sources/ux-daily-user-experience-daily.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [Notion](<https://devfeed.tech/topics/notion.md>)

Tags: [design](<https://devfeed.tech/tags/design.md>), [interface](<https://devfeed.tech/tags/interface.md>), [object](<https://devfeed.tech/tags/object.md>), [properties](<https://devfeed.tech/tags/properties.md>), [structure](<https://devfeed.tech/tags/structure.md>), [ui-components](<https://devfeed.tech/tags/ui-components.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

This tutorial explains object-oriented design through examples from Trello, Notion, Tinder, and Amazon. It argues that organizing interfaces around meaningful, stable objects and their operations can improve clarity and support scalable product structures.

### Source excerpt

Which apps do you use throughout your day? Maybe you manage your projects on Trello, use Notion as an internal docs site, and maybe, just maybe, you do some swiping on Tinder during your lunch break. Despite looking nothing alike, these three highly successful apps are organized around the same idea: Give users a small number of meaningful objects, let them act on those objects directly, and the interface will feel intuitive without explanation.Cards. Blocks. Profiles: These UI components are the central concepts around which Trello, Notion, and Tinder organize everything else. We can call them objects. Users recognize them immediately, know what they can do with them, and build their entire...

## Object-Oriented UI Design and Its Role in User-Centered Interfaces

DevFeed: [Object-Oriented UI Design and Its Role in User-Centered Interfaces](<https://devfeed.tech/articles/7-reasons-object-oriented-ui-design-will-grow-your-career-31382.md>)

Original publisher: [Read original article](<https://ixdf.org/literature/article/7-reasons-object-oriented-ui-design-will-grow-your-career>)

Author: William Hudson

Published: 2026-09-16T07:42:01Z

Content type: tutorial

Language: en

Sources: [UX Daily - User Experience Daily](<https://devfeed.tech/sources/ux-daily-user-experience-daily.md>)

Topics: [User interface design](<https://devfeed.tech/topics/ui-design.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [ui](<https://devfeed.tech/topics/ui.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [design](<https://devfeed.tech/tags/design.md>), [object](<https://devfeed.tech/tags/object.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-design](<https://devfeed.tech/tags/ui-design.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>)

### AI overview

The video explains object-oriented UI design through an airline reservation example. It argues that users think in terms of meaningful objects, such as reservations, rather than isolated features and screens, and introduces conceptual models as a way to structure interfaces around those objects.

### Source excerpt

Vacation time! You book your flight. You have a reservation. It's real. You paid for it. And yet, when you open the airline's app to look at it, it's surprisingly elusive. You don't want to check in, you don't want to change it, you just want to find it and check the details. It's not on the home screen. The home screen wants to sell you another flight. You try your profile. Only personal details. You try "My Trips." There it is! Except "My Trips" only shows the flight. Your seat is somewhere else. Your meal preference is somewhere else. Your upgrade option is somewhere else. The one thing that should hold all of this together, your reservation, has been chopped into pieces and scattered acr...

## MCP Apps: Your UI, Their Chat

DevFeed: [MCP Apps: Your UI, Their Chat](<https://devfeed.tech/articles/mcp-apps-your-ui-their-chat-33598.md>)

Original publisher: [Read original article](<https://blog.scottlogic.com/2026/09/16/mcp-apps-your-ui-their-chat.html>)

Author: James Strong

Published: 2026-09-16T07:00:00Z

Content type: article

Language: en

Sources: [Scott Logic](<https://devfeed.tech/sources/scott-logic.md>)

Topics: [Model Context Protocol (MCP)](<https://devfeed.tech/topics/model-context-protocol-mcp.md>), [ui](<https://devfeed.tech/topics/ui.md>), [ChatGPT](<https://devfeed.tech/topics/chatgpt.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [app](<https://devfeed.tech/tags/app.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [chatgpt](<https://devfeed.tech/tags/chatgpt.md>), [mcp](<https://devfeed.tech/tags/mcp.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The article examines MCP Apps, an extension of the Model Context Protocol, alongside the protocol's 2026-07-28 changes. It explains how MCP Apps let servers return isolated, interactive, stateful UIs that clients such as ChatGPT can embed in agent responses, with examples including dashboards, data tables, and forms.

### Source excerpt

A lot of focus has been put on the statelessness introduced as part of the new MCP specification, but the formalisation of extensions, including MCP Apps, is also worth attention. Using FastMCP and Prefab, I put together an MCP app and show it running in ChatGPT.

## Firefox 157 Beta Released With Latest Enhancements

DevFeed: [Firefox 157 Beta Released With Latest Enhancements](<https://devfeed.tech/articles/firefox-157-beta-released-with-latest-enhancements-26760.md>)

Original publisher: [Read original article](<https://www.phoronix.com/news/Firefox-157-Beta>)

Author: Michael Larabel

Published: 2026-09-15T12:31:03Z

Content type: release

Language: en

Sources: [Phoronix](<https://devfeed.tech/sources/phoronix.md>)

Topics: [Firefox](<https://devfeed.tech/topics/firefox.md>), [Mozilla](<https://devfeed.tech/topics/mozilla.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Nova](<https://devfeed.tech/topics/nova.md>), [Playback](<https://devfeed.tech/topics/playback.md>), [HTML](<https://devfeed.tech/topics/html.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [audio](<https://devfeed.tech/tags/audio.md>), [css](<https://devfeed.tech/tags/css.md>), [desktop-linux](<https://devfeed.tech/tags/desktop-linux.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [html](<https://devfeed.tech/tags/html.md>), [linux-benchmarking](<https://devfeed.tech/tags/linux-benchmarking.md>), [linux-hardware-benchmarks](<https://devfeed.tech/tags/linux-hardware-benchmarks.md>), [linux-hardware-reviews](<https://devfeed.tech/tags/linux-hardware-reviews.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [linux-performance](<https://devfeed.tech/tags/linux-performance.md>), [linux-server-benchmarks](<https://devfeed.tech/tags/linux-server-benchmarks.md>), [mozilla](<https://devfeed.tech/tags/mozilla.md>), [nova](<https://devfeed.tech/tags/nova.md>), [open-source-graphics](<https://devfeed.tech/tags/open-source-graphics.md>), [phoronix](<https://devfeed.tech/tags/phoronix.md>), [phoronix-test-suite](<https://devfeed.tech/tags/phoronix-test-suite.md>), [playback](<https://devfeed.tech/tags/playback.md>), [release](<https://devfeed.tech/tags/release.md>), [ubuntu-benchmarks](<https://devfeed.tech/tags/ubuntu-benchmarks.md>), [ubuntu-hardware](<https://devfeed.tech/tags/ubuntu-hardware.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Firefox 157 Beta adds improved HDR video handling for 8-bit formats, better audio/video synchronization when playback speed changes, and fixes for the vertical tabs sidebar. It also adds CSS support for the @supports at-rule function and the "chain" value for the CSS overscroll-behavior property, alongside Nova UI design work and the return of compact mode.

### Source excerpt

The Firefox release train keeps on rolling. With Firefox 156 released, Firefox 157 is now in beta ahead of the planned release coming up at the end of September...

## Raspberry Pi Desktop Overhauled On Raspberry Pi OS, Adds Icon Dock

DevFeed: [Raspberry Pi Desktop Overhauled On Raspberry Pi OS, Adds Icon Dock](<https://devfeed.tech/articles/raspberry-pi-desktop-overhauled-on-raspberry-pi-os-adds-icon-dock-26766.md>)

Original publisher: [Read original article](<https://www.phoronix.com/news/Raspberry-Pi-Desktop-2026>)

Author: Michael Larabel

Published: 2026-09-15T10:14:58Z

Content type: news

Language: en

Sources: [Phoronix](<https://devfeed.tech/sources/phoronix.md>)

Topics: [Raspberry Pi](<https://devfeed.tech/topics/raspberry-pi.md>), [ui](<https://devfeed.tech/topics/ui.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [customization](<https://devfeed.tech/tags/customization.md>), [desktop](<https://devfeed.tech/tags/desktop.md>), [desktop-linux](<https://devfeed.tech/tags/desktop-linux.md>), [features](<https://devfeed.tech/tags/features.md>), [linux-benchmarking](<https://devfeed.tech/tags/linux-benchmarking.md>), [linux-hardware-benchmarks](<https://devfeed.tech/tags/linux-hardware-benchmarks.md>), [linux-hardware-reviews](<https://devfeed.tech/tags/linux-hardware-reviews.md>), [linux-how-to](<https://devfeed.tech/tags/linux-how-to.md>), [linux-performance](<https://devfeed.tech/tags/linux-performance.md>), [linux-server-benchmarks](<https://devfeed.tech/tags/linux-server-benchmarks.md>), [open-source-graphics](<https://devfeed.tech/tags/open-source-graphics.md>), [phoronix](<https://devfeed.tech/tags/phoronix.md>), [phoronix-test-suite](<https://devfeed.tech/tags/phoronix-test-suite.md>), [raspberry-pi](<https://devfeed.tech/tags/raspberry-pi.md>), [raspberry-pi-os](<https://devfeed.tech/tags/raspberry-pi-os.md>), [screen](<https://devfeed.tech/tags/screen.md>), [ubuntu-benchmarks](<https://devfeed.tech/tags/ubuntu-benchmarks.md>), [ubuntu-hardware](<https://devfeed.tech/tags/ubuntu-hardware.md>), [ui-ux](<https://devfeed.tech/tags/ui-ux.md>)

### AI overview

Raspberry Pi Desktop has received a substantial UI and UX overhaul in the latest Raspberry Pi OS image and package updates. The changes include a default icon dock, a graphical application launcher, a new task list, additional customization options, and an improved screenshot experience.

### Source excerpt

The Raspberry Pi Desktop on Raspberry Pi OS has seen a major overhaul to better modernize the desktop computing experience on the ARM64 single board computers...

## Apple's $2,000 foldable iPhone gives developers more screen space and UI state to manage

DevFeed: [Apple's $2,000 foldable iPhone gives developers more screen space and UI state to manage](<https://devfeed.tech/articles/apple-iphone-duo-makes-developers-think-in-folds-26620.md>)

Original publisher: [Read original article](<https://www.theregister.com/devops/2026/09/15/apple-iphone-duo-makes-developers-think-in-folds/5296415>)

Author: Joab Jackson

Published: 2026-09-15T05:55:00Z

Content type: article

Language: en

Sources: [www.theregister.com - Articles](<https://devfeed.tech/sources/www-theregister-com-articles.md>)

Topics: [iphone](<https://devfeed.tech/topics/iphone.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [developers](<https://devfeed.tech/tags/developers.md>), [devops](<https://devfeed.tech/tags/devops.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [screen](<https://devfeed.tech/tags/screen.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The article examines how Apple's $2,000 foldable iPhone affects development, giving developers more screen space while requiring them to manage additional UI state.

### Source excerpt

Cupertino's $2,000 foldable gives devs more screen, and more UI state to manage

## The Death of the Static UI: Building Context-Aware Mobile Apps in 2026

DevFeed: [The Death of the Static UI: Building Context-Aware Mobile Apps in 2026](<https://devfeed.tech/articles/the-death-of-the-static-ui-building-context-aware-mobile-apps-in-2026-23054.md>)

Original publisher: [Read original article](<https://medium.com/flutter-community/the-death-of-the-static-ui-building-context-aware-mobile-apps-in-2026-ddd06d25a473?source=rss----86fb29d7cc6a---4>)

Author: Rudraksh Shukla

Published: 2026-09-14T17:02:27Z

Content type: tutorial

Language: en

Sources: [Flutter Community - Medium](<https://devfeed.tech/sources/flutter-community-medium.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>), [User experience (UX)](<https://devfeed.tech/topics/ux.md>), [personalization](<https://devfeed.tech/topics/personalization.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [real-time](<https://devfeed.tech/topics/real-time.md>)

Tags: [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [dark-mode](<https://devfeed.tech/tags/dark-mode.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [personalization](<https://devfeed.tech/tags/personalization.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [recommendations](<https://devfeed.tech/tags/recommendations.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ux](<https://devfeed.tech/tags/ux.md>)

### AI overview

This developer article argues that mobile interfaces are evolving from fixed layouts into context-aware surfaces that adapt navigation, touch targets, color, density, and surfaced actions using on-device signals. It discusses motion, location, time, usage history, and device or network state, with Flutter examples and references to patterns associated with Spotify and Netflix.

### Source excerpt

Every app you've ever shipped made the same quiet assumption: the interface is a fixed thing. You design a screen, you lay out the widgets, and every user sees the same arrangement in the same order -- a 22-year-old on a commuter train at 8am and a 60-year-old at home on a Sunday get pixel-identical layouts. For thirty years that was simply what a UI was. That assumption is dying. In 2026 the leading mobile apps treat the interface as a live surface that reshapes itself in real time -- reordering navigation, resizing touch targets, shifting color and density, surfacing the one action you're most likely to want next -- driven by on-device signals about who you are, where you are, and what you're doing right now. The static screen is becoming the exception, not the default. Here's what's actually driving it, what it takes to build, and what it looks like in code -- with Flutter examples throughout. From static layout to living surface The old personalization playbook was recommendation, not adaptation. Netflix reordered a content row; Spotify built you a playlist. The chrome around those recommendations -- the navigation, the layout, the visual system -- stayed frozen. Context-aware UX pushes personalization down into the interface itself. Concretely, an adaptive UI reacts to signals like these: Motion and activity -- accelerometer and gyroscope tell you the user is walking, driving, or still. A UI can enlarge touch targets and simplify layout when it detects movement, cutting mis-taps. Location and environment -- outdoors in bright light, boost contrast and switch to a high-legibility mode; on a known Wi-Fi network at home, load richer media. Time and calendar -- automatic dark mode at night, a leaving-for-a-meeting layout when the next calendar event is 15 minutes out. Usage history -- promote the three features this user actually touches, demote the ones they never open. A finance app foregrounds transfer for a power user and check balance for a casual one. Device and networ

## Valve releases SteamVR 2.17 update with Dashboard usability improvements ahead of Steam Frame launch

DevFeed: [Valve releases SteamVR 2.17 update with Dashboard usability improvements ahead of Steam Frame launch](<https://devfeed.tech/articles/valve-drops-big-steamvr-update-ahead-of-steam-frame-launch-17330.md>)

Original publisher: [Read original article](<https://roadtovr.com/valve-big-steamvr-update-steam-frame-launch/>)

Author: Scott Hayden

Published: 2026-09-11T16:20:00Z

Content type: news

Language: en

Sources: [Road to VR](<https://devfeed.tech/sources/road-to-vr.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [Usability](<https://devfeed.tech/topics/usability.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Steam Deck](<https://devfeed.tech/topics/steam-deck.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>)

Tags: [news](<https://devfeed.tech/tags/news.md>), [pc-vr-news-reviews](<https://devfeed.tech/tags/pc-vr-news-reviews.md>), [steam-deck](<https://devfeed.tech/tags/steam-deck.md>), [ui](<https://devfeed.tech/tags/ui.md>), [update](<https://devfeed.tech/tags/update.md>), [usability](<https://devfeed.tech/tags/usability.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [xr-industry-news](<https://devfeed.tech/tags/xr-industry-news.md>)

### AI overview

Valve released SteamVR 2.17 to all users after a beta period. The update adds Steam Deck-style Quick Access controls and improves access to achievements, guides, notes, overlay management, battery information, and brightness controls. The article says Steam Frame's price and exact release date remain unknown.

### Source excerpt

Valve has dropped a sizeable update to SteamVR, paving the way for what appears to be imminent launch of its long-awaited standalone VR headset, Steam Frame. Update (September 11th, 2026): Previously available only in beta, Valve has now released its 2.17 SteamVR update for all users. You can check out the full changelog here. Original [...] The post Valve Drops Big SteamVR Update Ahead of Steam Frame Launch appeared first on Road to VR.

## From Permissions to Sessions: Rethinking Location Access in Android 17

DevFeed: [From Permissions to Sessions: Rethinking Location Access in Android 17](<https://devfeed.tech/articles/from-permissions-to-sessions-rethinking-location-access-in-android-17-22946.md>)

Original publisher: [Read original article](<https://proandroiddev.com/from-permissions-to-sessions-rethinking-location-access-in-android-17-5a13124b777d?source=rss----c72404660798---4>)

Author: Nav Singh

Published: 2026-09-09T01:15:51Z

Content type: tutorial

Language: en

Sources: [ProAndroidDev - Medium](<https://devfeed.tech/sources/proandroiddev-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-permissions](<https://devfeed.tech/tags/android-permissions.md>), [android17](<https://devfeed.tech/tags/android17.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [feature](<https://devfeed.tech/tags/feature.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [permission](<https://devfeed.tech/tags/permission.md>)

### AI overview

A tutorial on implementing Android 17's system-rendered Location Button in Jetpack Compose. The button uses the USE_LOCATION_BUTTON permission and grants precise location for the current session, with local rendering fallback on older Android versions or when remote rendering fails.

### Source excerpt

Image generated using Gemini In this article, we will learn how to implement the new 📍Location button introduced in Android 17 in Jetpack Compose-based Android applications. Android 17 adds a system-rendered 📍Location Button that we can drop into the layout via a Jetpack library, and tapping it gives the app precise location for that session only, gated by a new USE_LOCATION_BUTTON permission. What the feature is Android now exposes a system-owned, standard location button that we can embed in our UI instead of designing a custom control. When the user taps it, the system handles the permission flow, then grants the app precise location for the current session only, rather than long-lived access. How it changes permissions Instead of immediately requesting ACCESS_FINE_LOCATION (and maybe ACCESS_COARSE_LOCATION) at runtime, we declare the new USE_LOCATION_BUTTON permission to host the button. <!-- Standard Coarse and Fine Location Permissions + onlyForLocationButton --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:usesPermissionFlags="onlyForLocationButton"/> <!-- Required system permission for rendering the LocationButton --> <uses-permission android:name="android.permission.USE_LOCATION_BUTTON" />Developer benefits Less custom permission boilerplate: We lean on system UX and the Jetpack library for the hardest parts of location consent. [versions] locationbuttonCompose = "1.0.0-alpha01" [libraries] androidx-locationbutton-compose = { group = "androidx.core.locationbutton", name = "locationbutton-compose", version.ref = "locationbuttonCompose" } Higher trust and clarity for users: the control looks and behaves consistently across apps, and session-only precise access is easier to understand than broader access. Implementation As we all know, Android development is now Compose-first, so we will implement it using the LocationButton composable provided by th

## Fovii Showcases Immersive Videos And Their Creators On Apple Vision Pro

DevFeed: [Fovii Showcases Immersive Videos And Their Creators On Apple Vision Pro](<https://devfeed.tech/articles/fovii-showcases-immersive-videos-and-their-creators-on-apple-vision-pro-17274.md>)

Original publisher: [Read original article](<https://www.uploadvr.com/fovii-showcases-immersive-videos-and-their-creators-on-apple-vision-pro/>)

Author: Laura Mingail

Published: 2026-09-08T14:00:00Z

Content type: article

Language: en

Sources: [UploadVR](<https://devfeed.tech/sources/uploadvr.md>)

Topics: [App](<https://devfeed.tech/topics/app.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [business](<https://devfeed.tech/tags/business.md>), [creators](<https://devfeed.tech/tags/creators.md>), [immersive-video](<https://devfeed.tech/tags/immersive-video.md>), [launch](<https://devfeed.tech/tags/launch.md>), [subscriptions](<https://devfeed.tech/tags/subscriptions.md>), [ui](<https://devfeed.tech/tags/ui.md>), [video](<https://devfeed.tech/tags/video.md>), [video-streaming](<https://devfeed.tech/tags/video-streaming.md>), [vision](<https://devfeed.tech/tags/vision.md>)

### AI overview

The Fovii app is available on Apple Vision Pro as a platform for on-demand and live-streamed 180-degree immersive videos. It also highlights the creators, studios, and production work behind each project, with additional materials such as behind-the-scenes videos and spatial photos. The app is free to download, with monthly and annual subscriptions, individual rentals, and a limited launch selection.

### Source excerpt

The Fovii app on Apple Vision Pro offers a new platform to experience 180-degree immersive videos and discover the creators behind them.

## Setting Up Koin in a Real Kotlin Multiplatform Project: A Step-by-Step Guide

DevFeed: [Setting Up Koin in a Real Kotlin Multiplatform Project: A Step-by-Step Guide](<https://devfeed.tech/articles/setting-up-koin-in-real-project-a-step-by-step-guide-22976.md>)

Original publisher: [Read original article](<https://blog.insert-koin.io/setting-up-koin-in-real-project-a-step-by-step-guide-1575e2357239?source=rss----925561f2ecdf---4>)

Author: Gabriel Bronzatti Moro

Published: 2026-09-07T12:01:03Z

Content type: tutorial

Language: en

Sources: [Koin developers - Medium](<https://devfeed.tech/sources/koin-developers-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [guide](<https://devfeed.tech/tags/guide.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [koin](<https://devfeed.tech/tags/koin.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [module](<https://devfeed.tech/tags/module.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

A step-by-step tutorial for setting up Koin in a Kotlin Multiplatform project targeting Android and iOS. It covers dependencies, data, domain, and UI modules, a platform bridge, platform entry points, and dependency injection in Composables.

### Source excerpt

Hi everyone! 👋 In this article, we'll take a practical, step-by-step approach to setting up Koin in a real-world Kotlin Multiplatform (KMP) project. Instead of starting with an isolated example or a simple Hello World, we'll work with a project created by the CodandoTV community: the World Cup Best Team Simulator. The app allows users to browse football players by country and build their own dream team. It runs on both Android and iOS, using Kotlin Multiplatform for sharing business and data logic, and Compose Multiplatform to share the UI across platforms. Step 1: Add Koin Dependencies Add the Koin libraries to your version catalog: # gradle/libs.versions.toml [versions] koin = "4.2.2" [libraries] koin_core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" } koin_android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" } koin_compose = { module = "io.insert-koin:koin-compose", version.ref = "koin" } koin_compose_viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" } In the shared module shared/build.gradle.kts, split the dependencies by source set -- commonMain gets the shared Koin libraries, androidMain gets the Android-specific one: // shared/build.gradle.kts sourceSets { commonMain.dependencies { implementation(libs.koin.core) implementation(libs.koin.compose) implementation(libs.koin.compose.viewmodel) } androidMain.dependencies { implementation(libs.koin.android) } } In the Android app module androidApp/build.gradle.kts , add the Android Koin dependency: // androidApp/build.gradle.kts dependencies { implementation(libs.koin.android) implementation(libs.koin.core) }Step 2: Create the Data Module Create shared/src/commonMain/.../data/DataModule.kt . This module provides singleton instances -- repositories, and data sources that live for the entire app lifecycle. val dataModule = module { single<WorldCupRepository> { WorldCupRepositoryImpl(ioDispatcher = Dispatchers.IO) } }Step 3: Create

## From Permissions to Sessions: Rethinking Location Access in Android 17

DevFeed: [From Permissions to Sessions: Rethinking Location Access in Android 17](<https://devfeed.tech/articles/from-permissions-to-sessions-rethinking-location-access-in-android-17-25982.md>)

Original publisher: [Read original article](<https://proandroiddev.com/from-permissions-to-sessions-rethinking-location-access-in-android-17-5a13124b777d?source=rss-711ab22c5c77------2>)

Author: Nav Singh

Published: 2026-09-03T18:18:32Z

Content type: tutorial

Language: en

Sources: [Stories by Nav Singh 🇨🇦 on Medium](<https://devfeed.tech/sources/stories-by-nav-singh-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-permissions](<https://devfeed.tech/tags/android-permissions.md>), [android17](<https://devfeed.tech/tags/android17.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [branding](<https://devfeed.tech/tags/branding.md>), [consent](<https://devfeed.tech/tags/consent.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [layout](<https://devfeed.tech/tags/layout.md>), [permissions](<https://devfeed.tech/tags/permissions.md>)

### AI overview

A tutorial on implementing Android 17's system-rendered Location Button in Jetpack Compose applications. It explains session-only precise location access, the USE_LOCATION_BUTTON permission, the required Jetpack library, fallback rendering, and UI customization.

### Source excerpt

Image generated using Gemini In this article, we will learn how to implement the new 📍Location button introduced in Android 17 in Jetpack Compose-based Android applications. Android 17 adds a system-rendered 📍Location Button that we can drop into the layout via a Jetpack library, and tapping it gives the app precise location for that session only, gated by a new USE_LOCATION_BUTTON permission. What the feature is Android now exposes a system-owned, standard location button that we can embed in our UI instead of designing a custom control. When the user taps it, the system handles the permission flow, then grants the app precise location for the current session only, rather than long-lived access. How it changes permissions Instead of immediately requesting ACCESS_FINE_LOCATION (and maybe ACCESS_COARSE_LOCATION) at runtime, we declare the new USE_LOCATION_BUTTON permission to host the button. <!-- Standard Coarse and Fine Location Permissions + onlyForLocationButton --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:usesPermissionFlags="onlyForLocationButton"/> <!-- Required system permission for rendering the LocationButton --> <uses-permission android:name="android.permission.USE_LOCATION_BUTTON" />Developer benefits Less custom permission boilerplate: We lean on system UX and the Jetpack library for the hardest parts of location consent. [versions] locationbuttonCompose = "1.0.0-alpha01" [libraries] androidx-locationbutton-compose = { group = "androidx.core.locationbutton", name = "locationbutton-compose", version.ref = "locationbuttonCompose" } Higher trust and clarity for users: the control looks and behaves consistently across apps, and session-only precise access is easier to understand than broader access. Implementation As we all know, Android development is now Compose-first, so we will implement it using the LocationButton composable provided by th

## Managing ClickHouse Dedicated Clusters Through Tinybird's Organization UI and API

DevFeed: [Managing ClickHouse Dedicated Clusters Through Tinybird's Organization UI and API](<https://devfeed.tech/articles/cluster-management-keep-the-controls-skip-the-cluster-ops-18438.md>)

Original publisher: [Read original article](<https://www.tinybird.co/blog/clickhouse-cluster-management>)

Author: Aitana Azcona

Published: 2026-09-03T15:00:00Z

Content type: release

Language: en

Sources: [Tinybird](<https://devfeed.tech/sources/tinybird.md>)

Topics: [clickhouse](<https://devfeed.tech/topics/clickhouse.md>), [ui](<https://devfeed.tech/topics/ui.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [clickhouse](<https://devfeed.tech/tags/clickhouse.md>), [product-updates](<https://devfeed.tech/tags/product-updates.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Tinybird provides controls to observe workload signals, resize Dedicated clusters, and rebalance traffic through its Organization UI or API while it operates ClickHouse.

### Source excerpt

Observe workload signals, resize Dedicated clusters, and rebalance traffic from the Organization UI or API while Tinybird operates ClickHouse.

## Animating between numbers in Jetpack Compose

DevFeed: [Animating between numbers in Jetpack Compose](<https://devfeed.tech/articles/animating-between-numbers-in-jetpack-compose-25182.md>)

Original publisher: [Read original article](<https://joebirch.co/android/animating-between-numbers-in-jetpack-compose/>)

Author: hitherejoe

Published: 2026-09-02T12:37:43Z

Content type: tutorial

Language: en

Sources: [Joe Birch](<https://devfeed.tech/sources/joe-birch.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [API](<https://devfeed.tech/topics/api.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-apps](<https://devfeed.tech/tags/android-apps.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [animation](<https://devfeed.tech/tags/animation.md>), [api](<https://devfeed.tech/tags/api.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [apps](<https://devfeed.tech/tags/apps.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [jetpackcompose](<https://devfeed.tech/tags/jetpackcompose.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to animate changing numerical portfolio values in Jetpack Compose. It uses animateFloatAsState with a target value and a tween animation configured with a 500ms duration and FastOutSlowInEasing.

### Source excerpt

When it comes to displaying portfolio data inside of Sleevd, users can change the selected filters which will adjust the portfolio values based on that selection. Alongside the main graph, we show the total portfolio value along with some small statistics for collection counts. When the user moves between the filter options, the values of... Continue reading ->

## Designing the connect flow your users actually see

DevFeed: [Designing the connect flow your users actually see](<https://devfeed.tech/articles/designing-the-connect-flow-your-users-actually-see-16038.md>)

Original publisher: [Read original article](<https://workos.com/blog/oauth-connect-flow-ux>)

Author: WorkOS

Published: 2026-08-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [WorkOS Blog](<https://devfeed.tech/sources/workos-blog.md>)

Topics: [ui](<https://devfeed.tech/topics/ui.md>), [Google](<https://devfeed.tech/topics/google.md>), [Microsoft](<https://devfeed.tech/topics/microsoft.md>)

Tags: [google](<https://devfeed.tech/tags/google.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [integrations](<https://devfeed.tech/tags/integrations.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [permission](<https://devfeed.tech/tags/permission.md>), [trust](<https://devfeed.tech/tags/trust.md>), [ui](<https://devfeed.tech/tags/ui.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

This article explains how to design the user-facing OAuth connection flow, including provider consent screens, branding verification, partial permission grants, administrative approval, and connection health after authorization.

### Source excerpt

What the consent screen shows, why partial grants are normal, and how to model connection health.

## Compose & kotlinx.html

DevFeed: [Compose & kotlinx.html](<https://devfeed.tech/articles/compose-kotlinx-html-20925.md>)

Original publisher: [Read original article](<https://jakewharton.com/compose-and-kotlinx-html/>)

Published: 2026-08-26T00:00:00Z

Content type: article

Language: en

Sources: [Jake Wharton](<https://devfeed.tech/sources/jake-wharton.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [HTML](<https://devfeed.tech/topics/html.md>), [WebSocket](<https://devfeed.tech/topics/websocket.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [ui](<https://devfeed.tech/topics/ui.md>), [client](<https://devfeed.tech/topics/client.md>)

Tags: [backend](<https://devfeed.tech/tags/backend.md>), [compose](<https://devfeed.tech/tags/compose.md>), [html](<https://devfeed.tech/tags/html.md>), [sse](<https://devfeed.tech/tags/sse.md>), [ui](<https://devfeed.tech/tags/ui.md>), [web](<https://devfeed.tech/tags/web.md>), [websocket](<https://devfeed.tech/tags/websocket.md>)

### AI overview

The article presents an approach for keeping server-rendered HTML admin pages fresh without abandoning static HTML. It uses Molecule on the JVM to observe state, kotlinx.html to render HTML fragments, Ktor to stream updates over WebSockets, and client-side JavaScript with Idiomorph to patch the DOM. It also discusses using server-sent events for unidirectional updates and the scalability tradeoffs of long-lived connections.

### Source excerpt

Let's render a simple page with Ktor server and kotlinx.html: get("/users.html") { call.respondHtml { myLayout(title = "Users") { userList( users = db.users.value, ) } } } A reusable myLayout provides scaffolding, userList encapsulates the specific page content, and db.users is a StateFlow<List<User>> from the persistence layer. I've been doing this over and over to create admin dashboard pages for a project. It works great right up until you leave it open for a minute or two, and its content becomes stale. Client-side frameworks exist within the ecosystem to "solve" this, such as Compose for HTML or Compose UI for Web. If your house has a leaky pipe you can also "solve" that by moving to a new house. I simply will not bring myself to abandoning HTML let alone delivery of static HTML in the response. Efforts are underway to adapt Compose for HTML for so-called isomorphic rendering. This would involve performing the initial composition on the server to produce the static HTML for the HTTP response. Then, client side as JS, mounting the same rendering code to reproduce the DOM tree and incrementally update it for future state changes. Tomorrow's Compose today Instead of waiting, I brought my own Compose on the JVM from home in the form of Molecule. Instead of managing a UI tree over time, Molecule manages a single piece of state over time. We can use that to render an HTML fragment on the server as a string, and then stream that to the client. webSocket("/users.ws") { launchMolecule(Immediate) { val users by db.users.collectAsState() createHTML().userList( users = users, ) }.collect(::send) } That's it. Ktor gives us the webSocket, Molecule runs the StateFlow<String> which is piped into it, and kotlinx.html renders the HTML fragment of our existing content function. In the initial HTML payload you need to wire this up somehow. Something like: script { unsafe { +""" |const content = document.getElementById("content"); |const socket = new WebSocket("ws://" + location.ho

## Match Compose injection scopes to real UI ownership

DevFeed: [Match Compose injection scopes to real UI ownership](<https://devfeed.tech/articles/match-compose-injection-scopes-to-real-ui-ownership-23958.md>)

Original publisher: [Read original article](<https://cloud-inject.io/notes/compose-scope-lifecycle/>)

Published: 2026-08-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Koin - Cloud-Inject.io -Kotzilla](<https://devfeed.tech/sources/koin-cloud-inject-io-kotzilla.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [navigation](<https://devfeed.tech/topics/navigation.md>), [Process](<https://devfeed.tech/topics/process.md>)

Tags: [compose](<https://devfeed.tech/tags/compose.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [screen](<https://devfeed.tech/tags/screen.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how to align Compose injection scopes with actual UI ownership and lifecycle events. It distinguishes object retrieval from creation, discusses process, navigation-destination, request, and feature-session lifetimes, and recommends testing both retention and exit behavior.

### Source excerpt

Compose makes it easy to request an object close to the UI that uses it. Proximity is useful, but it does not define ownership. Recomposition can call a function many times. Navigation can keep or discard a back-stack entry. The operating system can recreate the process. A sound scope names the event that owns the object. Separate retrieval from creation Ask two questions for each injected object: Where is the object retrieved? Which lifecycle creates and releases it? A repository retrieved by a composable can still be process-scoped. A screen model can be owned by a navigation destination. A transient formatter can be created for each request. Write the lifetime next to the definition and test that the object survives, or does not survive, the intended event.

## Design tokens: The building blocks of a design system

DevFeed: [Design tokens: The building blocks of a design system](<https://devfeed.tech/articles/design-tokens-the-building-blocks-of-a-design-system-33521.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/design-tokens-the-building-blocks-of-a-design-system>)

Published: 2026-08-18T00:00:00Z

Content type: article

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [Design system](<https://devfeed.tech/topics/design-system.md>), [ui](<https://devfeed.tech/topics/ui.md>), [CSS](<https://devfeed.tech/topics/css.md>), [consistency](<https://devfeed.tech/topics/consistency.md>)

Tags: [atomic](<https://devfeed.tech/tags/atomic.md>), [component](<https://devfeed.tech/tags/component.md>), [css](<https://devfeed.tech/tags/css.md>), [design](<https://devfeed.tech/tags/design.md>), [design-system](<https://devfeed.tech/tags/design-system.md>), [source-of-truth](<https://devfeed.tech/tags/source-of-truth.md>), [structure](<https://devfeed.tech/tags/structure.md>), [tokens](<https://devfeed.tech/tags/tokens.md>), [ui](<https://devfeed.tech/tags/ui.md>), [variables](<https://devfeed.tech/tags/variables.md>)

### AI overview

This article explains how design tokens provide a shared language for visual design attributes in a scalable design system. It contrasts tokens with hard-coded values, describes primitive and semantic tokens, and discusses using the Design Tokens Community Group standard to connect design and engineering.

### Source excerpt

Implementing a design system at scale is often less about the pixels and more about the language we use to describe them. As a Senior Software Engineer at Aha! I've spent a lot of time thinking about how we can build a UI that is not only beautiful,

## Building adaptive Android apps for foldable and expanded displays

DevFeed: [Building adaptive Android apps for foldable and expanded displays](<https://devfeed.tech/articles/enhance-your-app-for-the-new-pixel-lineup-unveiled-at-made-by-google-22697.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/08/pixel-app-experience-made-by-google.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-08-12T19:00:00Z

Content type: article

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Large Screen](<https://devfeed.tech/topics/large-screen.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>)

Tags: [adaptive](<https://devfeed.tech/tags/adaptive.md>), [android](<https://devfeed.tech/tags/android.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [layout](<https://devfeed.tech/tags/layout.md>), [multitasking](<https://devfeed.tech/tags/multitasking.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This Android developer article explains how to adapt apps for foldable devices and expanded displays. It covers window-based sizing, Jetpack Compose layout APIs, posture-aware interfaces, and preserving UI state across folding, rotation, multitasking, and resizing transitions, with examples from Notability and Flo Health.

### Source excerpt

Posted by Fahd Imtiaz, Senior Product Manager, Loryn Hairston, Product Marketing Manager, and Tracy Agyemang, Product Marketing Manager, Android Developer Made by Google expands what's possible across the Android ecosystem. With the introduction of the Pixel 11 Pro Fold, Pixel Watch 5, and the entire Pixel family, users are moving seamlessly across diverse screen sizes, unique postures, and intelligent experiences. For you, the developer, this represents a massive opportunity: foldable users spend about 14x more than standard phone users. To help you elevate your existing experience without starting from scratch, we're sharing our latest platform guidance alongside real-world examples from developers already putting these features into production. Deliver adaptive experiences across foldables and expanded displays The Pixel 11 Pro Fold gives your app a chance to flex its capabilities with an expanded inner display and a standard size outer screen. Building for the foldable form factor requires dropping hardcoded layout rules and designing around available window space. Leveraging Jetpack Compose APIs like Navigation 3 with Scene strategies or our newest layout APIs like Grid and FlexBox allows your layout containers to automatically wrap, span, and reflow. You can also use the experimental MediaQuery API to dynamically adapt your UI to environmental signals like foldable posture, and keyboard states. Building adaptively requires tracking actual app dimensions rather than physical device size, especially during split-screen and multitasking flows. Using Window Size Classes from the WindowManager library allows your layout to respect folds and hinges as natural content separators. For instance, Notability leveraged Material 3 Window Size Classes to create a responsive two-pane layout that transitions smoothly between folded and expanded screens. As Ryan Shea, Android Engineering Manager at Notability, shared, tracking the window itself allows their layout and canvas z

## Coding Challenge #130 - Sort Visualiser

DevFeed: [Coding Challenge #130 - Sort Visualiser](<https://devfeed.tech/articles/coding-challenge-130-sort-visualiser-29206.md>)

Original publisher: [Read original article](<https://codingchallenges.substack.com/p/coding-challenge-130-sort-visualiser>)

Author: John Crickett

Published: 2026-08-08T08:01:19Z

Content type: tutorial

Language: en

Sources: [Coding Challenges](<https://devfeed.tech/sources/coding-challenges.md>)

Topics: [Sorting](<https://devfeed.tech/topics/sorting.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [coding](<https://devfeed.tech/topics/coding.md>), [ui](<https://devfeed.tech/topics/ui.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [animation](<https://devfeed.tech/tags/animation.md>), [coding](<https://devfeed.tech/tags/coding.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [sorting](<https://devfeed.tech/tags/sorting.md>), [tool](<https://devfeed.tech/tags/tool.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

Coding Challenge #130 asks readers to build a sorting algorithm visualiser that animates how eight classic algorithms operate on arrays. The project also provides practice with UI rendering, animation timing, and clean abstractions, while allowing choices such as algorithm, sample size, data order, display mode, and animation speed.

### Source excerpt

This challenge is to build your own tool to visualise how sorting algorithms work.

## Scanning bus stop codes with ML Kit and Vision in the GalwayBus Compose Multiplatform app

DevFeed: [Scanning bus stop codes with ML Kit and Vision in the GalwayBus Compose Multiplatform app](<https://devfeed.tech/articles/scanning-bus-stop-codes-with-ml-kit-and-vision-in-the-galwaybus-compose-multiplatform-app-25195.md>)

Original publisher: [Read original article](<https://johnoreilly.dev/posts/galwaybus-scan-stop-kmp/>)

Published: 2026-08-06T23:00:00Z

Content type: tutorial

Language: en

Sources: [John O'Reilly](<https://devfeed.tech/sources/john-o-reilly.md>)

Topics: [compose-multiplatform](<https://devfeed.tech/topics/compose-multiplatform.md>), [ML Kit](<https://devfeed.tech/topics/ml-kit.md>), [Android](<https://devfeed.tech/topics/android.md>), [cameraX](<https://devfeed.tech/topics/camerax.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Code](<https://devfeed.tech/topics/code.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [apple](<https://devfeed.tech/tags/apple.md>), [camera](<https://devfeed.tech/tags/camera.md>), [camerax](<https://devfeed.tech/tags/camerax.md>), [code](<https://devfeed.tech/tags/code.md>), [compose-multiplatform](<https://devfeed.tech/tags/compose-multiplatform.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ml-kit](<https://devfeed.tech/tags/ml-kit.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [native](<https://devfeed.tech/tags/native.md>), [ocr](<https://devfeed.tech/tags/ocr.md>), [on-device](<https://devfeed.tech/tags/on-device.md>), [platform](<https://devfeed.tech/tags/platform.md>), [recognition](<https://devfeed.tech/tags/recognition.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial explains how the GalwayBus app scans six-digit bus stop codes using on-device ML Kit on Android and Apple's Vision framework on iOS. Camera preview, matching logic, and UI are shared through Compose Multiplatform, while platform-specific implementations handle camera access and OCR. Recognized six-digit runs are matched exactly to stops, and overlapping recognition requests are avoided by dropping newer frames.

### Source excerpt

Every bus stop in Galway has a plate with a 6-digit stop code printed on it. We recently added a "Scan" tab to the GalwayBus app that lets you point the camera at that plate and jump straight to the stop's departures. The text recognition runs entirely on device (ML Kit on Android, Apple's Vision framework on iOS), with the camera preview, matching logic and UI all living in the shared Compose Multiplatform code.

## GenUI Beyond Chat: Designing a Grammar Book with Flutter GenUI -- Part 1

DevFeed: [GenUI Beyond Chat: Designing a Grammar Book with Flutter GenUI -- Part 1](<https://devfeed.tech/articles/genui-beyond-chat-designing-a-grammar-book-with-flutter-genui-part-1-23051.md>)

Original publisher: [Read original article](<https://medium.com/flutter-community/genui-beyond-chat-building-a-grammar-book-with-flutter-and-caching-the-a2ui-output-with-firebase-ecab7b093ccc?source=rss----86fb29d7cc6a---4>)

Author: Cagatay Ulusoy

Published: 2026-08-03T15:15:45Z

Content type: article

Language: en

Sources: [Flutter Community - Medium](<https://devfeed.tech/sources/flutter-community-medium.md>)

Topics: [Flutter](<https://devfeed.tech/topics/flutter.md>), [App](<https://devfeed.tech/topics/app.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [personalization](<https://devfeed.tech/topics/personalization.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [SDK](<https://devfeed.tech/topics/sdk.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [app](<https://devfeed.tech/tags/app.md>), [article](<https://devfeed.tech/tags/article.md>), [feature](<https://devfeed.tech/tags/feature.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [framework](<https://devfeed.tech/tags/framework.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [generative-ui](<https://devfeed.tech/tags/generative-ui.md>), [genuis](<https://devfeed.tech/tags/genuis.md>), [learning](<https://devfeed.tech/tags/learning.md>), [personalization](<https://devfeed.tech/tags/personalization.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This article describes using Flutter GenUI to build an interactive Finnish grammar course inside a language-learning app. It focuses on generating personalized lessons from the learner's language and presenting them as Flutter pages rather than as a long Markdown response.

### Source excerpt

Last year on #FlutterFlightPlans live stream, I asked the Flutter team a question that has stayed with me: Are there any use cases for Generative UI other than chat responses? Can you share some inspiration? Seth Ladd answered, "Let's see what is beyond chat together." 🚀 Since that moment, exploring GenUI beyond chat has been my primary focus. https://medium.com/media/7c53d065806a0337fcf3a8db1412ec82/href I shared my first journey with GenUI in an article series: a small GenUI framework built with Gemini structured outputs, and a migration to Flutter GenUI SDK and A2UI surfaces. Then I tried a different kind of use case: a Finnish 🇫🇮 grammar course inside my Finnish it language-learning app. In this feature, the learner browses a curriculum in their own language, opens one small grammar topic, and moves through a sequence of Flutter pages. https://medium.com/media/3ac419e10db257e4f9652bdfb9ad5165/hrefProblem Definition I had four constraints: I do not speak Finnish, and I am not a language teacher. I don't have time to manually plan and structure a grammar book's worth of micro-lessons in every language. I want interactive application UI, not a long Markdown response. Hyper-personalization is crucial. The explanation should begin from the learner's language. A Turkish learner can approach Finnish vowel harmony through Turkish vowel harmony; an English learner needs another bridge since it has no similar concept. Vowel harmony lessons in English and TurkishThe same rule does not feel equally foreign That fourth constraint is more than UI localization. Turkish speakers will find two familiar concepts in Finnish grammar: attaching grammatical markers directly to the ends of nouns, and changing suffix vowels to match the root word. For example, expressing "in" or "at" requires the exact same mental process in both languages: Turkish: ev + -de = evde (in the house) Finnish: talo + -ssa = talossa (in the house) An English speaker has a completely different starting point.

[Next page](<https://devfeed.tech/topics/ui.md?cursor=WyIyMDI2LTA4LTAzVDE1OjE1OjQ1KzAwOjAwIiwgImIyNjI3YzEwLTJjNjEtNDdjYi1iODMzLWQ5MDEzOGY3ODUyZSJd>)