diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -16,15 +16,18 @@
 
 # Changelog
 
-* 0.1.0.0
-  - Initial version with a subset of ghcjs base
+* 0.2.0.0
+  - Added Semigroup instance to JSString for ghc 8.4.1 and base 4.11.0
 
-* 0.1.0.2
-  - Added JavaScript.Cast
-  - Added Marshall and Callbacks
+* 0.1.0.4
+  - Added Javascript.Web.Location
 
 * 0.1.0.3
   - Added Javascript.Web.Storage
 
-* 0.1.0.4
-  - Added Javascript.Web.Location
+* 0.1.0.2
+  - Added JavaScript.Cast
+  - Added Marshall and Callbacks
+
+* 0.1.0.0
+  - Initial version with a subset of ghcjs base
diff --git a/ghcjs-base-stub.cabal b/ghcjs-base-stub.cabal
--- a/ghcjs-base-stub.cabal
+++ b/ghcjs-base-stub.cabal
@@ -1,5 +1,5 @@
 name:                ghcjs-base-stub
-version:             0.1.0.4
+version:             0.2.0.0
 synopsis:            Allow GHCJS projects to compile under GHC and develop using intero.
 description:         Allow GHCJS projects to compile under GHC and develop using intero.
 homepage:            https://github.com/louispan/javascript-stub#readme
@@ -46,17 +46,17 @@
                        JavaScript.Object.Internal
                        JavaScript.Web.Location
                        JavaScript.Web.Storage
-      build-depends:   aeson >= 0.11 && < 2
-                     , attoparsec >= 0.13 && < 1
+      build-depends:   aeson >= 0.11
+                     , attoparsec >= 0.13
                      , containers ==0.5.*
-                     , deepseq >= 1.4 && < 2
+                     , deepseq >= 1.4
                      , ghc-prim
-                     , primitive >= 0.6 && < 1
-                     , scientific >= 0.3.4 && < 1
-                     , text >= 1.2 && < 2
-                     , transformers >= 0.5 && < 0.6
-                     , unordered-containers >= 0.2.7 && < 1
-                     , vector >= 0.11 && < 1
+                     , primitive >= 0.6
+                     , scientific >= 0.3.4
+                     , text >= 1.2
+                     , transformers >= 0.5
+                     , unordered-containers >= 0.2.7
+                     , vector >= 0.11
   default-language:    Haskell2010
   ghc-options:         -Wall
 
diff --git a/src/Data/JSString/Internal/Type.hs b/src/Data/JSString/Internal/Type.hs
--- a/src/Data/JSString/Internal/Type.hs
+++ b/src/Data/JSString/Internal/Type.hs
@@ -1,18 +1,24 @@
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 module Data.JSString.Internal.Type where
 
-import           Control.DeepSeq                      (NFData(..))
-import           Data.Data
+import Control.DeepSeq (NFData(..))
+import Data.Data
 import qualified Data.Text as T
-import           GHC.Exts as Exts
-import           GHCJS.Internal.Types
-import           GHCJS.Prim
+import GHC.Exts as Exts
+import GHCJS.Internal.Types
+import GHCJS.Prim
 
+#if MIN_VERSION_base(4,11,0)
 newtype JSString = JSString T.Text
+    deriving (Exts.IsString, Monoid, Semigroup, Eq, Ord, Data, Show, Read)
+#else
+newtype JSString = JSString T.Text
     deriving (Exts.IsString, Monoid, Eq, Ord, Data, Show, Read)
+#endif
 
 instance IsJSVal JSString where
     jsval_ _ = JSVal ()
