diff --git a/hsx2hs.cabal b/hsx2hs.cabal
--- a/hsx2hs.cabal
+++ b/hsx2hs.cabal
@@ -1,5 +1,5 @@
 Name:                   hsx2hs
-Version:                0.11.0
+Version:                0.12.0
 License:                BSD3
 License-File:           LICENSE
 Author:                 Niklas Broberg, Joel Bjornson
@@ -44,7 +44,7 @@
   Build-depends:	mtl              >= 2.0 && < 2.2,
                         haskell-src-exts >= 1.13,
                         haskell-src-meta >= 0.6 && < 0.7,
-                        template-haskell == 2.7.*,
+                        template-haskell >= 2.7 && < 2.9,
                         utf8-string      == 0.3.*
 
   if flag(base4)
diff --git a/src/Language/Haskell/HSX/Transform.hs b/src/Language/Haskell/HSX/Transform.hs
--- a/src/Language/Haskell/HSX/Transform.hs
+++ b/src/Language/Haskell/HSX/Transform.hs
@@ -267,7 +267,7 @@
 
     -- PCDATA should be lifted as a string into the XML datatype.
     XPcdata pcdata    -> do setXmlTransformed
-                            return $ ExpTypeSig noLoc (strE pcdata) (TyCon (UnQual (Ident "String")))
+                            return $ ExpTypeSig noLoc (strE pcdata) (TyCon (UnQual (Ident "Text")))
     -- Escaped expressions should be treated as just expressions.
     XExpTag e     -> do setXmlTransformed
                         e' <- transformExpM e
@@ -408,10 +408,10 @@
 
 mkAttr :: XAttr -> Exp
 mkAttr (XAttr name e) =
-    paren (metaMkName name `metaAssign` (stringTypeSig e))
+    paren (metaMkName name `metaAssign` (textTypeSig e))
     where
-      stringTypeSig e@(Lit (String _)) = ExpTypeSig noLoc e (TyCon (UnQual (Ident "String")))
-      stringTypeSig e                  = e
+      textTypeSig e@(Lit (String _)) = ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))
+      textTypeSig e                  = e
 
 -- | Transform pattern bind declarations inside a @let@-expression by transforming
 -- subterms that could appear as regular patterns, as well as transforming the bound
@@ -1915,7 +1915,7 @@
 
 -- | Create an attribute by applying the overloaded @asAttr@
 metaAsAttr :: Exp -> Exp
-metaAsAttr e@(Lit (String _)) = metaFunction "asAttr" [ExpTypeSig noLoc e (TyCon (UnQual (Ident "String")))]
+metaAsAttr e@(Lit (String _)) = metaFunction "asAttr" [ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))]
 metaAsAttr e = metaFunction "asAttr" [e]
 
 argAsAttr :: Exp
@@ -1955,8 +1955,8 @@
 
 metaMkName :: XName -> Exp
 metaMkName n = case n of
-    XName s      -> stringTypeSig (strE s)
-    XDomName d s -> tuple [stringTypeSig $ strE d, stringTypeSig $ strE s]
+    XName s      -> textTypeSig (strE s)
+    XDomName d s -> tuple [textTypeSig $ strE d, textTypeSig $ strE s]
     where
-      stringTypeSig e = ExpTypeSig noLoc e (TyCon (UnQual (Ident "String")))
+      textTypeSig e = ExpTypeSig noLoc e (TyCon (UnQual (Ident "Text")))
 
