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

  1. Run the app on ios or android where managedMap has a GUID.
  2. If you need a new platform, add it to `managedMap` in guid.ts with a real Google API project client ID.
  3. 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

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


AI-assisted analysis of expo/expo@b09195aac2 (2026-08-12). Data as JSON: /api/errors/dff884147f9a0315. Report an issue: GitHub.