diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,12 +1,17 @@
+# Version 0.8.3.0 (2022-10-05)
+
+- Bugfix for the GHC 9.0 rewriter plugin compatibility shim:
+  fix coercion orientations in family application cache
+
 # Version 0.8.2.0 (2022-10-05)
 
 - Bugfix for the GHC 9.0 rewriter plugin compatibility shim:
-  fix coercion orientations.
+  fix coercion orientations in family rewriting.
 
 # Version 0.8.1.0 (2022-10-05)
 
 - Bugfix for the GHC 9.2 rewriter plugin compatibility shim:
-  fix coercion orientations.
+  fix coercion orientations in family rewriting.
 
 # Version 0.8.0.0 (2022-07-07)
 
diff --git a/ghc-tcplugin-api.cabal b/ghc-tcplugin-api.cabal
--- a/ghc-tcplugin-api.cabal
+++ b/ghc-tcplugin-api.cabal
@@ -1,6 +1,6 @@
 cabal-version:  3.0
 name:           ghc-tcplugin-api
-version:        0.8.2.0
+version:        0.8.3.0
 synopsis:       An API for type-checker plugins.
 license:        BSD-3-Clause
 build-type:     Simple
diff --git a/src/GHC/TcPlugin/API/Internal/Shim.hs b/src/GHC/TcPlugin/API/Internal/Shim.hs
--- a/src/GHC/TcPlugin/API/Internal/Shim.hs
+++ b/src/GHC/TcPlugin/API/Internal/Shim.hs
@@ -511,7 +511,7 @@
           | fr `eqCanRewriteFR` (flavour, eq_rel)
           , let
               redn :: Reduction
-              redn = Reduction (mkSymCo co) xi -- inerts use a different orientation in GHC 9.0 and 9.2
+              redn = Reduction (mkSymCoOnGHC92 co) xi
           -> finish True (homogenise $ downgradeRedn role' inert_role redn)
           where
             inert_role      = eqRelRole inert_eq_rel
@@ -531,13 +531,26 @@
       when (use_cache && eq_rel == NomEq && flavour /= Derived) $
         liftTcS $
           extendFamAppCache tc tys
-            ( mkSymCo final_co, final_xi ) -- different orientation in GHC 9.0 and 9.2
+            ( mkSymCoOnGHC92 final_co, final_xi )
 #if !MIN_VERSION_ghc(9,2,0)
             flavour
 #endif
       return final_redn
     {-# INLINE finish #-}
 
+-- On GHC 9.2, lookupFamAppCache and matchFam
+-- use a coercion that goes from right to left.
+-- On GHC 9.0 (and GHC 9.4 and above), the coercions
+-- always go from left to right.
+-- (Recall: this module is only used for GHC 9.2 and below.)
+mkSymCoOnGHC92 :: Coercion -> Coercion
+mkSymCoOnGHC92 co =
+#if MIN_VERSION_ghc(9,2,0)
+  mkSymCo co
+#else
+  co
+#endif
+
 -- Returned coercion is output ~r input, where r is the role in the RewriteM monad
 -- See Note [How to normalise a family application]
 try_to_reduce :: TyCon -> [Type] -> Maybe Rewriter
@@ -551,19 +564,7 @@
   forM result downgrade
     where
       mkRed :: Maybe (Coercion, Type) -> Maybe Reduction
-      mkRed = fmap $ \ (co, ty) ->
-        Reduction
-        -- On GHC 9.2, lookupFamAppCache and matchFam
-        -- use a coercion that goes from right to left.
-        -- On GHC 9.0 (and GHC 9.4 and above), the coercions
-        -- always go from left to right.
-        -- (Recall: this module is only used for GHC 9.2 and below.)
-#if MIN_VERSION_ghc(9,2,0)
-          (mkSymCo co)
-#else
-          co
-#endif
-          ty
+      mkRed = fmap $ \ (co, ty) -> Reduction (mkSymCoOnGHC92 co) ty
       downgrade :: Reduction -> RewriteM Reduction
       downgrade redn@(Reduction co xi) = do
         eq_rel <- getEqRel
