diff --git a/ghcjs-dom-jsffi.cabal b/ghcjs-dom-jsffi.cabal
--- a/ghcjs-dom-jsffi.cabal
+++ b/ghcjs-dom-jsffi.cabal
@@ -1,6 +1,6 @@
+cabal-version: 3.6
 name: ghcjs-dom-jsffi
-version: 0.9.5.0
-cabal-version: >=1.24
+version: 0.9.9.0
 build-type: Simple
 license: MIT
 license-file: LICENSE
@@ -22,19 +22,21 @@
 
 library
     build-depends: base <5,
-                   transformers >=0.2 && <0.6,
-                   text >= 0.11.0.6 && < 1.3,
+                   transformers >=0.2 && <0.7,
+                   text >= 0.11.0.6 && < 2.2,
                    ghcjs-base >=0.2.0.0 && <0.3,
-                   ghcjs-prim,
                    ghc-prim
 
     default-language: Haskell2010
-    other-extensions: JavaScriptFFI
 
+    if impl(ghcjs)
+        other-extensions: JavaScriptFFI
+        build-depends: ghcjs-prim
+
     hs-source-dirs: src
     cpp-options: -DUSE_JAVASCRIPTFFI
     exposed: True
-    if impl(ghcjs)
+    if impl(ghcjs) || arch(javascript)
         buildable: True
     else
         buildable: False
diff --git a/src/GHCJS/DOM/JSFFI/Geolocation.hs b/src/GHCJS/DOM/JSFFI/Geolocation.hs
--- a/src/GHCJS/DOM/JSFFI/Geolocation.hs
+++ b/src/GHCJS/DOM/JSFFI/Geolocation.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
-             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase #-}
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
 module GHCJS.DOM.JSFFI.Geolocation (
     module Generated
   , js_getCurrentPosition
@@ -12,7 +12,11 @@
 
 import Control.Monad.IO.Class (MonadIO(..))
 
+#if __GHCJS__
 import GHCJS.Prim (JSVal(..))
+#elif defined(javascript_HOST_ARCH)
+import GHC.JS.Prim (JSVal(..))
+#endif
 import GHCJS.DOM.Types
 
 import GHCJS.DOM.JSFFI.PositionError (throwPositionException)
diff --git a/src/GHCJS/DOM/JSFFI/Navigator.hs b/src/GHCJS/DOM/JSFFI/Navigator.hs
--- a/src/GHCJS/DOM/JSFFI/Navigator.hs
+++ b/src/GHCJS/DOM/JSFFI/Navigator.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
-             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase #-}
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
 module GHCJS.DOM.JSFFI.Navigator (
     module Generated
   , js_getUserMedia
@@ -11,7 +11,11 @@
 
 import Control.Monad.IO.Class (MonadIO(..))
 
+#if __GHCJS__
 import GHCJS.Prim (JSVal(..))
+#elif defined(javascript_HOST_ARCH)
+import GHC.JS.Prim (JSVal(..))
+#endif
 import GHCJS.DOM.Types
 
 import GHCJS.DOM.JSFFI.NavigatorUserMediaError (throwUserMediaException)
diff --git a/src/GHCJS/DOM/JSFFI/SQLTransaction.hs b/src/GHCJS/DOM/JSFFI/SQLTransaction.hs
--- a/src/GHCJS/DOM/JSFFI/SQLTransaction.hs
+++ b/src/GHCJS/DOM/JSFFI/SQLTransaction.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
-             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase #-}
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
 module GHCJS.DOM.JSFFI.SQLTransaction (
     module Generated
   , js_executeSql
@@ -14,7 +14,11 @@
 import Control.Monad (void)
 import Control.Monad.IO.Class (MonadIO(..))
 
+#if __GHCJS__
 import GHCJS.Prim (JSVal(..))
+#elif defined(javascript_HOST_ARCH)
+import GHC.JS.Prim (JSVal(..))
+#endif
 import GHCJS.Types (JSString)
 import GHCJS.DOM.Types
 
