diff --git a/src/common/contentScriptsUtils.js b/src/common/contentScriptsUtils.js
deleted file mode 100644
index 51257c0..0000000
--- a/src/common/contentScriptsUtils.js
+++ /dev/null
@@ -1,21 +0,0 @@
-export function injectStylesheet(stylesheetName, attributes = {}) {
-  var link = document.createElement('link');
-  link.setAttribute('rel', 'stylesheet');
-  link.setAttribute('href', stylesheetName);
-  if ('media' in attributes) link.setAttribute('media', attributes['media']);
-  document.head.appendChild(link);
-}
-
-export function injectStyles(css) {
-  injectStylesheet('data:text/css;charset=UTF-8,' + encodeURIComponent(css));
-}
-
-export function injectScript(scriptName, prepend = false) {
-  var script = document.createElement('script');
-  script.src = scriptName;
-  const root = (document.head || document.documentElement);
-  if (prepend)
-    root.prepend(script);
-  else
-    root.append(script);
-}
diff --git a/src/common/contentScriptsUtils.ts b/src/common/contentScriptsUtils.ts
new file mode 100644
index 0000000..588e4af
--- /dev/null
+++ b/src/common/contentScriptsUtils.ts
@@ -0,0 +1,32 @@
+export interface StylesheetAttributes {
+  media?: string;
+}
+
+export function injectStylesheet(
+  stylesheetName: string,
+  attributes: StylesheetAttributes = {},
+) {
+  var link = document.createElement('link');
+  link.setAttribute('rel', 'stylesheet');
+  link.setAttribute('href', stylesheetName);
+  if ('media' in attributes) {
+    link.setAttribute('media', attributes['media']);
+  }
+  document.head.appendChild(link);
+  return link;
+}
+
+export function injectStyles(css: string) {
+  injectStylesheet('data:text/css;charset=UTF-8,' + encodeURIComponent(css));
+}
+
+export function injectScript(scriptName: string, prepend = false) {
+  var script = document.createElement('script');
+  script.src = scriptName;
+  const root = document.head || document.documentElement;
+  if (prepend) {
+    root.prepend(script);
+  } else {
+    root.append(script);
+  }
+}
diff --git a/src/contentScripts/communityConsole/main.js b/src/contentScripts/communityConsole/main.js
index 32576e4..22e35f7 100644
--- a/src/contentScripts/communityConsole/main.js
+++ b/src/contentScripts/communityConsole/main.js
@@ -1,4 +1,4 @@
-import {injectScript, injectStyles, injectStylesheet} from '../../common/contentScriptsUtils.js';
+import {injectScript, injectStyles, injectStylesheet} from '../../common/contentScriptsUtils';
 import {getOptions} from '../../common/options/optionsUtils.js';
 import XHRProxyKillSwitchHandler from '../../xhrInterceptor/killSwitchHandler.js';
 import {injectPreviousPostsLinksUnifiedProfileIfEnabled} from '../utilsCommon/unifiedProfiles.js';
diff --git a/src/contentScripts/communityConsole/start.js b/src/contentScripts/communityConsole/start.js
index cace3aa..2f8ba2a 100644
--- a/src/contentScripts/communityConsole/start.js
+++ b/src/contentScripts/communityConsole/start.js
@@ -1,4 +1,4 @@
-import {injectStylesheet} from '../../common/contentScriptsUtils.js';
+import {injectStylesheet} from '../../common/contentScriptsUtils';
 import {getOptions} from '../../common/options/optionsUtils.js';
 
 import FlattenThreadsReplyActionHandler from './flattenThreads/replyActionHandler.js';
diff --git a/src/contentScripts/communityConsole/updateHandler/index.js b/src/contentScripts/communityConsole/updateHandler/index.js
index b976b24..48d0ce1 100644
--- a/src/contentScripts/communityConsole/updateHandler/index.js
+++ b/src/contentScripts/communityConsole/updateHandler/index.js
@@ -1,4 +1,4 @@
-import {injectScript} from '../../../common/contentScriptsUtils.js';
+import {injectScript} from '../../../common/contentScriptsUtils';
 import MWI18nServer from '../../../common/mainWorldI18n/Server.js';
 
 import UpdateBanner from './banner/index.js';
