diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+### 3.11.2 [2025.06.17]
+* Support building with the GHC JavaScript backend.
+
 ### 3.11.1 [2024.12.28]
 * Make the test suite pass with `base-4.21.*` (GHC 9.12).
 
diff --git a/src/TextShow/GHC/Conc/Windows.hs b/src/TextShow/GHC/Conc/Windows.hs
--- a/src/TextShow/GHC/Conc/Windows.hs
+++ b/src/TextShow/GHC/Conc/Windows.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE CPP             #-}
 
-#if !defined(__GHCJS__) && defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && defined(mingw32_HOST_OS)
 {-# LANGUAGE TemplateHaskell #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
 #endif
@@ -19,7 +19,7 @@
 -}
 module TextShow.GHC.Conc.Windows () where
 
-#if !defined(__GHCJS__) && defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && defined(mingw32_HOST_OS)
 import GHC.Conc.Windows (ConsoleEvent)
 import TextShow.TH.Internal (deriveTextShow)
 
diff --git a/src/TextShow/GHC/Event.hs b/src/TextShow/GHC/Event.hs
--- a/src/TextShow/GHC/Event.hs
+++ b/src/TextShow/GHC/Event.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE CPP             #-}
 
-#if !defined(__GHCJS__) && !defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && !defined(mingw32_HOST_OS)
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TemplateHaskell   #-}
 {-# OPTIONS_GHC -Wno-orphans #-}
@@ -20,7 +20,7 @@
 -}
 module TextShow.GHC.Event () where
 
-#if !defined(__GHCJS__) && !defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && !defined(mingw32_HOST_OS)
 import Data.List (intersperse)
 import Data.Maybe (catMaybes)
 import Data.Text.Lazy.Builder (Builder, singleton)
diff --git a/tests/Instances/GHC/Conc/Windows.hs b/tests/Instances/GHC/Conc/Windows.hs
--- a/tests/Instances/GHC/Conc/Windows.hs
+++ b/tests/Instances/GHC/Conc/Windows.hs
@@ -14,7 +14,7 @@
 -}
 module Instances.GHC.Conc.Windows () where
 
-#if !defined(__GHCJS__) && defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && defined(mingw32_HOST_OS)
 import GHC.Conc.Windows (ConsoleEvent(..))
 import Test.QuickCheck (Arbitrary(..), arbitraryBoundedEnum)
 
diff --git a/tests/Instances/GHC/Event.hs b/tests/Instances/GHC/Event.hs
--- a/tests/Instances/GHC/Event.hs
+++ b/tests/Instances/GHC/Event.hs
@@ -14,7 +14,7 @@
 -}
 module Instances.GHC.Event () where
 
-#if !defined(__GHCJS__) && !defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && !defined(mingw32_HOST_OS)
 import GHC.Event (Event, Lifetime(..), evtRead, evtWrite)
 
 import Prelude ()
diff --git a/tests/Spec/GHC/Conc/WindowsSpec.hs b/tests/Spec/GHC/Conc/WindowsSpec.hs
--- a/tests/Spec/GHC/Conc/WindowsSpec.hs
+++ b/tests/Spec/GHC/Conc/WindowsSpec.hs
@@ -19,7 +19,7 @@
 
 import Test.Hspec (Spec, hspec, parallel)
 
-#if !defined(__GHCJS__) && defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && defined(mingw32_HOST_OS)
 import Data.Proxy (Proxy(..))
 import GHC.Conc.Windows (ConsoleEvent)
 import Spec.Utils (matchesTextShowSpec)
@@ -31,7 +31,7 @@
 
 spec :: Spec
 spec = parallel $
-#if !defined(__GHCJS__) && defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && defined(mingw32_HOST_OS)
     describe "ConsoleEvent" $
         matchesTextShowSpec (Proxy :: Proxy ConsoleEvent)
 #else
diff --git a/tests/Spec/GHC/EventSpec.hs b/tests/Spec/GHC/EventSpec.hs
--- a/tests/Spec/GHC/EventSpec.hs
+++ b/tests/Spec/GHC/EventSpec.hs
@@ -19,7 +19,7 @@
 
 import Test.Hspec (Spec, hspec, parallel)
 
-#if !defined(__GHCJS__) && !defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && !defined(mingw32_HOST_OS)
 import Data.Proxy (Proxy(..))
 
 import GHC.Event (Event, Lifetime)
@@ -35,7 +35,7 @@
 
 spec :: Spec
 spec = parallel $ do
-#if !defined(__GHCJS__) && !defined(mingw32_HOST_OS)
+#if !defined(__GHCJS__) && !defined(ghcjs_HOST_OS) && !defined(mingw32_HOST_OS)
     describe "Event" $
         matchesTextShowSpec (Proxy :: Proxy Event)
 --     describe "FdKey" $
diff --git a/text-show.cabal b/text-show.cabal
--- a/text-show.cabal
+++ b/text-show.cabal
@@ -1,5 +1,5 @@
 name:                text-show
-version:             3.11.1
+version:             3.11.2
 synopsis:            Efficient conversion of values into Text
 description:         @text-show@ offers a replacement for the @Show@ typeclass intended
                      for use with @Text@ instead of @String@s. This package was created
@@ -61,10 +61,10 @@
                    , GHC == 9.0.2
                    , GHC == 9.2.8
                    , GHC == 9.4.8
-                   , GHC == 9.6.6
-                   , GHC == 9.8.2
-                   , GHC == 9.10.1
-                   , GHC == 9.12.1
+                   , GHC == 9.6.7
+                   , GHC == 9.8.4
+                   , GHC == 9.10.2
+                   , GHC == 9.12.2
 extra-source-files:  CHANGELOG.md, README.md
 cabal-version:       >=1.10
 
@@ -154,7 +154,7 @@
                      , base-compat-batteries >= 0.11     && < 0.15
                      , bifunctors            >= 5.1      && < 6
                      , bytestring            >= 0.10.8.1 && < 0.13
-                     , containers            >= 0.1      && < 0.8
+                     , containers            >= 0.1      && < 0.9
                      , ghc-boot-th           >= 8.0      && < 9.13
                      , ghc-prim
                      , template-haskell      >= 2.11     && < 2.24
@@ -310,7 +310,7 @@
                      , generic-deriving      >= 1.14.1   && < 2
                      , ghc-prim
                      , hspec                 >= 2        && < 3
-                     , QuickCheck            >= 2.14.3   && < 2.16
+                     , QuickCheck            >= 2.14.3   && < 2.17
                      , quickcheck-instances  >= 0.3.28   && < 0.4
                      , template-haskell      >= 2.11     && < 2.24
                      , text                  >= 1.1      && < 2.2
