diff --git a/src/common/extUtils.js b/src/common/extUtils.js
index 1777c87..e47a74c 100644
--- a/src/common/extUtils.js
+++ b/src/common/extUtils.js
@@ -1,11 +1,3 @@
-// This method is based on the fact that when building the extension for Firefox
-// the browser_specific_settings.gecko entry is included.
-export function isFirefox() {
-  var manifest = chrome.runtime.getManifest();
-  return manifest.browser_specific_settings !== undefined &&
-      manifest.browser_specific_settings.gecko !== undefined;
-}
-
 // Returns whether the extension is a release version.
 export function isReleaseVersion() {
   var manifest = chrome.runtime.getManifest();
diff --git a/src/common/optionsPrototype.json5 b/src/common/optionsPrototype.json5
index 38cfaca..824b754 100644
--- a/src/common/optionsPrototype.json5
+++ b/src/common/optionsPrototype.json5
@@ -75,11 +75,13 @@
     context: 'options',
     killSwitchType: 'option',
   },
+  // #!if ['chromium', 'chromium_mv3'].includes(browser_target)
   'ccdragndropfix': {
     defaultValue: false,
     context: 'options',
     killSwitchType: 'option',
   },
+  // #!endif
   'batchlock': {
     defaultValue: false,
     context: 'options',
diff --git a/src/common/specialOptions.json5 b/src/common/specialOptions.json5
index 55dde20..37b69fa 100644
--- a/src/common/specialOptions.json5
+++ b/src/common/specialOptions.json5
@@ -2,5 +2,4 @@
   'profileindicatoralt_months',
   'ccdarktheme_mode',
   'ccdarktheme_switch_enabled',
-  'ccdragndropfix',
 ]
diff --git a/src/contentScripts/communityConsole/main.js b/src/contentScripts/communityConsole/main.js
index fe075d9..cc55aa4 100644
--- a/src/contentScripts/communityConsole/main.js
+++ b/src/contentScripts/communityConsole/main.js
@@ -5,7 +5,9 @@
 import AvatarsHandler from './avatars.js';
 import {batchLock} from './batchLock.js';
 import {injectDarkModeButton, isDarkThemeOn} from './darkMode.js';
+// #!if ['chromium', 'chromium_mv3'].includes(browser_target)
 import {applyDragAndDropFixIfEnabled} from './dragAndDropFix.js';
+// #!endif
 import {unifiedProfilesFix} from './unifiedProfiles.js';
 
 var mutationObserver, intersectionObserver, intersectionOptions, options,
@@ -94,6 +96,7 @@
           /* isCommunityConsole = */ true);
     }
 
+    // #!if ['chromium', 'chromium_mv3'].includes(browser_target)
     // Fix the drag&drop issue with the rich text editor if the option is
     // currently enabled.
     //
@@ -107,6 +110,7 @@
          node.tagName == 'EC-RICH-TEXT-EDITOR')) {
       applyDragAndDropFixIfEnabled(node);
     }
+    // #!endif
 
     // Inject the batch lock button in the thread list if the option is
     // currently enabled.
diff --git a/src/killSwitch/index.js b/src/killSwitch/index.js
index 1456a51..f0b1294 100644
--- a/src/killSwitch/index.js
+++ b/src/killSwitch/index.js
@@ -1,6 +1,6 @@
 import {compareLoose} from 'semver';
 
-import {getExtVersion, isFirefox} from '../common/extUtils.js';
+import {getExtVersion} from '../common/extUtils.js';
 
 import * as commonPb from './api_proto/common_pb.js';
 import {KillSwitchServicePromiseClient} from './api_proto/kill_switch_grpc_web_pb.js';
@@ -16,8 +16,11 @@
   }
 
   getCurrentBrowser() {
-    if (isFirefox()) return commonPb.Environment.Browser.BROWSER_GECKO;
+    // #!if browser_target == 'gecko'
+    return commonPb.Environment.Browser.BROWSER_GECKO;
+    // #!else
     return commonPb.Environment.Browser.BROWSER_CHROMIUM;
+    // #!endif
   }
 
   updateKillSwitchStatus() {
diff --git a/src/options/optionsCommon.js b/src/options/optionsCommon.js
index bd40416..863232d 100644
--- a/src/options/optionsCommon.js
+++ b/src/options/optionsCommon.js
@@ -1,4 +1,4 @@
-import {getExtVersion, isFirefox, isReleaseVersion} from '../common/extUtils.js';
+import {getExtVersion, isReleaseVersion} from '../common/extUtils.js';
 import {ensureOptPermissions, grantedOptPermissions, missingPermissions} from '../common/optionsPermissions.js';
 import {cleanUpOptions, optionsPrototype, specialOptions} from '../common/optionsUtils.js';
 
@@ -35,9 +35,6 @@
       case 'ccdarktheme_mode':
         return document.getElementById(opt).value || 'switch';
 
-      case 'ccdragndropfix':
-        return document.getElementById(opt).checked || false;
-
       default:
         console.warn('Unrecognized option: ' + opt);
         return undefined;
@@ -232,19 +229,6 @@
                 .appendChild(select);
             break;
 
-          // Firefox doesn't support drag and dropping bookmarks into the text
-          // editor while preserving the bookmark title.
-          case 'ccdragndropfix':
-            var showOption = !isFirefox();
-            if (showOption) {
-              document.getElementById('dragndrop-wrapper')
-                  .removeAttribute('hidden');
-
-              if (items[opt] === true)
-                document.getElementById(opt).checked = true;
-            }
-            break;
-
           default:
             console.warn('Unrecognized option: ' + opt);
             break;
diff --git a/src/options/optionsPage.json5 b/src/options/optionsPage.json5
index 24bafdd..a06819a 100644
--- a/src/options/optionsPage.json5
+++ b/src/options/optionsPage.json5
@@ -36,7 +36,9 @@
         {codename: 'increasecontrast'},
         {codename: 'stickysidebarheaders'},
         {codename: 'ccforcehidedrawer'},
-        {codename: 'ccdragndropfix', customHTML: '<div id="dragndrop-wrapper" class="option" hidden><input type="checkbox" id="ccdragndropfix"> <label for="ccdragndropfix" data-i18n="ccdragndropfix"></label></div>'},
+        // #!if ['chromium', 'chromium_mv3'].includes(browser_target)
+        {codename: 'ccdragndropfix'},
+        // #!endif
         {codename: 'enhancedannouncementsdot'},
         {codename: 'repositionexpandthread', experimental: true},
         {codename: 'imagemaxheight'},
