docs

SDK install

Add @helium/passpoint-sdk to your React Native or Expo app.

Requirements

  • React Native 0.73 or newer, or Expo with a config plugin and a custom dev client.
  • iOS 15.0 or newer, physical device only. Passpoint isn't supported on the simulator.
  • Android API 26 or newer (minSdk 26).

Install the package

pnpm add @helium/passpoint-sdk

iOS

cd ios && pod install

In Xcode, on your app target's Signing & Capabilities tab:

  1. Add Hotspot Configuration.
  2. Add Keychain Sharing with the access group:
    $(AppIdentifierPrefix)com.apple.networkextensionsharing
    
  3. Note your Team ID. You'll need it for keychainAccessGroup, which you pass to the provider as <TEAM_ID>.com.apple.networkextensionsharing.

The keychain access group must match your entitlements exactly. A mismatch makes profile installation fail silently: the OS dialog never appears. If you renamed your bundle ID or rotated your provisioning profile, double-check the Team ID.

No additional CocoaPods or SPM packages are required. The SDK uses only Apple's built-in Security framework.

Android

Set minSdk 26 or higher in app/build.gradle:

android {
  defaultConfig {
    minSdk 26
  }
}

The SDK declares the permissions it needs in its own AndroidManifest.xml:

  • ACCESS_FINE_LOCATION
  • ACCESS_WIFI_STATE
  • CHANGE_WIFI_STATE

These merge into your app at build time; you don't need to copy them.

Request location at runtime. ACCESS_FINE_LOCATION must be granted before you call install(), or the SDK rejects with PERMISSION_DENIED.

import { PermissionsAndroid, Platform } from 'react-native';

if (Platform.OS === 'android') {
  await PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
  );
}

Expo

Expo Managed is not supported: Passpoint requires native entitlements Managed can't provide.

Expo with a development build is fully supported. Add the SDK as a normal dependency, run npx expo prebuild, then apply the iOS entitlements above to the generated ios/ project. A config plugin to automate this is on the roadmap.

Next

Configure the provider