diff --git a/apps/browser/src/platform/browser/browser-api.ts b/apps/browser/src/platform/browser/browser-api.ts index ae72e2ac12f..cb9778832e6 100644 --- a/apps/browser/src/platform/browser/browser-api.ts +++ b/apps/browser/src/platform/browser/browser-api.ts @@ -184,7 +184,18 @@ export class BrowserApi { name: string, callback: (message: any, sender: chrome.runtime.MessageSender, response: any) => unknown ) { - chrome.runtime.onMessage.addListener(callback); + chrome.runtime.onMessage.addListener( + (msg: any, sender: chrome.runtime.MessageSender, sendResponse: any) => { + const messageResponse = callback(msg, sender, sendResponse); + + if (!messageResponse) { + return false; + } + + Promise.resolve(messageResponse); + return true; + } + ); // Keep track of all the events registered in a Safari popup so we can remove // them when the popup gets unloaded, otherwise we cause a memory leak