diff --git a/src/contentScripts/profileIndicator.js b/src/contentScripts/profileIndicator.js
index 74fc2e7..ef789f8 100644
--- a/src/contentScripts/profileIndicator.js
+++ b/src/contentScripts/profileIndicator.js
@@ -1,4 +1,4 @@
-import {injectScript, injectStylesheet} from '../common/contentScriptsUtils.js';
+import {injectScript, injectStylesheet} from '../common/contentScriptsUtils';
 import {setUpListener} from '../common/csEventListener.js';
 
 setUpListener();
diff --git a/src/contentScripts/publicProfileStart.js b/src/contentScripts/publicProfileStart.js
index fbe6540..cc7277c 100644
--- a/src/contentScripts/publicProfileStart.js
+++ b/src/contentScripts/publicProfileStart.js
@@ -1,4 +1,4 @@
-import {injectScript} from '../common/contentScriptsUtils.js';
+import {injectScript} from '../common/contentScriptsUtils';
 import {getOptions} from '../common/options/optionsUtils.js';
 
 getOptions('perforumstats').then(options => {
diff --git a/src/contentScripts/publicThread.js b/src/contentScripts/publicThread.js
index bc12236..b5864cd 100644
--- a/src/contentScripts/publicThread.js
+++ b/src/contentScripts/publicThread.js
@@ -1,4 +1,4 @@
-import {injectStylesheet} from '../common/contentScriptsUtils.js';
+import {injectStylesheet} from '../common/contentScriptsUtils';
 import {getOptions} from '../common/options/optionsUtils.js';
 import {redirectIfApplicable} from '../redirect/index.js';
 
diff --git a/src/contentScripts/publicThreadStart.js b/src/contentScripts/publicThreadStart.js
index a95485b..40cd302 100644
--- a/src/contentScripts/publicThreadStart.js
+++ b/src/contentScripts/publicThreadStart.js
@@ -1,4 +1,4 @@
-import {injectStylesheet} from '../common/contentScriptsUtils.js';
+import {injectStylesheet} from '../common/contentScriptsUtils';
 import {getOptions} from '../common/options/optionsUtils.js';
 import {setUpRedirectIfEnabled} from '../redirect/setup.js';
 
diff --git a/src/features/workflows/core/communityConsole/import.js b/src/features/workflows/core/communityConsole/import.js
index 92abaee..5fde499 100644
--- a/src/features/workflows/core/communityConsole/import.js
+++ b/src/features/workflows/core/communityConsole/import.js
@@ -1,7 +1,7 @@
 import {waitFor} from 'poll-until-promise';
 
 import {recursiveParentElement} from '../../../../common/commonUtils.js';
-import {injectStylesheet} from '../../../../common/contentScriptsUtils.js';
+import {injectStylesheet} from '../../../../common/contentScriptsUtils';
 import {isOptionEnabled} from '../../../../common/options/optionsUtils.js';
 
 const kListCannedResponsesResponse = 'TWPT_ListCannedResponsesResponse';
diff --git a/src/injections/litComponentsInject.js b/src/injections/litComponentsInject.js
index b1c40cf..ce8ace8 100644
--- a/src/injections/litComponentsInject.js
+++ b/src/injections/litComponentsInject.js
@@ -7,7 +7,7 @@
 import '../contentScripts/communityConsole/flattenThreads/components/index.js';
 import '../contentScripts/communityConsole/updateHandler/banner/components/index.js';
 
-import {injectStylesheet} from '../common/contentScriptsUtils.js';
+import {injectStylesheet} from '../common/contentScriptsUtils';
 
 // Also, we import Material Symbols Outlined since the Community Console uses
 // "Google Material Icons" instead. This is necessary for the MD3 components.
diff --git a/src/injections/updateHandlerLitComponents.js b/src/injections/updateHandlerLitComponents.js
index e6449f5..8faef99 100644
--- a/src/injections/updateHandlerLitComponents.js
+++ b/src/injections/updateHandlerLitComponents.js
@@ -1,6 +1,6 @@
 import '../contentScripts/communityConsole/updateHandler/banner/components/index.js';
 
-import {injectStylesheet} from '../common/contentScriptsUtils.js';
+import {injectStylesheet} from '../common/contentScriptsUtils';
 
 // This is necessary for the MD3 components. It is also done in
 // litComponentsInject.js, but when installing the extension
