Fix: handle missing MessageEvent in React Native (Hermes engine)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- react-native, typescript
- Área
- mobile-dev
Línea de trabajo
Comienza en packages/partysocket/src/ws.ts, en cloneEventNode alrededor de la línea 72, e inspecciona la ruta existente de isReactNative. Ejecuta las pruebas relevantes de partysocket, incluidas las pruebas añadidas por el fork enlazado si están disponibles, y confirma que Hermes funciona sin MessageEvent mientras el comportamiento en el navegador y Node.js permanece sin cambios.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Bug
cloneEventNode in packages/partysocket/src/ws.ts (line 72) calls new MessageEvent(e.type, e) unconditionally. React Native's Hermes engine doesn't provide MessageEvent as a global, causing:
ReferenceError: Property 'MessageEvent' doesn't exist
This makes partysocket unusable on React Native without a user-side polyfill. Libraries that depend on partysocket (like @novu/js) are also affected.
The existing isReactNative detection correctly routes RN to cloneEventNode (since #257), but cloneEventNode itself assumes MessageEvent exists.
Environment
React Native 0.81.5 / Expo 54
Hermes engine (default since RN 0.70+)
partysocket 1.1.16 (same issue in all versions)
Proposed Fix
Check typeof MessageEvent !== "undefined" before using it. When unavailable, fall back to a plain Event with manually copied data, origin, and lastEventId properties:
function cloneEventNode(e: Event) {
if ("data" in e) {
if (typeof MessageEvent !== "undefined") {
return new MessageEvent(e.type, e);
}
// Fallback for React Native (Hermes) where MessageEvent doesn't exist
const evt = new Event(e.type, e) as Event & Record<string, unknown>;
evt.data = (e as MessageEvent).data;
evt.origin = (e as MessageEvent).origin;
evt.lastEventId = (e as MessageEvent).lastEventId;
return evt;
}
// ... rest unchanged
}
Zero behavior change for browsers and Node.js where MessageEvent exists.
Fork with fix + tests: https://github.com/marouanechoukri31/partykit/tree/fix/react-native-messageevent
Related: #516
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.3k
- Forks
- 84
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cloudflare/partykit
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
cloudflare/partykit#425 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
cloudflare/partykit#424 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
cloudflare/partykit#423 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
cloudflare/partykit#419 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
cloudflare/partykit#411 ·
Todos los issues de cloudflare/partykit
Issues similares
-
Remove unused dependenciesPosiblemente ocupada @alastair-smith la tomó hoy. Abiertochore other
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
alastair-smith/card-games#384 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
code-yeongyu/senpi#5571 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
nexu-io/open-design#9262 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
friction
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
kentcdodds/kody#4753 ·
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
lingdojo/kana-dojo#33508 · 1 comentario · 5 reacciones ·
Los mantenedores suelen responder en 1 día