Skip to content

fix(react-headless): fall back when crypto.randomUUID is unavailable#586

Closed
Shinyaigeek wants to merge 1 commit into
thesysdev:mainfrom
Shinyaigeek:fix/random-uuid-non-secure-context
Closed

fix(react-headless): fall back when crypto.randomUUID is unavailable#586
Shinyaigeek wants to merge 1 commit into
thesysdev:mainfrom
Shinyaigeek:fix/random-uuid-non-secure-context

Conversation

@Shinyaigeek
Copy link
Copy Markdown
Contributor

Problem

Sending a message throws a runtime TypeError: crypto.randomUUID is not a function at packages/react-headless/src/store/createChatStore.ts (optimistic message id generation).

crypto.randomUUID() is only available in a secure context — HTTPS, or http://localhost / 127.0.0.1 / [::1]. When an app built on @openuidev/react-headless is opened from a non-secure origin (a LAN IP over plain HTTP, 0.0.0.0, an internal hostname, etc.), crypto.randomUUID is undefined and the call throws.

Fix

Add a small safeRandomUUID() helper that uses crypto.randomUUID() when available and falls back to a sufficiently-unique id otherwise (adequate for client-side message keys), and use it wherever the store generated ids.

Notes

  • No behavior change in secure contexts.
  • typecheck + build pass for @openuidev/react-headless.

🤖 Generated with Claude Code

`crypto.randomUUID()` is only defined in a secure context (HTTPS, or
`http://localhost` / `127.0.0.1` / `[::1]`). When an app is served from a
non-secure origin — e.g. a LAN IP over plain HTTP or `0.0.0.0` —
`crypto.randomUUID` is `undefined`, so sending a message threw
`crypto.randomUUID is not a function` in `createChatStore`.

Add a `safeRandomUUID()` helper that uses `crypto.randomUUID()` when present
and otherwise falls back to a sufficiently-unique id, and use it for
client-side message ids.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Shinyaigeek
Copy link
Copy Markdown
Contributor Author

Sorry this is ai slop 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant