Remote Compose
Remote Compose is a remote UI rendering technology based on Jetpack Compose that separates UI definition from rendering. A content provider—such as an application or service—describes the UI structure and logic using Compose, while a consumer (such as a system surface or other host) performs native rendering. The technology is commonly used in cross-process UI scenarios such as Wear OS watch faces and Android widgets, enabling consistent visual presentation and interaction within the host environment.
Timeline (last 90 days)
Remote Compose is a brand-new UI framework that brings declarative APIs to remote UI scenarios, is highly aligned with Jetpack Compose, and brings modern graphics capabilities and responsive layouts to widgets.
Remote Compose decouples the UI from the app process, and components are securely serialized and can be rendered on a wide range of Android devices.
Remote Compose's API naming and interaction primitives: Box, Column and Text correspond to RemoteBox, RemoteColumn and RemoteText; Modifier and Boolean correspond to RemoteModifier and RemoteBoolean; and lambdas are replaced by actions.
The reason Remote Compose replaces lambdas with actions: components cannot directly hold object references within the app process, nor can arbitrary code be executed in lambdas, so actions must be declared for the system to trigger on the host side and then call back to the app process.
The Horologist Media Sample app has been updated with a new media widget showcasing the Wear Widgets API, including both small and large versions; on GitHub the legacy Proto Layout code and the new Remote Compose implementation can be compared side by side.
Material 3 color schemes can be applied directly to Remote Compose components, keeping widgets consistent with the app's branding; existing Wear Material 3 design assets (including those in Figma) can be adapted to widgets fairly easily.
A Remote Compose document is backed by a Canvas that fully retains all the features of the Android Canvas while allowing all float values to be replaced with expressions, so any mutable value can be animated.
Expressions form a dependency tree: when the input value an expression depends on changes, the system only recomputes that expression and its downstream nodes without traversing the entire document tree.
Remote Compose documents can be compressed by automatically deduplicating identical strings, loops, function abstraction, and template reuse, typically saving about half the size; the document header is not compressed.
Remote Compose can already fully replicate existing widgets and supports adaptive adjustment and animation; a complete widget game document is only about 4KB.
10 more timeline events
All Facts (20)
The reason Remote Compose replaces lambdas with actions: components cannot directly hold object references within the app process, nor can arbitrary code be executed in lambdas, so actions must be declared for the system to trigger on the host side and then call back to the app process.
50%UnverifiedMaterial 3 color schemes can be applied directly to Remote Compose components, keeping widgets consistent with the app's branding; existing Wear Material 3 design assets (including those in Figma) can be adapted to widgets fairly easily.
50%UnverifiedRemote Compose is a brand-new UI framework that brings declarative APIs to remote UI scenarios, is highly aligned with Jetpack Compose, and brings modern graphics capabilities and responsive layouts to widgets.
50%UnverifiedRemote Compose decouples the UI from the app process, and components are securely serialized and can be rendered on a wide range of Android devices.
50%UnverifiedRemote Compose's API naming and interaction primitives: Box, Column and Text correspond to RemoteBox, RemoteColumn and RemoteText; Modifier and Boolean correspond to RemoteModifier and RemoteBoolean; and lambdas are replaced by actions.
50%UnverifiedRemote Compose's official players include the Compose player, the View player, and a Remote View implementation built in since a certain Android platform version; experimental players cover C++/Skia, TypeScript, and Compose Multiplatform.
50%UnverifiedA Remote Compose document is backed by a Canvas that fully retains all the features of the Android Canvas while allowing all float values to be replaced with expressions, so any mutable value can be animated.
50%UnverifiedExpressions form a dependency tree: when the input value an expression depends on changes, the system only recomputes that expression and its downstream nodes without traversing the entire document tree.
50%UnverifiedRemote Compose documents can be compressed by automatically deduplicating identical strings, loops, function abstraction, and template reuse, typically saving about half the size; the document header is not compressed.
50%UnverifiedRemote Compose can already fully replicate existing widgets and supports adaptive adjustment and animation; a complete widget game document is only about 4KB.
50%UnverifiedThe Remote Compose library is hosted in AndroidX, and the documents and versions ship with DAC releases; the team is working on a public specification for the document format and developing a vector resource conversion tool.
50%UnverifiedThe interface of the entire talk itself is powered by Remote Compose, including all animations.
50%UnverifiedRemote Compose lets remote surfaces render and interact on their own by transmitting a compact document that describes the UI rather than screen pixels.
50%UnverifiedRemote Compose documents are only a few KB in typical scenarios, and complex adaptive layouts are mostly in the tens of KB range.
50%UnverifiedA Wear OS workout tracker built with Remote Compose can achieve real-time metrics refreshed within seconds, whereas the traditional Compose approach may need to wait up to a minute to update metrics once in ambient mode.
50%UnverifiedGlance is the declarative UI framework in Jetpack for building Android widgets; its underlying implementation has long relied on RemoteViews, and the latest version can automatically generate Remote Compose documents as its backend.
50%UnverifiedRemote Compose offers three equivalent ways to create documents: the Compose API, a procedural Kotlin API (KMP), and the JSON format, all of which ultimately produce the same byte stream.
50%UnverifiedThe Horologist Media Sample app has been updated with a new media widget showcasing the Wear Widgets API, including both small and large versions; on GitHub the legacy Proto Layout code and the new Remote Compose implementation can be compared side by side.
50%UnverifiedThe Document Inspector is now available in preview, supporting step-by-step execution of operations and visualizing layouts at different densities and sizes, similar to Android Studio's full layout inspection, and can even do a 3D view.
50%UnverifiedWear OS's new workout tracker has been built with Remote Compose and has shipped to the public beta of the Asics RunKeeper app.
50%