// extensionId можно не указывать, если мы хотим послать сообщение 'своему' расширению (из ui или контент скрипта)
chrome.runtime.sendMessage(extensionId, msg);
// Так выглядит обработчик
chrome.runtime.onMessage.addListener((msg) => console.log(msg))
// Можно слать сообщения вкладкам зная их id
chrome.tabs.sendMessage(tabId, msg)
смысл в том что 1 символ юникода = 1 байт
а смайлы emoji и спец символы могут быть 2 байта или 4 байта, js определяет все по 2 байта а пых начинает возвращать бредятину.
как простой вариант