diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 # Changelog for the [`ghc-typelits-knownnat`](http://hackage.haskell.org/package/ghc-typelits-knownnat) package
 
+## 0.8.2 *October 17th 2025*
+* Fix -fdefer-type-errors regression
+
 ## 0.8.1 *October 10th 2025*
 * Fix [#53](https://github.com/clash-lang/ghc-typelits-knownnat/issues/53) The plugin sometimes doesn't look through type aliases
 * Fix [#13](https://github.com/clash-lang/ghc-typelits-knownnat/issues/13) Type equality constraints aren't used by solver
diff --git a/ghc-typelits-knownnat.cabal b/ghc-typelits-knownnat.cabal
--- a/ghc-typelits-knownnat.cabal
+++ b/ghc-typelits-knownnat.cabal
@@ -1,6 +1,6 @@
 cabal-version:       3.0
 name:                ghc-typelits-knownnat
-version:             0.8.1
+version:             0.8.2
 synopsis:            Derive KnownNat constraints from other KnownNat constraints
 description:
   A type checker plugin for GHC that can derive \"complex\" @KnownNat@
@@ -90,7 +90,7 @@
   build-depends:       base                      >= 4.9      && <5,
                        ghc                       >= 8.0.1    && <9.17,
                        ghc-tcplugin-api          >= 0.18.1.0 && <0.19,
-                       ghc-typelits-natnormalise >= 0.8.0    && <0.9,
+                       ghc-typelits-natnormalise >= 0.9.0    && <0.10,
                        transformers              >= 0.5.2.0  && <0.7,
                        template-haskell          >= 2.11.0.0 && <2.26
   hs-source-dirs:      src
@@ -143,7 +143,7 @@
   Other-Modules:       TestFunctions
   build-depends:       base                      >= 4.8   && <5,
                        ghc-typelits-knownnat,
-                       ghc-typelits-natnormalise >= 0.8.0 && <0.9,
+                       ghc-typelits-natnormalise >= 0.8.0 && <0.10,
                        tasty                     >= 0.10,
                        tasty-hunit               >= 0.9,
                        tasty-quickcheck          >= 0.8,
diff --git a/src/GHC/TypeLits/KnownNat.hs b/src/GHC/TypeLits/KnownNat.hs
--- a/src/GHC/TypeLits/KnownNat.hs
+++ b/src/GHC/TypeLits/KnownNat.hs
@@ -134,6 +134,10 @@
   ( If )
 import GHC.Exts
   ( Proxy# )
+#if __GLASGOW_HASKELL__ >= 904
+import GHC.Exts
+  ( Constraint )
+#endif
 import GHC.TypeLits
   ( Symbol )
 import GHC.TypeNats
@@ -206,7 +210,11 @@
   {-# NOINLINE natSing2 #-}
 
 -- | 'KnownNat2' instance for "GHC.TypeLits"' 'GHC.TypeLits.-'
+#if __GLASGOW_HASKELL__ >= 904
+instance (KnownNat a, KnownNat b, (b <= a) ~ (() :: Constraint)) => KnownNat2 $(nameToSymbol ''(-)) a b where
+#else
 instance (KnownNat a, KnownNat b, b <= a) => KnownNat2 $(nameToSymbol ''(-)) a b where
+#endif
   natSing2 = SNatKn (natVal (Proxy @a) - natVal (Proxy @b))
   {-# NOINLINE natSing2 #-}
 
diff --git a/src/GHC/TypeLits/KnownNat/Solver.hs b/src/GHC/TypeLits/KnownNat/Solver.hs
--- a/src/GHC/TypeLits/KnownNat/Solver.hs
+++ b/src/GHC/TypeLits/KnownNat/Solver.hs
@@ -296,10 +296,6 @@
               -> TcPluginM Solve TcPluginSolveResult
 solveKnownNat _defs _givens []      = return (TcPluginOk [] [])
 solveKnownNat defs  givens  wanteds = do
-  tcPluginTrace "solveKnownNat Wanteds {" $
-       vcat [ text "givens:" <+> ppr givens
-            , text "wanteds:" <+> ppr wanteds
-            ]
   let givensTyConSubst = mkTyConSubst givens
       kn_wanteds = map (\(x,y,z,orig) -> (x,y,z,orig))
                  $ mapMaybe (toKnConstraint defs) wanteds
@@ -312,12 +308,6 @@
       -- Try to solve the wanted KnownNat constraints given the [G]iven
       -- KnownNat constraints
       (solved,new) <- (unzip . catMaybes) <$> (mapM (constraintToEvTerm defs givensTyConSubst given_map) kn_wanteds)
-      tcPluginTrace "solveKnownNat Wanteds }" $
-       vcat [ text "givens:" <+> ppr givens
-            , text "wanteds:" <+> ppr wanteds
-            , text "solved:" <+> ppr solved
-            , text "newWanteds:" <+> ppr (concat new)
-            ]
       return (TcPluginOk solved (concat new))
 
 -- | Get the KnownNat constraints
@@ -534,7 +524,7 @@
           -- with the original Nat operation
           subWant  = mkTyConApp typeNatSubTyCon . (:[want])
           -- exploded :: [()]
-          exploded = map (fst . runWriter . normaliseNat givensTyConSubst . subWant . fst &&& id)
+          exploded = map (fst . runWriter . normaliseNat . subWant . fst &&& id)
                          knownsX
           -- interesting cases for us are those where
           -- wanted and given only differ by a constant
