From c82ac4324a61376b3de3c8b75ccfad7c03f59e7a Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Mon, 8 Jun 2026 15:52:56 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20embedded=20audio=20uploads?= =?UTF-8?q?=20(#2523)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Keep CORS headers on upload proxy error responses. - Surface failed audio/file uploads as Typebot errors instead of leaving the recorder stuck. - Prevent recorded-audio Send clicks from submitting the host page form in embedded bots. - Prevent duplicate embed uploads while an upload is already in flight. - Disable recorder abort while recorded audio is being processed or uploaded. - Bump @typebot.io/js and @typebot.io/react to 0.10.4. --- .../src/app/api/uploads/[token]/route.ts | 6 +- .../src/app/api/uploads/[token]/route.ts | 6 +- bun.lock | 4 +- packages/embeds/js/package.json | 2 +- .../embeds/js/src/components/SendButton.tsx | 2 +- .../inputs/fileUpload/helpers/uploadFiles.ts | 23 ++- .../inputs/textInput/components/TextInput.tsx | 181 +++++++++++------- .../textInput/components/VoiceRecorder.tsx | 4 +- packages/embeds/react/package.json | 2 +- 9 files changed, 152 insertions(+), 78 deletions(-) diff --git a/apps/builder/src/app/api/uploads/[token]/route.ts b/apps/builder/src/app/api/uploads/[token]/route.ts index 170268ffb..bbf46282d 100644 --- a/apps/builder/src/app/api/uploads/[token]/route.ts +++ b/apps/builder/src/app/api/uploads/[token]/route.ts @@ -35,6 +35,10 @@ const handleUploadRequest = async (request: Request, context: RouteContext) => { headers: createUploadProxyCorsHeaders(request), }); - throw error; + console.error(error); + return new Response("Could not upload file", { + status: 500, + headers: createUploadProxyCorsHeaders(request), + }); } }; diff --git a/apps/viewer/src/app/api/uploads/[token]/route.ts b/apps/viewer/src/app/api/uploads/[token]/route.ts index 170268ffb..bbf46282d 100644 --- a/apps/viewer/src/app/api/uploads/[token]/route.ts +++ b/apps/viewer/src/app/api/uploads/[token]/route.ts @@ -35,6 +35,10 @@ const handleUploadRequest = async (request: Request, context: RouteContext) => { headers: createUploadProxyCorsHeaders(request), }); - throw error; + console.error(error); + return new Response("Could not upload file", { + status: 500, + headers: createUploadProxyCorsHeaders(request), + }); } }; diff --git a/bun.lock b/bun.lock index bcdb3d58f..3fe9a95f0 100644 --- a/bun.lock +++ b/bun.lock @@ -601,7 +601,7 @@ }, "packages/embeds/js": { "name": "@typebot.io/js", - "version": "0.10.3", + "version": "0.10.4", "devDependencies": { "@ai-sdk/ui-utils": "^1.2.11", "@ark-ui/solid": "^5.19.0", @@ -636,7 +636,7 @@ }, "packages/embeds/react": { "name": "@typebot.io/react", - "version": "0.10.3", + "version": "0.10.4", "dependencies": { "@typebot.io/js": "workspace:*", "react": "^19.2.4", diff --git a/packages/embeds/js/package.json b/packages/embeds/js/package.json index 49373340b..3e684d604 100644 --- a/packages/embeds/js/package.json +++ b/packages/embeds/js/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/js", - "version": "0.10.3", + "version": "0.10.4", "description": "Javascript library to display typebots on your website", "license": "FSL-1.1-ALv2", "type": "module", diff --git a/packages/embeds/js/src/components/SendButton.tsx b/packages/embeds/js/src/components/SendButton.tsx index 6c9377bfc..2906e5d45 100644 --- a/packages/embeds/js/src/components/SendButton.tsx +++ b/packages/embeds/js/src/components/SendButton.tsx @@ -26,7 +26,7 @@ export const SendButton = (props: SendButtonProps) => { return (