Skip to content

fix(deps): update dependency org.maplibre.compose:maplibre-compose-material3 to v0.16.0 - #6582

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/org.maplibre.compose-maplibre-compose-material3-0.x
Open

fix(deps): update dependency org.maplibre.compose:maplibre-compose-material3 to v0.16.0#6582
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/org.maplibre.compose-maplibre-compose-material3-0.x

Conversation

@renovate

@renovate renovate Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
org.maplibre.compose:maplibre-compose-material3 0.14.00.16.0 age confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

maplibre/maplibre-compose (org.maplibre.compose:maplibre-compose-material3)

v0.16.0

v0.16.0 changes the map state, input configuration, styling, and location APIs. It adds map image capture and Android Surface presentation.

This release contains breaking API changes. The upgrade notes below describe the main changes from v0.15.x.

Map state and lifecycle

MapState holds the camera and style state and provides feature queries and map events. Its lifetime is independent of the MaplibreMap composable that displays it. A retained state can be displayed again after that composable leaves composition. One state can be displayed by one presentation at a time.

Sources and layers are declared in rememberMapState's content block. Composable styling functions can be reused across maps and snapshots. When switching base styles, the previous map stays visible while the replacement loads, and declared content is reapplied to the new style.

MapRuntime provides shared configuration for maps, snapshots, and offline data. Apps can use the default runtime or create and close an explicit runtime for separate configuration or ownership.

Input and controls

MapInteractions configures allowed camera movements and callbacks. MapUiOptions configures touch gestures, mouse buttons, scroll and trackpad input, keyboard shortcuts, and rotary input.

  • Momentum and bearing snapping are configurable, including snapping to evenly spaced compass directions.
  • Bearing haptics are available on Android, iOS, and macOS, independently of snapping.
  • Layers support feature double-clicks and configurable hit padding. An unhandled-click callback runs when no layer handles a click.
  • Keyboard focus and engagement determine whether keys control the map or navigate surrounding controls.
  • MapOverlay.Full adds zoom buttons. MapOverlay.AttributionOnly displays the logo and attribution button. Both have Material 3 variants.

Android camera animations and style transitions now follow the system animator duration scale. Scale bars on iOS and macOS follow the system measurement preference.

Map images and Android Surface support

MapSnapshotter renders a base style and declared map content to an ImageBitmap on Android, iOS, desktop, and the browser, without displaying an interactive map. Capture requests specify the camera, image size, density, and transparency. Compose UI overlays are not included. See Capture a map image.

AndroidMapPresentation displays a MapState on an Android Surface without a Compose UI view. Hosts can forward their own pan, scale, fling, and click input. The new Android Auto demo shows this integration. See Present on an Android Surface.

Styling and data
  • Style handles. mapState.style provides typed access to sources, layers, and images, including source and cluster queries and feature-state updates. Mutable views allow edits to resources that are not owned by the declarative content. Handles belong to the loaded style and must be reacquired after a style replacement.
  • Layer placement. Anchors accept predicates to select a base-style layer, such as the first label layer, in addition to layer IDs.
  • Style properties. Paint properties accept individual transitions. Typed imperative APIs are available for light, sky, and projection where supported by the engine. Text offsets can now use fixed DP distances independent of label size.
  • Expression nullability. Expression types now indicate whether a value may be missing. Callers must handle nullable inputs where a value is required.
  • Request hooks. Runtime configuration accepts hooks to rewrite resource URLs, add HTTP headers, or supply resource bytes from app code. Hooks are fixed when the runtime is created. See Rewrite or serve map requests.
  • Packaged offline data. Native platforms can import packs from another MapLibre offline database and use mbtilesUrl to load packaged MBTiles files. Browser offline packs remain unsupported.

For engine features outside the common API, withPlatformMap provides scoped access to the underlying platform map.

Location and heading

Location and device heading now use separate LocationMeasurement and HeadingMeasurement models with timestamps and explicit accuracy fields. Heading also identifies its north reference.

The revised provider and state APIs distinguish backend availability, permission, and tracking failures. Apps can check availability before requesting permission and retry after tracking fails. The state retains the last measurement when tracking stops. Custom providers can use the default permission behavior when permission does not apply. See Show the user's location.

Fixes and platform updates
  • Browser point feature queries now use the requested screen position.
  • Reapplying unchanged camera constraints no longer interrupts browser camera animations.
  • Desktop resizing preserves the previous frame without stretching it while a replacement frame is prepared.
  • Number formatting no longer throws on older Safari versions because of an unsupported precision setting.
  • Published JVM dependencies no longer select the Compose Desktop artifact for the machine that built the library.
  • Android runtimes now support ARMv7 (armeabi-v7a) in addition to ARM64 and x86-64.
  • MapLibre GL JS is updated from 6.2.0 to 6.6.0, and native FFI from 0.202608.3 to 0.202609.1.

The demo adds Wear OS, Android TV, and Android Auto apps, a Material 3 map style, editable markers, and snapshot capture. Chinese and Serbian translations now distinguish writing scripts.

