firebase / firebase/firebase-js-sdk
Feature Request: crypto.randomUUID is not a function. Appcheck usage in safari local dev
- Dominant language
- TypeScript
- Stars
- 5.1k
- Forks
- 1k
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 37
Description
### Operating System
iOS
### Environment (if applicable)
Angular
### Firebase SDK Version
11.9.0
### Firebase SDK Product(s)
AppCheck
### Project Tooling
Angular, node (nestjs), nx monorepo
### Detailed Problem Description
If i try and test my app over LAN on my iphone (for debug development), appcheck throws random UUID error
[Error] crypto.randomUUID is not a function. (In 'crypto.randomUUID()', 'crypto.randomUUID' is undefined)
It's because this function doesnt exist on ios safari. I dont wanna do polyfils so for now I just do this script so it sets the token in indexdb so it doesnt try and generate again
```
(async (token = 'YOUR DEBUG TOKEN THATS REGISTERED ON FIREBASE CONSOLE FOR APPCHECK ') => {
// Optional: also set the runtime flag so dev builds don't auto-generate
window.FIREBASE_APPCHECK_DEBUG_TOKEN = token;
const db = await new Promise((res, rej) => {
const r = indexedDB.open('firebase-app-check-database', 1);
r.onupgradeneeded = e => {
const db = e.target.result;
if (!db.objectStoreNames.contains('firebase-app-check-store')) {
db.createObjectStore('firebase-app-check-store', { keyPath: 'compositeKey' });
}
};
r.onsuccess = () => res(r.result);
r.onerror = () => rej(r.error);
});
await new Promise((res, rej) => {
const tx = db.transaction('firebase-app-check-store', 'readwrite');
const store = tx.objectStore('firebase-app-check-store');
const req = store.put({ compositeKey: 'debug-token', value: token });
req.onsuccess = () => res();
req.onerror = () => rej(req.error);
});
console.log('✅ App Check debug token set in IndexedDB:', token, '→ reload now.');
})();
```
### Steps and code to reproduce issue
Just load the page with configured appcheck and you will see it.
Contributor guide
Assessment
This issue has not been assessed yet.