diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@
 * **0.3.4.4**: (*September 25, 2021*)
     * `Alt` instances for `NEMap` and `NEIntMap`
     * `Invariant` instance for `NEMap`, `NEIntMap`, and `NESeq`.
+* **0.3.4.5**: Future-proof against Prelude exporting `foldl'` (@Bodgrim) (*December 6, 2023*)
 
 Version 0.3.3.0
 ---------------
diff --git a/nonempty-containers.cabal b/nonempty-containers.cabal
--- a/nonempty-containers.cabal
+++ b/nonempty-containers.cabal
@@ -1,13 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.2.
+-- This file has been generated from package.yaml by hpack version 0.35.2.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: bb13585a77cf2559f37215ac9805633bb0d48afb450f60b68bbad03aa7770ac4
 
 name:           nonempty-containers
-version:        0.3.4.4
+version:        0.3.4.5
 synopsis:       Non-empty variants of containers data types, with full API
 description:    Efficient and optimized non-empty versions of types from /containers/.
                 Inspired by /non-empty-containers/ library, except attempting a more
@@ -23,8 +21,9 @@
 copyright:      (c) Justin Le 2018
 license:        BSD3
 license-file:   LICENSE
-tested-with:    GHC >= 8.4
 build-type:     Simple
+tested-with:
+    GHC >= 8.4
 extra-source-files:
     README.md
     CHANGELOG.md
diff --git a/src/Data/IntMap/NonEmpty.hs b/src/Data/IntMap/NonEmpty.hs
--- a/src/Data/IntMap/NonEmpty.hs
+++ b/src/Data/IntMap/NonEmpty.hs
@@ -246,7 +246,7 @@
 import           Data.Maybe hiding             (mapMaybe)
 import           Data.Semigroup.Foldable       (Foldable1)
 import           Data.These
-import           Prelude hiding                (map, filter, lookup, foldl, foldr, foldl1, foldr1)
+import           Prelude hiding                (Foldable(..), map, filter, lookup)
 import qualified Data.Foldable                 as F
 import qualified Data.IntMap                   as M
 import qualified Data.IntSet                   as S
diff --git a/src/Data/IntMap/NonEmpty/Internal.hs b/src/Data/IntMap/NonEmpty/Internal.hs
--- a/src/Data/IntMap/NonEmpty/Internal.hs
+++ b/src/Data/IntMap/NonEmpty/Internal.hs
@@ -71,7 +71,7 @@
 import           Data.Semigroup
 import           Data.Semigroup.Foldable    (Foldable1(fold1))
 import           Data.Semigroup.Traversable (Traversable1(..))
-import           Prelude hiding             (foldr1, foldl1, foldr, foldl, map)
+import           Prelude hiding             (Foldable(..), map)
 import           Text.Read
 import qualified Data.Aeson                 as A
 import qualified Data.Foldable              as F
@@ -520,16 +520,16 @@
 --
 -- 'Data.Foldable.foldr1', 'Data.Foldable.foldl1', 'Data.Foldable.minimum',
 -- 'Data.Foldable.maximum' are all total.
