Analysis updated 2026-05-18
Build a pannable, zoomable canvas interface such as a dashboard or mind map in a Kotlin Compose app.
Position UI items relative to each other, like below or beside another item, instead of using fixed coordinates.
Add pinch-to-zoom, panning, and snap-fling gestures to a custom 2D layout without writing gesture code from scratch.
| 07jasjeet/lazysurface | yukioooooo0/qingzai | lyssadev/spotilol | |
|---|---|---|---|
| Stars | 46 | 43 | 42 |
| Language | Kotlin | Kotlin | Kotlin |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 3/5 | 2/5 | 2/5 |
| Audience | developer | general | general |
Figures from each repo's GitHub metadata at analysis time.
Requires a Kotlin Compose Multiplatform project to add the library dependency into.
LazySurface is a code library for Compose Multiplatform, a toolkit Kotlin developers use to build the visual interface of apps for Android, iOS, desktop, and web from one shared codebase. It lets developers arrange items on an infinite 2D plane that users can pan and zoom around, similar to an endless canvas or map, rather than a normal scrolling list. What makes LazySurface different is how you place items on that plane. Instead of giving each item fixed coordinates, you describe its position relative to other items, for example saying one card sits below another card with a certain gap between them. The layout figures out the actual positions itself, and if an item is removed or a new one is added, everything nearby automatically adjusts to stay consistent. Items are only fully built and measured once the user's view gets close to them, which keeps the plane fast even with many items on it. The library also handles common touch gestures out of the box, including panning, pinch to zoom, and flinging content with momentum, plus optional snapping so a fling lands centered on a particular section. A background process continuously smooths out the positions of all items so that declared gaps and alignments are respected, while items are never allowed to overlap. LazySurface is written entirely in a shared codebase that runs unchanged across Android, iOS, desktop, and web targets, and it is published as a package developers can add to their project through a standard dependency line. It includes a demo app showing sample layouts like a scrolling grid, linked distant sections, and a stress test with hundreds of items and a live performance display. It is aimed at Kotlin developers building custom, spatial interfaces that go beyond a typical scrolling list, such as dashboards, mind maps, or exploratory canvases.
LazySurface is a Kotlin library that lets developers build a pannable, zoomable 2D canvas where items are positioned relative to each other, not by fixed coordinates.
Mainly Kotlin. The stack also includes Kotlin, Compose Multiplatform, Android.
No license information is stated in the explanation, so terms of use are unclear.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.