Skip to content

50,000 free calls a month, card-free. Get an API key →

Products / Mobile SDKs

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.

The MapMap map rendered on iOS, centred over London, with the search bar and locate control from the SDK's default UI
One Rust core

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.

PlatformPackageVersionPlatform floor
React Native@mapmap/react-native0.3.2iOS 16.4, minSdk 26; Expo SDK 52+ or bare React Native 0.74+
Androidai.mapmap:core0.3.0minSdk 26, JDK 17 to build
iOSMapMapKit0.6.0iOS 16.4, Swift tools 5.9
React Native · Expo module

@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-native
Android · Kotlin

ai.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")
iOS · Swift

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")
minSdk 26, twice over

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.

Install
bash
npx expo install @mapmap/react-native
Init, install a territory, route
ts
import { 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.

Apple gate

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.

Google gate

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.

The MapMap map centred over London, rendered by the SDK, with the search bar and layer switch from MapMap Nav
MapMap Nav guiding a driver through a roundabout exit, driven by the SDK's guidance stream
On-map zoom, layers, compass and locate controls over the South Downs near Worthing, West Sussex, rendered by MapMap Nav
Licensing

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.

Free to start

50,000 free calls a month, card-free.

Issue an snk_ key with nothing more than an email address and start routing.

Get an API key

The docs behind every claim on this page.

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.