SDK configuration
Every PasspointConfig option, and what to pass to
<PasspointProvider>.
The SDK is configured once, at app startup, via <PasspointProvider>
(React) or PasspointSDK.configure() (imperative).
<PasspointProvider
config={{
apiKey: process.env.EXPO_PUBLIC_HELIUM_WIFI_API_KEY!,
environment: 'production',
keychainAccessGroup: 'PVM9KJZ2AD.com.apple.networkextensionsharing',
}}
>
<App />
</PasspointProvider>
PasspointConfig
| Field | Required | Type | Default | Notes |
|---|---|---|---|---|
apiKey | yes | string | — | Partner API key. Sent as X-Helium-P-API-Key. |
environment | no | string | 'production' | One of 'production', 'staging', 'development', or a custom base URL. |
keychainAccessGroup | iOS yes | string | — | <TEAM_ID>.com.apple.networkextensionsharing. Required for profile installation on iOS. |
eapType | no | EapType | EapType.TLS | EapType.TLS (13), EapType.TTLS (21), or EapType.PEAP (25). Most partners stay on TLS. |
serverCaCertPem | no | string (PEM) | bundled ISRG X1 | Override the bundled CA when peering against custom RADIUS infrastructure. |
presetId | no | string (UUID) | — | Required only if your partner account has multiple EAP-TLS presets. |
Environment shorthands
// Production (default)
{ apiKey: 'pk_xxx' }
// Development
{ apiKey: 'pk_xxx', environment: 'development' }
// Staging
{ apiKey: 'pk_xxx', environment: 'staging' }
// Custom (must end at /api/inventory/v1, no trailing endpoint)
{ apiKey: 'pk_xxx', environment: 'https://your-api.example.com/api/inventory/v1' }
Which environments are published, and why a profile installed against one can't authenticate against another, is covered in environments.
Custom server CA
If you've agreed with Helium to use your own RADIUS infrastructure with a different CA, supply the PEM bytes:
{
apiKey: 'pk_xxx',
serverCaCertPem: '-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----',
}
Preset ID
Most partners have a single EAP-TLS preset and can leave presetId
unset. If your account has several, pass the UUID of the one each
install should use:
{ apiKey: 'pk_xxx', presetId: '7c9e6679-7425-40de-944b-e07fc1f90ae7' }
One provider per process. Mounting two
<PasspointProvider>s with different configs is unsupported; the SDK keeps a singleton internally.
Imperative form
For non-React usage:
import { PasspointSDK } from '@helium/passpoint-sdk';
const sdk = PasspointSDK.configure({
apiKey: 'pk_xxx',
environment: 'production',
});
await sdk.install('sub-123');
Subsequent PasspointSDK.getInstance() calls return the same instance.