diff --git a/.changeset/fancy-terms-walk.md b/.changeset/fancy-terms-walk.md new file mode 100644 index 0000000000..83b354af7c --- /dev/null +++ b/.changeset/fancy-terms-walk.md @@ -0,0 +1,5 @@ +--- +'livekit-client': patch +--- + +Decode text data streams without TextDecoder fatal mode for broader runtime support diff --git a/src/room/data-stream/incoming/IncomingDataStreamManager.ts b/src/room/data-stream/incoming/IncomingDataStreamManager.ts index 5e10b0aae6..93f11bda68 100644 --- a/src/room/data-stream/incoming/IncomingDataStreamManager.ts +++ b/src/room/data-stream/incoming/IncomingDataStreamManager.ts @@ -535,7 +535,7 @@ function bytesToChunks(streamId: string): TransformStream { - const decoder = new TextDecoder('utf-8', { fatal: true }); + const decoder = new TextDecoder('utf-8'); const encoder = new TextEncoder(); let outIndex = 0; diff --git a/src/room/data-stream/incoming/StreamReader.ts b/src/room/data-stream/incoming/StreamReader.ts index bd700285f0..1bb0d206a0 100644 --- a/src/room/data-stream/incoming/StreamReader.ts +++ b/src/room/data-stream/incoming/StreamReader.ts @@ -204,7 +204,7 @@ export class TextStreamReader extends BaseStreamReader { // Suppress unhandled rejection on reader.closed — errors are // already propagated through reader.read() to the consumer. reader.closed.catch(() => {}); - const decoder = new TextDecoder('utf-8', { fatal: true }); + const decoder = new TextDecoder('utf-8'); const signal = this.signal; const cleanup = () => {