Upgrading from v0.15.x
  • Replace rememberCameraState and rememberStyleState with rememberMapState. Pass the result as MaplibreMap(state = ...). Move MaplibreMap's baseStyle and map-content block to rememberMapState; its trailing block now contains Compose UI overlays.
  • Replace MapOptions: pass rendering settings through renderOptions, move tileLodOptions to RenderOptions.tileLod, and replace GestureOptions with MapInteractions and MapUiOptions. Move MaplibreMap's zoomRange, pitchRange, and boundingBox parameters into CameraConstraints.
  • Move onMapClick and onMapLongClick into MapInteractions.callbacks. Replace onMapLoadFinished, onMapLoadFailed, and onFrame with collection of MapState.events. Observe mapState.style.loadState when you need to know whether the base style and composed content are ready. Replace the per-map logger parameter with MapLogging.logger.
  • Move runtime operations from source objects to handles obtained through mapState.style.sources. For example, cluster queries and feature-state operations previously called on GeoJsonSource now belong to its GeoJsonSourceHandle. Sources passed to layer declarations describe the source data and configuration.
  • Replace Location with LocationMeasurement, Orientation with HeadingMeasurement, and OrientationProvider with HeadingProvider. The measurement models use separate value and accuracy fields, and measuredAt: Instant replaces timestamp: TimeMark.
  • Review expressions that read feature properties or state. Their types now represent possible null values; provide a fallback or type assertion where the receiving function or property requires a value.
  • Anchor.Replace has been removed. Modify the base-style layer through its mutable handle and use Anchor.Above or Anchor.Below to position declared content.
  • Replace Viewport.visibleBoundingBox with Viewport.visibleBounds. The new VisibleBounds type represents continuous longitudes, including repeated worlds. Call toBoundingBox() when a GeoJSON bounding box is required.
  • Replace native-platform MapLibre.configure calls with DefaultMapRuntime.configure(MapRuntimeOptions(...)) before the first runtime use. Replace rememberOfflineManager() with access to the runtime's offlineManager, for example DefaultMapRuntime.instance.offlineManager.
  • Remove deprecated browser MapLibre.initialize calls.

The getting started guide and composition guide show the new map setup.

Full changelog: v0.15.0 → v0.16.0

v0.15.0

Highlights

Android and iOS moved onto MapLibre Native FFI, the same stack desktop used in 0.14. This release puts Android, iOS, and desktop on one implementation and one public API. The browser target was rewritten against MapLibre GL JS 6.2 and is now at feature parity with the rest. Existing apps must update their setup. See Getting started.

Compose took over the map overlay. Platform SDK ornaments, and the OrnamentOptions that configured them, were removed.

This release added location on every platform. The engine was also published as org.maplibre.compose:location for apps that want it without a map. It remains an api dependency of maplibre-compose.

Breaking changes

Setup changes are listed below. A shared API across JVM, iOS, and Android replaces the per-platform option and state types; see the API reference as not every breaking API change is outlined here..

Android
  • Raised minSdk to 24.
  • Add a render runtime: maplibre-compose-runtime-vulkan-android or maplibre-compose-runtime-opengl-android. The MapLibre Android SDK is no longer a transitive dependency.
  • Moved optional fused location to location-runtime-gms or location-runtime-hms. maplibre-compose-gms is gone.
iOS
  • Remove the CocoaPods or SwiftPM MapLibre / MapLibre.framework dependency.
  • Add the system linker flags from the getting-started guide (-lc++, -lz, and the listed frameworks).
  • The HarfBuzz linker-order workaround is no longer required.
Web
  • Compile the JS target with useEsModules().
  • Call MapLibre.configure() inside onWasmReady, before Compose starts.
Desktop
  • Renamed rememberAwtComposeGpuHost to rememberAwtComposeMapHost.
  • Made MapLibre.configure() optional. The first map applies a default cache configuration.

Added

  • Moved Android and iOS onto the shared FFI implementation in #​844 and #​985. Gestures, overlays, camera, sources, offline packs, and location now use the same API on all three.
  • Rewrote the browser target to composite MapLibre GL JS into Compose and to implement the shared style, layer, camera, and gesture APIs in #​848.
  • Added location providers for the browser, Linux, macOS, and Windows. Add location-runtime-gms or location-runtime-hms on Android when fused location is wanted.
  • Filled the remaining style-spec layer properties, including ColorReliefLayer, fill-extrusion rounded corners, and feature-state writes. Replaced ComputedSource with custom geometry and vector sources.
  • Added geographic overlay placement, camera padding, and tile LOD controls.
  • Exposed CameraStateSaver as public API.

Improved

  • Overlapping style loads no longer leave a stale style.
  • Made feature queries suspend so as not to force the caller to block while the renderer answers.
  • Fixed web maps that dropped density changes or lost Compose context.

Documentation and demo

  • Migrated the documentation from MkDocs to a Starlight app, and restructured it into getting started, guides, and concepts. Embedded a live browser demo.
  • Rebuilt the demo app around story screens: 3D buildings, a historical overlay, data visualization, live tracking, transit, the user's location, drag and drop, a magnifying lens, and benchmarks.

Dependency updates

Bumped Compose Multiplatform to 1.12.0, Kotlin to 2.4.10, MapLibre GL JS to 6.2, maplibre-native-ffi to 0.202608.3, and Android compileSdk to 37.

New contributors

Full Changelog: maplibre/maplibre-compose@v0.14.0...v0.15.0


Configuration

📅 Schedule: (in timezone Europe/Berlin)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added 3. to review Waiting for reviews dependencies labels Aug 26, 2026
@AndyScherzinger AndyScherzinger added this to the 25.1.0 milestone Aug 26, 2026
@renovate
renovate Bot force-pushed the renovate/org.maplibre.compose-maplibre-compose-material3-0.x branch 2 times, most recently from e0caaea to ab00ef4 Compare August 26, 2026 19:21
…terial3 to v0.16.0

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@renovate renovate Bot changed the title fix(deps): update dependency org.maplibre.compose:maplibre-compose-material3 to v0.15.0 fix(deps): update dependency org.maplibre.compose:maplibre-compose-material3 to v0.16.0 Sep 9, 2026
@renovate
renovate Bot force-pushed the renovate/org.maplibre.compose-maplibre-compose-material3-0.x branch from ab00ef4 to 06365ad Compare September 9, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant