Trail screens need native maps on both platforms without a Google Maps key. Add Android mapProvider: 'maplibre' using MapLibre GL 13.7.1 and Kotlin 2.2.10, retain native MapKit with topographic tiles on iOS, and keep the existing native Google provider available for compatible builds. MapLibre projects omit the Google SDK and key.
Shared native Map, MapMarker and MapPolyline props carry route geometry, direction bearings, pin colors, camera controls, location visibility and padding for floating elevation controls. The host preserves route overlays across basemap changes, controlled-region gesture round trips, native lifecycle transitions and camera updates. Attribution and scale remain visible. Android test IDs appear in accessibility metadata while retaining spoken labels.
The iOS renderer now preserves authored polyline order across updates and retained-child moves. Previously, updating the wide route casing moved it above the unchanged foreground. Reconcile SDK-owned native overlays with MapKit's exchange API while retaining unchanged objects, tile levels and the camera. Also include native modal focus/layout and foreground location fixes, plus genuine simulator slider, Paste/value and foreground-app driver operations used by app acceptance journeys.
Validation:
- Full normal CI at
b36dc789: https://github.com/craft-native/craft/actions/runs/39123681341 (passed all required jobs). - Full normal Mobile E2E at the same source: https://github.com/craft-native/craft/actions/runs/39123681263 (passed every required job, including 31 native iOS navigation tests with zero failures or skips).
- Actual MapKit ordering regression failed with three native assertions before the fix: https://github.com/craft-native/craft/actions/runs/39119967876. The identical native test passed with zero failures after the fix: https://github.com/craft-native/craft/actions/runs/39120863651. These focused runs establish the regression; they do not replace the full matrix above.
- Current UIKit run passed 163 native tests plus two UI tests, including the polyline-order regression. Current Android API34 and API35 each passed all 51 cases, zero failures or skips. Stock Play software cold provisioning, generated iOS/Watch and Android projects, package/type checks, and the full mobile matrix are green at the same source.
- Earlier full mobile matrix at
e56a7ca7passed: https://github.com/craft-native/craft/actions/runs/39097213936. Android API34 and API35 each passed all 38 cases, zero skips: https://github.com/craft-native/craft/actions/runs/39097243474. Native map compositor, marker interaction, camera/gesture/lifecycle and accessibility assertions remain intact. - The branch now integrates the normally published Craft 0.0.238 baseline. Its critical release blockers passed all 25 normal source gates before publication, including stock Play software cold provisioning. The final combined Map SDK must pass its own full matrix above; no preview packages or app source overrides are used.
Related shared STX component and Stacks configuration changes: stacksjs/stx#2083 and stacksjs/stacks#2912. Wildloop will adopt immutable normally published packages. Final installed Wildloop iOS/Android map, sticky-action and persistent review CRUD acceptance remains separate from SDK fixture coverage. Android camera perspective is supported; DEM terrain is not claimed.