@becomap/react-native
v0.1.6
Published
React Native SDK for Beco indoor mapping and wayfinding
Downloads
100
Readme
@becomap/react-native
Indoor maps and wayfinding for React Native.
Install
npm install @becomap/react-native react-native-webviewRequires React Native 0.76+ (New Architecture), iOS 15.1+, and Android.
Expo: needs a development build — Expo Go is not supported.
npx expo prebuild
npx expo run:android # or: npx expo run:iosnpx expo install react-native-webview resolves against Expo's SDK compatibility
table, and on Expo SDK 55 that table pins 13.16.0 — older than this SDK's
>=14.0.0 peer range. Satisfying the peer range makes expo-doctor and
expo install --check report a mismatch:
✖ Check that packages match versions required by installed Expo SDK
❗ Major version mismatches
package expected found
react-native-webview 13.16.0 14.0.1This is a disagreement between Expo's compatibility table and this SDK's peer
range, not a build or runtime failure — on an Expo SDK 55 + RN 0.83.10 app,
pod install succeeded, the iOS build reported zero errors, Gradle reported
BUILD SUCCESSFUL, and the map rendered on both an iOS simulator and an Android
emulator with no SDK runtime errors. To silence both checks, exclude the
package from Expo's version check in your own package.json:
{ "expo": { "install": { "exclude": ["react-native-webview"] } } }See expo.fyi/dependency-validation.
Bare React Native: run cd ios && pod install. Autolinking handles the rest.
Usage
import { useRef } from 'react';
import { StyleSheet } from 'react-native';
import {
BecoMapView,
createBCMapInitOptions,
createBCMapSiteOptions,
} from '@becomap/react-native';
import type { BecoMapViewHandle } from '@becomap/react-native';
export default function App() {
const map = useRef<BecoMapViewHandle>(null);
return (
<BecoMapView
ref={map}
style={StyleSheet.absoluteFill}
onMapReady={() => {
map.current?.initialiseMap(
createBCMapInitOptions({
clientId: 'YOUR_CLIENT_ID',
clientSecret: 'YOUR_CLIENT_SECRET',
siteIdentifier: 'YOUR_SITE_IDENTIFIER',
}),
createBCMapSiteOptions()
);
}}
/>
);
}Your client ID, client secret, and site identifier come from Beco. Read them from your app's own configuration at runtime — don't commit them.
That's the whole setup. Everything else — floors, search, selection, camera, routing, events, errors — is in the documentation.
Notes
- Network is required the first time a map loads.
- The SDK renders the map only — floor pickers, search bars, and loading states are yours to build.
License
MIT — see CONTRIBUTING.md if you'd like to contribute.
