diff --git a/CHANGES.markdown b/CHANGES.markdown
--- a/CHANGES.markdown
+++ b/CHANGES.markdown
@@ -1,3 +1,7 @@
+## Changes in 0.12.1 [2021.10.30]
+ - Backport `Solo` to `Data.Tuple.Compat` when building with `ghc-prim-0.7.0`
+   or later
+
 ## Changes in 0.12.0 [2021.08.29]
  - Sync with `base-4.16`/GHC 9.2
  - `Data.Semigroup.Compat{.Repl}` no longer re-exports the `Option` data type
diff --git a/README.markdown b/README.markdown
--- a/README.markdown
+++ b/README.markdown
@@ -274,6 +274,9 @@
 * [`nats`](http://hackage.haskell.org/package/nats)
   for the [`Natural`](http://hackage.haskell.org/package/base-4.8.0.0/docs/Numeric-Natural.html)
   data type, introduced in `base-4.8.0.0`
+* [`OneTuple`](http://hackage.haskell.org/package/OneTuple)
+  for the [`Solo`](https://hackage.haskell.org/package/base-4.16.0.0/docs/Data-Tuple.html#t:Solo)
+  data type, introduced in `ghc-prim-0.7.0`
 * [`semigroups`](http://hackage.haskell.org/package/semigroups)
   for the [`Semigroup`](http://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Semigroup.html#t:Semigroup)
   typeclass and the
diff --git a/base-compat.cabal b/base-compat.cabal
--- a/base-compat.cabal
+++ b/base-compat.cabal
@@ -1,5 +1,5 @@
 name:             base-compat
-version:          0.12.0
+version:          0.12.1
 license:          MIT
 license-file:     LICENSE
 copyright:        (c) 2012-2018 Simon Hengel,
@@ -56,7 +56,8 @@
   default-language:
       Haskell2010
   build-depends:
-      base >= 4.3 && < 5
+      base >= 4.3 && < 5,
+      ghc-prim
   if !os(windows) && !os(halvm)
       build-depends: unix
   ghc-options:
@@ -101,6 +102,7 @@
       Data.Semigroup.Compat
       Data.STRef.Compat
       Data.String.Compat
+      Data.Tuple.Compat
       Data.Type.Coercion.Compat
       Data.Type.Equality.Compat
       Data.Version.Compat
@@ -162,6 +164,7 @@
       Data.Semigroup.Compat.Repl
       Data.STRef.Compat.Repl
       Data.String.Compat.Repl
+      Data.Tuple.Compat.Repl
       Data.Type.Coercion.Compat.Repl
       Data.Type.Equality.Compat.Repl
       Data.Version.Compat.Repl
diff --git a/src/Data/Tuple/Compat.hs b/src/Data/Tuple/Compat.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Tuple/Compat.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE CPP, NoImplicitPrelude #-}
+#if __GLASGOW_HASKELL__ >= 702
+{-# LANGUAGE Safe #-}
+#endif
+module Data.Tuple.Compat
+  ( fst
+  , snd
+  , curry
+  , uncurry
+  , swap
+#if MIN_VERSION_ghc_prim(0,7,0)
+  , Solo(..)
+#endif
+  ) where
+
+import Data.Tuple
+
+#if MIN_VERSION_ghc_prim(0,7,0)
+import GHC.Tuple (Solo(..))
+#endif
diff --git a/src/Data/Tuple/Compat/Repl.hs b/src/Data/Tuple/Compat/Repl.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Tuple/Compat/Repl.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE PackageImports #-}
+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}
+-- | Reexports "Data.Tuple.Compat"
+-- from a globally unique namespace.
+module Data.Tuple.Compat.Repl (
+  module Data.Tuple.Compat
+) where
+import "this" Data.Tuple.Compat
