Had another question on my website today about Next.js and custom scripts. This one bothered me a while ago too and I had a similar hack to the dev reaching out.
I had placed an “Immediately Invoked Function” inside a useEffect on my _app.js page.
Don’t Do This
useEffect(() => {
  var Tawk_API = Tawk_API || {},
    Tawk_LoadStart = new Date();
  (function () {
    var s1 = document.createElement("script"),
      s0 = document.getElementsByTagName("script")[0];
    s1.async = true;
    s1.src = "https://embed.tawk.to/60...";
    s1.charset = "UTF-8";
    s1.setAttribute("crossorigin", "*");
    s0.parentNode.insertBefore(s1, s0);
  })();
}, []);
This was to have a chatbox on my, on every page.
Placing the code inside the Head module that’s built into Next now produces an error and provides a solution by using the Script module…which is also built-in.
This makes life a lot simpler. We can now create a separate file, paste our 3rd party script and link to it using the Script module.
Do This
pages/
public/
├─ chatbot/
│ ├─ script.js
Then using this script across the entire app
import Script from "next/script";
function MyApp({ Component, pageProps }) {
  return (
    <>
      <Script type="text/javascript" src="/chatbot/script.js" />
      <Component {...pageProps} />
    </>
  );
}
export default MyApp;