diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,41 @@
+## Changes in 0.11.0 [2019.09.06]
+ - Reexport `MonadFail(fail)` from `Prelude.Compat` and `Control.Monad.Compat`.
+
+   Because `Prelude.Compat.fail` now corresponds to the `fail` from `MonadFail`
+   instead of `Monad`, some care is required to implement `Monad.fail` on
+   pre-8.8 versions of GHC. The following template is recommended:
+
+   ```haskell
+   import Prelude.Compat
+   import qualified Control.Monad      as Monad
+   import qualified Control.Monad.Fail as Fail
+
+   data Blah a = ...
+
+   instance Functor Blah where ...
+   instance Applicative Blah where ...
+
+   instance Monad.Monad Blah where
+     (>>=) = ...
+   #if !(MIN_VERSION_base(4,13,0))
+     fail = Fail.fail
+   #endif
+
+   instance Fail.MonadFail Blah where
+     fail = ...
+   ```
+
+   This approach is also backwards-compatible with previous releases of
+   `base-compat-batteries`.
+
+ - Introduce the `Data.Type.Equality.Compat` module, which
+   reexports `Data.Type.Equality` from `base` (if using a sufficiently recent
+   version of GHC) or the `type-equality` library (if using an old GHC).
+
+ - This coincides with the `base-compat-0.11.0` release. Refer to the
+   [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0110-20190906)
+   for more details.
+
 ## Changes in 0.10.5 [2018.10.18]
  - This coincides with the `base-compat-0.10.5` release. Refer to the
    [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0105-20181018)
diff --git a/base-compat-batteries.cabal b/base-compat-batteries.cabal
--- a/base-compat-batteries.cabal
+++ b/base-compat-batteries.cabal
@@ -1,5 +1,5 @@
 name:             base-compat-batteries
-version:          0.10.5
+version:          0.11.0
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2012-2018 Simon Hengel,
@@ -44,6 +44,7 @@
                   , GHC == 8.2.*
                   , GHC == 8.4.*
                   , GHC == 8.6.*
+                  , GHC == 8.8.*
 extra-source-files: CHANGES.markdown, README.markdown
 
 source-repository head
@@ -56,7 +57,7 @@
       -Wall
   build-depends:
       base        >= 4.3 && < 5,
-      base-compat == 0.10.5
+      base-compat == 0.11.0
   if !impl(ghc >= 7.8)
     build-depends:
       tagged >= 0.8.5 && < 0.9
@@ -67,12 +68,13 @@
   if !impl(ghc >= 8.0)
     build-depends:
       fail                >= 4.9.0.0 && < 4.10,
-      semigroups          >= 0.18.4  && < 0.19,
+      semigroups          >= 0.18.4  && < 0.20,
       transformers        >= 0.2     && < 0.6,
       transformers-compat >= 0.6     && < 0.7
   if !impl(ghc >= 8.2)
     build-depends:
-      bifunctors >= 5.5.2 && < 5.6
+      bifunctors           >= 5.5.2 && < 5.6,
+      type-equality        >= 1     && < 1.1
   if !impl(ghc >= 8.6)
     build-depends:
       contravariant >= 1.5 && < 1.6
@@ -117,6 +119,7 @@
       Data.STRef.Compat
       Data.String.Compat
       Data.Type.Coercion.Compat
+      Data.Type.Equality.Compat
       Data.Version.Compat
       Data.Void.Compat
       Data.Word.Compat
@@ -174,6 +177,7 @@
       Data.STRef.Compat.Repl.Batteries
       Data.String.Compat.Repl.Batteries
       Data.Type.Coercion.Compat.Repl.Batteries
+      Data.Type.Equality.Compat.Repl.Batteries
       Data.Version.Compat.Repl.Batteries
       Data.Void.Compat.Repl.Batteries
       Data.Word.Compat.Repl.Batteries
diff --git a/src/Control/Monad/Compat.hs b/src/Control/Monad/Compat.hs
--- a/src/Control/Monad/Compat.hs
+++ b/src/Control/Monad/Compat.hs
@@ -1,6 +1,8 @@
 {-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}
 module Control.Monad.Compat (
   module Base
-  ) where
+, fail
+) where
 
-import "base-compat" Control.Monad.Compat as Base
+import "base-compat" Control.Monad.Compat as Base hiding (fail)
+import Control.Monad.Fail (fail)
diff --git a/src/Data/Type/Equality/Compat.hs b/src/Data/Type/Equality/Compat.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Type/Equality/Compat.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Trustworthy #-}
+#endif
+#if __GLASGOW_HASKELL__ >= 708
+{-# LANGUAGE ExplicitNamespaces #-}
+#endif
+module Data.Type.Equality.Compat (
+  -- * The equality types
+  (:~:)(..),
+#if __GLASGOW_HASKELL__ >= 800
+  type (~~),
+#endif
+#if __GLASGOW_HASKELL__ >= 800
+  (:~~:)(..),
+#endif
+
+  -- * Working with equality
+  sym, trans, castWith, gcastWith,
+#if __GLASGOW_HASKELL__ >= 706
+    apply,
+#endif
+    inner,
+#if __GLASGOW_HASKELL__ >= 706
+    outer,
+#endif
+
+  -- * Inferring equality from other types
+  TestEquality(..),
+
+#if __GLASGOW_HASKELL__ >= 708
+  -- * Boolean type-level equality
+  type (==),
+#endif
+) where
+
+#if MIN_VERSION_base(4,7,0)
+import "base" Data.Type.Equality
+#else
+import "type-equality" Data.Type.Equality
+#endif
+
+#if MIN_VERSION_base(4,9,0) && !MIN_VERSION_base(4,10,0)
+import "type-equality" Data.Type.Equality.Hetero
+#endif
diff --git a/src/Data/Type/Equality/Compat/Repl/Batteries.hs b/src/Data/Type/Equality/Compat/Repl/Batteries.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Type/Equality/Compat/Repl/Batteries.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE PackageImports #-}
+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}
+-- | Reexports "Data.Type.Equality.Compat"
+-- from a globally unique namespace.
+module Data.Type.Equality.Compat.Repl.Batteries (
+  module Data.Type.Equality.Compat
+) where
+import "this" Data.Type.Equality.Compat
diff --git a/src/Prelude/Compat.hs b/src/Prelude/Compat.hs
--- a/src/Prelude/Compat.hs
+++ b/src/Prelude/Compat.hs
@@ -2,12 +2,17 @@
 module Prelude.Compat (
   module Base
 #if !(MIN_VERSION_base(4,9,0))
+, Fail.MonadFail(Fail.fail)
 , Semi.Semigroup((Semi.<>))
 #endif
 ) where
 
 import "base-compat" Prelude.Compat as Base
+#if !(MIN_VERSION_base(4,9,0))
+  hiding (fail)
+#endif
 
 #if !(MIN_VERSION_base(4,9,0))
+import "fail"       Control.Monad.Fail as Fail
 import "semigroups" Data.Semigroup as Semi
 #endif
diff --git a/test/SafeHaskellSpec.hs b/test/SafeHaskellSpec.hs
--- a/test/SafeHaskellSpec.hs
+++ b/test/SafeHaskellSpec.hs
@@ -39,6 +39,7 @@
 import Data.STRef.Compat ()
 import Data.String.Compat ()
 import Data.Type.Coercion.Compat ()
+import Data.Type.Equality.Compat ()
 import Data.Version.Compat ()
 import Data.Void.Compat ()
 import Data.Word.Compat ()
