diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,11 @@
 and this project adheres to
 [Haskell Package Versioning Policy](https://pvp.haskell.org/).
 
+## [1.3.0.0] - 2024-05-01
+### Changed
+- Remove deprecated `runCollectErrs`, `Resolution`, `CollectErrsT` from the
+  `Error` module.
+
 ## [1.2.0.3] - 2024-01-09
 ### Fixed
 - Fix corrupted source distribution.
@@ -519,6 +524,7 @@
 ### Added
 - Data types for the GraphQL language.
 
+[1.3.0.0]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.3...v1.3.0.0
 [1.2.0.3]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.2...v1.2.0.3
 [1.2.0.2]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.1...v1.2.0.2
 [1.2.0.1]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.0...v1.2.0.1
diff --git a/graphql.cabal b/graphql.cabal
--- a/graphql.cabal
+++ b/graphql.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.4
 
 name:           graphql
-version:        1.2.0.3
+version:        1.3.0.0
 synopsis:       Haskell GraphQL implementation
 description:    Haskell <https://spec.graphql.org/June2018/ GraphQL> implementation.
 category:       Language
@@ -60,7 +60,7 @@
   build-depends:
     base >= 4.7 && < 5,
     conduit ^>= 1.3.4,
-    containers ^>= 0.6.2,
+    containers >= 0.6 && < 0.8,
     exceptions ^>= 0.10.4,
     megaparsec >= 9.0 && < 10,
     parser-combinators >= 1.3 && < 2,
@@ -93,7 +93,7 @@
   ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
 
   build-depends:
-    QuickCheck ^>= 2.14.1,
+    QuickCheck >= 2.14 && < 2.16,
     base,
     conduit,
     exceptions,
diff --git a/src/Language/GraphQL/Error.hs b/src/Language/GraphQL/Error.hs
--- a/src/Language/GraphQL/Error.hs
+++ b/src/Language/GraphQL/Error.hs
@@ -8,28 +8,22 @@
 
 -- | Error handling.
 module Language.GraphQL.Error
-    ( CollectErrsT
-    , Error(..)
+    ( Error(..)
     , Path(..)
-    , Resolution(..)
     , ResolverException(..)
     , Response(..)
     , ResponseEventStream
     , parseError
-    , runCollectErrs
     ) where
 
 import Conduit
 import Control.Exception (Exception(..))
-import Control.Monad.Trans.State (StateT, runStateT)
-import Data.HashMap.Strict (HashMap)
 import Data.Sequence (Seq(..), (|>))
 import qualified Data.Sequence as Seq
 import Data.Text (Text)
 import qualified Data.Text as Text
-import Language.GraphQL.AST (Location(..), Name)
+import Language.GraphQL.AST (Location(..))
 import Language.GraphQL.Execute.Coerce
-import qualified Language.GraphQL.Type.Schema as Schema
 import Prelude hiding (null)
 import Text.Megaparsec
     ( ParseErrorBundle(..)
@@ -97,28 +91,3 @@
     show (ResolverException e) = show e
 
 instance Exception ResolverException
-
--- * Deprecated
-
-{-# DEPRECATED runCollectErrs "runCollectErrs was part of the old executor and isn't used anymore" #-}
--- | Runs the given query computation, but collects the errors into an error
--- list, which is then sent back with the data.
-runCollectErrs :: (Monad m, Serialize a)
-    => HashMap Name (Schema.Type m)
-    -> CollectErrsT m a
-    -> m (Response a)
-runCollectErrs types' res = do
-    (dat, Resolution{..}) <- runStateT res
-        $ Resolution{ errors = Seq.empty, types = types' }
-    pure $ Response dat errors
-
-{-# DEPRECATED Resolution "Resolution was part of the old executor and isn't used anymore" #-}
--- | Executor context.
-data Resolution m = Resolution
-    { errors :: Seq Error
-    , types :: HashMap Name (Schema.Type m)
-    }
-
-{-# DEPRECATED CollectErrsT "CollectErrsT was part of the old executor and isn't used anymore" #-}
--- | A wrapper to pass error messages around.
-type CollectErrsT m = StateT (Resolution m) m
diff --git a/tests/Language/GraphQL/AST/Arbitrary.hs b/tests/Language/GraphQL/AST/Arbitrary.hs
--- a/tests/Language/GraphQL/AST/Arbitrary.hs
+++ b/tests/Language/GraphQL/AST/Arbitrary.hs
@@ -7,6 +7,7 @@
 import Test.QuickCheck (oneof, elements, listOf, resize, NonEmptyList (..))
 import Test.QuickCheck.Gen (Gen (..))
 import Data.Text (Text, pack)
+import Data.Functor ((<&>))
 
 newtype AnyPrintableChar = AnyPrintableChar { getAnyPrintableChar :: Char } deriving (Eq, Show)
 
@@ -59,34 +60,36 @@
         location' <- getAnyLocation <$> arbitrary
         pure $ AnyObjectField $ Doc.ObjectField name' value' location'
 
-newtype AnyValue = AnyValue { getAnyValue :: Doc.Value } deriving (Eq, Show)
+newtype AnyValue = AnyValue { getAnyValue :: Doc.Value }
+    deriving (Eq, Show)
 
-instance Arbitrary AnyValue where
-    arbitrary = AnyValue <$> oneof
-        [ variableGen
-        , Doc.Int <$> arbitrary
-        , Doc.Float <$> arbitrary
-        , Doc.String <$> (getAnyPrintableText <$> arbitrary)
-        , Doc.Boolean <$> arbitrary
-        , MkGen $ \_ _ -> Doc.Null
-        , Doc.Enum <$> (getAnyName <$> arbitrary)
-        , Doc.List <$> listGen
-        , Doc.Object <$> objectGen
-        ]
-            where
-                variableGen :: Gen Doc.Value
-                variableGen = Doc.Variable <$> (getAnyName <$> arbitrary)
-                listGen :: Gen [Doc.Node Doc.Value]
-                listGen = (resize 5 . listOf) nodeGen
-                nodeGen = do
-                    node' <- getAnyNode <$> (arbitrary :: Gen (AnyNode AnyValue))
-                    pure (getAnyValue <$> node')
-                objectGen :: Gen [Doc.ObjectField Doc.Value]
-                objectGen = resize 1 $ do
-                    list <- getNonEmpty <$> (arbitrary :: Gen (NonEmptyList (AnyObjectField AnyValue)))
-                    pure $ map (fmap getAnyValue . getAnyObjectField) list
+instance Arbitrary AnyValue
+  where
+    arbitrary =
+        let variableGen :: Gen Doc.Value
+            variableGen = Doc.Variable . getAnyName <$> arbitrary
+            listGen :: Gen [Doc.Node Doc.Value]
+            listGen = (resize 5 . listOf) nodeGen
+            nodeGen :: Gen (Doc.Node Doc.Value)
+            nodeGen = fmap getAnyNode arbitrary <&> fmap getAnyValue
+            objectGen :: Gen [Doc.ObjectField Doc.Value]
+            objectGen = resize 1
+                $ fmap getNonEmpty arbitrary
+                <&> map (fmap getAnyValue . getAnyObjectField)
+         in AnyValue <$> oneof
+            [ variableGen
+            , Doc.Int <$> arbitrary
+            , Doc.Float <$> arbitrary
+            , Doc.String . getAnyPrintableText <$> arbitrary
+            , Doc.Boolean <$> arbitrary
+            , MkGen $ \_ _ -> Doc.Null
+            , Doc.Enum . getAnyName <$> arbitrary
+            , Doc.List <$> listGen
+            , Doc.Object <$> objectGen
+            ]
 
-newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument } deriving (Eq, Show)
+newtype AnyArgument a = AnyArgument { getAnyArgument :: Doc.Argument }
+    deriving (Eq, Show)
 
 instance Arbitrary a => Arbitrary (AnyArgument a) where
     arbitrary = do