-instance Foldable NEIntMap where
+instance F.Foldable NEIntMap where
 #if MIN_VERSION_base(4,11,0)
     fold      (NEIntMap _ v m) = v <> F.fold (M.elems m)
     {-# INLINE fold #-}
-    foldMap f (NEIntMap _ v m) = f v <> foldMap f (M.elems m)
+    foldMap f (NEIntMap _ v m) = f v <> F.foldMap f (M.elems m)
     {-# INLINE foldMap #-}
 #else
     fold      (NEIntMap _ v m) = v `mappend` F.fold (M.elems m)
     {-# INLINE fold #-}
-    foldMap f (NEIntMap _ v m) = f v `mappend` foldMap f (M.elems m)
+    foldMap f (NEIntMap _ v m) = f v `mappend` F.foldMap f (M.elems m)
     {-# INLINE foldMap #-}
 #endif
     foldr   = foldr
diff --git a/src/Data/IntSet/NonEmpty.hs b/src/Data/IntSet/NonEmpty.hs
--- a/src/Data/IntSet/NonEmpty.hs
+++ b/src/Data/IntSet/NonEmpty.hs
@@ -142,7 +142,7 @@
 import           Data.List.NonEmpty            (NonEmpty(..))
 import           Data.Maybe
 import           Data.These
-import           Prelude hiding                (foldr, foldl, foldr1, foldl1, filter, map)
+import           Prelude hiding                (Foldable(..), filter, map)
 import qualified Data.IntSet                   as S
 import qualified Data.List.NonEmpty            as NE
 
diff --git a/src/Data/Map/NonEmpty.hs b/src/Data/Map/NonEmpty.hs
--- a/src/Data/Map/NonEmpty.hs
+++ b/src/Data/Map/NonEmpty.hs
@@ -267,7 +267,7 @@
 import           Data.Set.NonEmpty.Internal (NESet(..))
 import           Data.These
 import           Data.Void
-import           Prelude hiding             (lookup, foldr1, foldl1, foldr, foldl, filter, map, take, drop, splitAt)
+import           Prelude hiding             (Foldable(..), lookup, filter, map, take, drop, splitAt)
 import qualified Data.Foldable              as F
 import qualified Data.List.NonEmpty         as NE
 import qualified Data.Map                   as M
diff --git a/src/Data/Map/NonEmpty/Internal.hs b/src/Data/Map/NonEmpty/Internal.hs
--- a/src/Data/Map/NonEmpty/Internal.hs
+++ b/src/Data/Map/NonEmpty/Internal.hs
@@ -66,7 +66,7 @@
 import           Data.Semigroup
 import           Data.Semigroup.Foldable    (Foldable1(fold1))
 import           Data.Semigroup.Traversable (Traversable1(..))
-import           Prelude hiding             (foldr1, foldl1, foldr, foldl, map)
+import           Prelude hiding             (Foldable(..), map)
 import           Text.Read
 import qualified Data.Aeson                 as A
 import qualified Data.Foldable              as F
@@ -518,16 +518,16 @@
 --
 -- 'Data.Foldable.foldr1', 'Data.Foldable.foldl1', 'Data.Foldable.minimum',
 -- 'Data.Foldable.maximum' are all total.
-instance Foldable (NEMap k) where
+instance F.Foldable (NEMap k) where
 #if MIN_VERSION_base(4,11,0)
     fold      (NEMap _ v m) = v <> F.fold m
     {-# INLINE fold #-}
-    foldMap f (NEMap _ v m) = f v <> foldMap f m
+    foldMap f (NEMap _ v m) = f v <> F.foldMap f m
     {-# INLINE foldMap #-}
 #else
     fold      (NEMap _ v m) = v `mappend` F.fold m
     {-# INLINE fold #-}
-    foldMap f (NEMap _ v m) = f v `mappend` foldMap f m
+    foldMap f (NEMap _ v m) = f v `mappend` F.foldMap f m
     {-# INLINE foldMap #-}
 #endif
     foldr   = foldr
diff --git a/src/Data/Set/NonEmpty.hs b/src/Data/Set/NonEmpty.hs
--- a/src/Data/Set/NonEmpty.hs
+++ b/src/Data/Set/NonEmpty.hs
@@ -120,8 +120,8 @@
   -- * Folds
   , foldr
   , foldl
-  , foldr1
-  , foldl1
+  , F.foldr1
+  , F.foldl1
   -- ** Strict folds
   , foldr'
   , foldl'
@@ -155,7 +155,8 @@
 import           Data.Set                   (Set)
 import           Data.Set.NonEmpty.Internal
 import           Data.These
-import           Prelude hiding             (foldr, foldl, filter, map, take, drop, splitAt)
+import           Prelude hiding             (Foldable(..), filter, map, take, drop, splitAt)
+import qualified Data.Foldable              as F
 import qualified Data.List.NonEmpty         as NE
 import qualified Data.Semigroup.Foldable    as F1
 import qualified Data.Set                   as S
diff --git a/src/Data/Set/NonEmpty/Internal.hs b/src/Data/Set/NonEmpty/Internal.hs
--- a/src/Data/Set/NonEmpty/Internal.hs
+++ b/src/Data/Set/NonEmpty/Internal.hs
@@ -52,7 +52,7 @@
 import           Data.Semigroup
 import           Data.Semigroup.Foldable (Foldable1)
 import           Data.Set.Internal       (Set(..))
-import           Prelude hiding          (foldr, foldr1, foldl, foldl1)
+import           Prelude hiding          (Foldable(..))
 import           Text.Read
 import qualified Data.Aeson              as A
 import qualified Data.Foldable           as F
@@ -336,16 +336,16 @@
 --
 -- 'Data.Foldable.foldr1', 'Data.Foldable.foldl1', 'Data.Foldable.minimum',
 -- 'Data.Foldable.maximum' are all total.
-instance Foldable NESet where
+instance F.Foldable NESet where
 #if MIN_VERSION_base(4,11,0)
     fold      (NESet x s) = x <> F.fold s
     {-# INLINE fold #-}
-    foldMap f (NESet x s) = f x <> foldMap f s
+    foldMap f (NESet x s) = f x <> F.foldMap f s
     {-# INLINE foldMap #-}
 #else
     fold      (NESet x s) = x `mappend` F.fold s
     {-# INLINE fold #-}
-    foldMap f (NESet x s) = f x `mappend` foldMap f s
+    foldMap f (NESet x s) = f x `mappend` F.foldMap f s
     {-# INLINE foldMap #-}
 #endif
     foldr   = foldr
