Native navigation, on iOS, Android and React Native.
One Rust core, three ways to ship it: on-device routing, offline maps and turn-by-turn guidance, as a Kotlin or Swift dependency or an Expo module. Signed packages keep routes working with no signal.

Pick the package that matches how you build.
React Native, Android and iOS are three packages over the same navigation core, kept in step by the same tagged releases. None needs an account to install.
| Platform | Package | Version | Platform floor |
|---|---|---|---|
| React Native | @mapmap/react-native | 0.3.2 | iOS 16.4, minSdk 26; Expo SDK 52+ or bare React Native 0.74+ |
| Android | ai.mapmap:core | 0.3.0 | minSdk 26, JDK 17 to build |
| iOS | MapMapKit | 0.6.0 | iOS 16.4, Swift tools 5.9 |
@mapmap/react-native
One TypeScript surface over the same native SDKs: signed territory install, on-device routing with typed geometry and manoeuvres, a typed guidance event stream and voice guidance. Needs a dev client, not Expo Go; pass true to getMapmapNav for a pure TypeScript mock everywhere a native build isn't available.
npx expo install @mapmap/react-nativeai.mapmap:core
Publishes to Maven Central, no account and no token needed. A thin, idiomatic Kotlin layer over the Rust core: TerritoryStore for signed offline packages, OfflineRouting, ADR compliance and the NavigationEngine guidance state machine.
implementation("ai.mapmap:core:0.3.0")MapMapKit
A Swift package with a prebuilt, checksummed XCFramework core. Add MapMapKit to your target; the optional MapMapValhalla product adds on-device Valhalla routing. Pin from 0.6.0, never 0.2.0: that first tagged release shipped without its generated Swift bindings and didn't compile.
.package(url: "…/Mapmapai/mapmap-ios", from: "0.6.0")Both the Android SDK and the React Native module require minSdk 26 (Android 8.0), above the default many app templates ship with, Expo included. Adding either forces a minSdkVersion bump: an expo-build-properties line on Expo, a Gradle change on a bare Android project.
Install @mapmap/react-native and route.
An Expo module over the same native SDKs. Register its config plugin in app.json to wire up the location and audio background modes, then build a dev client.
npx expo install @mapmap/react-nativeimport { getMapmapNav, addGuidanceListener } from "@mapmap/react-native";
const nav = getMapmapNav(false); // true → the mock
await nav.init("snk_…");
await nav.installTerritory("uk"); // signed, verify-then-promote
const { routes } = await nav.computeRoute({
profile: "car",
origin: { latitude: 51.5074, longitude: -0.1278 },
destination: { latitude: 51.5081, longitude: -0.0759 },
});Every rejected promise carries a typed BridgeError, and addGuidanceListener attaches to the same guidance stream a native Android or iOS integration reads directly.
CarPlay and Android Auto, in beta.
The same guidance engine on the car's own display: Android's :car and :car-maplibre modules, and iOS's MapMapCarPlay package. Both ship from the same tagged releases as the rest of the mobile SDKs, and both are beta: they build and are unit-tested, but neither has run on real head-unit hardware yet, so validate on the Desktop Head Unit or the CarPlay Simulator before shipping.
The CarPlay entitlement
Apps need the com.apple.developer.carplay-maps entitlement before a CarPlay scene can connect, including in the CarPlay Simulator. It's requested from your own Apple Developer Account holder and granted per app, per developer account, with lead times from days to around eight weeks.
Play Console review
Android Auto apps declaring the navigation category go through Google’s manual Play Console review. A failed review on a production track blocks the whole app, not just the car surface, so push car-app changes through an internal or closed track first.
MapMap Nav is built on these same SDKs.
Not a demo app: MapMap Nav is a full turn-by-turn navigation app built on the published @mapmap/react-native module over the same native Android and iOS SDKs on this page. There is no private API and no special access behind it.



Per vehicle, or per active user.
The on-device SDK is licensed per vehicle per month for fleets. For apps, the same SDKs meter per monthly active user: send an opaque identifier and MapMap counts distinct users a calendar month at a time, no personal data required.
50,000 free calls a month, card-free.
Issue an snk_ key with nothing more than an email address and start routing.
The docs behind every claim on this page.
SDKs & installation
Every package, version and platform floor across React Native, Android and iOS, plus the full @mapmap/react-native API surface and licensing.
Android API reference
Every public Kotlin class in ai.mapmap:core, package by package: territory storage, offline routing, ADR compliance and guidance.
CarPlay & Android Auto
The :car and :car-maplibre modules and MapMapCarPlay, plus the Apple entitlement and Play Console review gates before you ship.
The MapMap Nav build guide
How a complete turn-by-turn app is put together on these exact SDKs, screen by screen: map, route sheet, voice guidance and the bridge underneath.
Ship native navigation, on your terms.
One Rust core, three published packages, and a real app built on them so you can see it before you commit.
