diff --git a/src/killSwitch/internalKillSwitchWatcher.js b/src/killSwitch/internalKillSwitchWatcher.js
new file mode 100644
index 0000000..86ae5cb
--- /dev/null
+++ b/src/killSwitch/internalKillSwitchWatcher.js
@@ -0,0 +1,46 @@
+import {getForceDisabledFeatures} from '../common/optionsUtils.js';
+
+/**
+ * Watches for changes to an internal kill switch and calls a callback when a
+ * change is detected.
+ */
+export default class InternalKillSwitchWatcher {
+  /**
+   * @param {string} killSwitch - The internal kill switch codename.
+   * @param {changeCallback} callback - The callback which is called when a
+   *     change is detected.
+   * @param {boolean} callbackOnFirstLoad - Whether the callback should be
+   *     called after first loading which is the current state of the kill
+   *     switch.
+   */
+  constructor(killSwitch, callback, callbackOnFirstLoad = true) {
+    this.watchedKillSwitch = killSwitch;
+    this.isActive = null;
+    this.callback = callback;
+    this.#setChangeListener();
+    this.#firstLoadGetValue(callbackOnFirstLoad);
+  }
+
+  #setChangeListener() {
+    chrome.storage.onChanged.addListener((changes, areaName) => {
+      const change = changes?.['_forceDisabledFeatures'];
+      if (areaName !== 'sync' || change === undefined) return;
+      const newValue = change.newValue.includes(this.watchedKillSwitch);
+      const hasChanged = newValue !== this.isActive;
+      this.isActive = newValue;
+      if (hasChanged) this.callback(this.isActive);
+    });
+  }
+
+  async #firstLoadGetValue(callbackOnFirstLoad) {
+    const activeKillSwitches = await getForceDisabledFeatures();
+    this.isActive = activeKillSwitches.includes(this.watchedKillSwitch);
+    if (callbackOnFirstLoad) this.callback(this.isActive);
+  }
+}
+
+/**
+ * Callback which receives changes to the kill switch active state.
+ * @callback changeCallback
+ * @param {boolean} Whether the kill switch is currently active.
+ */
