expo/expo · error · Error
No valid GUID for Expo Go on platform: ${Platform.OS}. Suppo
Error message
No valid GUID for Expo Go on platform: ${Platform.OS}. Supported native platforms are currently: ${Object.keys(managedMap).join(', ')} What it means
Thrown by `getGUID()` in native-component-list when the app runs as `storeClient` or `standalone` (Expo Go / standalone build) but `Platform.select(managedMap)` returned undefined — i.e. the current platform has no entry in `managedMap`. The managedMap only contains `ios` and `android` keys, so running on any other platform (web, macos, windows) in a managed context fails here.
Source
Thrown at apps/native-component-list/src/api/guid.ts:30
android: {
// bare-expo
'dev.expo.payments': '29635966244-knmlpr1upnv6rs4bumqea7hpit4o7kg2',
// NCL standalone
'host.exp.nclexp': '29635966244-lbejmv84iurcge3hn7fo6aapu953oivs',
},
};
const BARE_GUIDs = Platform.select<Record<string, string>>(bareMap);
const managedMap = {
ios: '29635966244-td9jmh1m5trn8uuqa0je1mansia76cln',
android: '29635966244-knmlpr1upnv6rs4bumqea7hpit4o7kg2',
};
const GUID = Platform.select<string>(managedMap);
export function getGUID(): string {
if (['storeClient', 'standalone'].includes(Constants.executionEnvironment)) {
if (!GUID)
throw new Error(
`No valid GUID for Expo Go on platform: ${
Platform.OS
}. Supported native platforms are currently: ${Object.keys(managedMap).join(', ')}`
);
return GUID;
} else if (Constants.executionEnvironment === 'bare') {
if (!BARE_GUIDs) {
throw new Error(
`No valid GUID for bare projects on platform: ${
Platform.OS
}. Supported native platforms are currently: ${Object.keys(bareMap).join(', ')}`
);
}
if (!Application.applicationId) {
throw new Error('Cannot get GUID with null `Application.applicationId`');
}
if (!(Application.applicationId in BARE_GUIDs)) {View on GitHub (pinned to b09195aac2)
Solutions
- Run the app on ios or android where managedMap has a GUID.
- If you need a new platform, add it to `managedMap` in guid.ts with a real Google API project client ID.
- Guard callers of getGUID so they only invoke it on supported platforms.
Example fix
// before const guid = getGUID(); // throws on web // after const guid = ['ios', 'android'].includes(Platform.OS) ? getGUID() : null;
Defensive patterns
Strategy: validation
Validate before calling
import { Platform } from 'react-native';
const SUPPORTED_MANAGED = ['ios', 'android'];
function canGetManagedGUID(): boolean {
return SUPPORTED_MANAGED.includes(Platform.OS);
} Type guard
function isManagedSupportedPlatform(os: string): boolean {
return os === 'ios' || os === 'android';
} Prevention
- Only call getGUID on ios/android in managed/standalone contexts.
- Extend managedMap before adding support for a new platform.
- Guard callers so unsupported platforms skip GUID-dependent features.
When it happens
Trigger: Calling `getGUID()` while `Constants.executionEnvironment` is `storeClient` or `standalone` and `Platform.OS` is not `ios` or `android` (e.g. `web`, `macos`, `windows`).
Common situations: Running native-component-list on web or a community platform in Expo Go; adding a new platform without registering a GUID; testing on a platform the managed map does not cover.
Related errors
- No valid GUID for bare projects on platform: ${Platform.OS}.
- Cannot get GUID with null `Application.applicationId`
- No valid GUID for native app Id: ${Application.applicationId
- No GUID available for executionEnvironment: ${Constants.exec
- No platforms are configured to use the Metro bundler in the
AI-assisted analysis of expo/expo@b09195aac2 (2026-08-12).
Data as JSON: /api/errors/dff884147f9a0315.
Report an issue: GitHub.