diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for large-generics
 
+## 0.2.1 -- 2023-03-06
+
+* Support ghc 9.4
+
 ## 0.2.0.0 -- 2022-04-06
 
 * Use `SmallArray` instead of `Vector`
diff --git a/large-generics.cabal b/large-generics.cabal
--- a/large-generics.cabal
+++ b/large-generics.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               large-generics
-version:            0.2.0.0
+version:            0.2.1
 synopsis:           Generic programming API for large-records and large-anon
 description:        The large-generics package offers a style of generic
                     programming inspired by generics-sop, but optimized for
@@ -13,7 +13,7 @@
 maintainer:         edsko@well-typed.com
 category:           Generics
 extra-source-files: CHANGELOG.md
-tested-with:        GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.2
+tested-with:        GHC ==8.8.4 || ==8.10.7 || ==9.0.2 || ==9.2.7 || ==9.4.4
 
 library
   exposed-modules:
@@ -32,6 +32,7 @@
       Data.Record.Generic.JSON
       Data.Record.Generic.Lens.VL
       Data.Record.Generic.LowerBound
+      Data.Record.Generic.NFData
       Data.Record.Generic.Show
   default-language:
       Haskell2010
@@ -41,8 +42,9 @@
   hs-source-dirs:
       src
   build-depends:
-      base         >= 4.13  && < 4.17
-    , aeson        >= 1.4.4 && < 2.1
+      base         >= 4.13  && < 4.18
+    , aeson        >= 1.4.4 && < 2.2
+    , deepseq      >= 1.4.4 && < 1.5
     , generics-sop >= 0.5   && < 0.6
     , sop-core     >= 0.5   && < 0.6
     , primitive    >= 0.7   && < 0.8
diff --git a/src/Data/Record/Generic.hs b/src/Data/Record/Generic.hs
--- a/src/Data/Record/Generic.hs
+++ b/src/Data/Record/Generic.hs
@@ -5,6 +5,7 @@
 {-# LANGUAGE GADTs                #-}
 {-# LANGUAGE KindSignatures       #-}
 {-# LANGUAGE TypeFamilies         #-}
+{-# LANGUAGE TypeOperators        #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 module Data.Record.Generic (
diff --git a/src/Data/Record/Generic/NFData.hs b/src/Data/Record/Generic/NFData.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Record/Generic/NFData.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE TypeApplications #-}
+
+module Data.Record.Generic.NFData (
+    grnf
+  ) where
+
+import Control.DeepSeq (NFData, rnf)
+import Data.Record.Generic
+import qualified Data.Record.Generic.Rep as Rep
+
+-- | Generic rnf function
+--
+-- Typical usage:
+--
+-- > instance NFData T where
+-- >   rnf = grnf
+--
+grnf :: (Generic a, Constraints a NFData) => a -> ()
+grnf =
+    rnf
+  . Rep.collapse
+  . Rep.cmap (Proxy @NFData) (mapIK rnf)
+  . from
diff --git a/src/Data/Record/Generic/SOP.hs b/src/Data/Record/Generic/SOP.hs
--- a/src/Data/Record/Generic/SOP.hs
+++ b/src/Data/Record/Generic/SOP.hs
@@ -10,6 +10,7 @@
 {-# LANGUAGE StandaloneDeriving      #-}
 {-# LANGUAGE TypeApplications        #-}
 {-# LANGUAGE TypeFamilies            #-}
+{-# LANGUAGE TypeOperators           #-}
 {-# LANGUAGE UndecidableInstances    #-}
 {-# LANGUAGE UndecidableSuperClasses #-}
 
