diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.12.8
+
+* Add (<&&>),(<||>) [#125](https://github.com/snoyberg/classy-prelude/pull/125)
+
 ## 0.12.7
 
 * Concurrency: reexport `Control.Concurrent.Lifted` and provide `yieldThread`
diff --git a/ClassyPrelude.hs b/ClassyPrelude.hs
--- a/ClassyPrelude.hs
+++ b/ClassyPrelude.hs
@@ -16,6 +16,8 @@
     , module Data.Functor
       -- ** Applicative
     , module Control.Applicative
+    , (<&&>)
+    , (<||>)
       -- ** Monad
     , module Control.Monad
     , whenM
@@ -667,3 +669,19 @@
 applyDList :: DList a -> [a] -> [a]
 applyDList = DList.apply
 {-# INLINE applyDList #-}
+
+infixr 3 <&&>
+-- | '&&' lifted to an Applicative.
+--
+-- @since 0.12.8
+(<&&>) :: Applicative a => a Bool -> a Bool -> a Bool
+(<&&>) = liftA2 (&&)
+{-# INLINE (<&&>) #-}
+
+infixr 2 <||>
+-- | '||' lifted to an Applicative.
+--
+-- @since 0.12.8
+(<||>) :: Applicative a => a Bool -> a Bool -> a Bool
+(<||>) = liftA2 (||)
+{-# INLINE (<||>) #-}
diff --git a/classy-prelude.cabal b/classy-prelude.cabal
--- a/classy-prelude.cabal
+++ b/classy-prelude.cabal
@@ -1,5 +1,5 @@
 name:                classy-prelude
-version:             0.12.7
+version:             0.12.8
 synopsis:            A typeclass-based Prelude.
 description:         Modern best practices without name collisions. No partial functions are exposed, but modern data structures are, without requiring import lists. Qualified modules also are not needed: instead operations are based on type-classes from the mono-traversable package.
 
