diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+### 0.6.5 [2023.08.06]
+* When generating `Show(1)(2)` instances with `Text.Show.Deriving` using GHC 9.8
+  or later, data types that have fields of type `Int{8,16,32,64}#` or
+  `Word{8,16,32,64}#` will be printed using  extended literal syntax, mirroring
+  corresponding changes introduced in GHC 9.8 (see
+  https://github.com/ghc-proposals/ghc-proposals/pull/596).
+
 ### 0.6.4 [2023.08.06]
 * Support building with `template-haskell-2.21.*` (GHC 9.8).
 * The Template Haskell machinery now uses `TemplateHaskellQuotes` when building
diff --git a/deriving-compat.cabal b/deriving-compat.cabal
--- a/deriving-compat.cabal
+++ b/deriving-compat.cabal
@@ -1,5 +1,5 @@
 name:                deriving-compat
-version:             0.6.4
+version:             0.6.5
 synopsis:            Backports of GHC deriving extensions
 description:         @deriving-compat@ provides Template Haskell functions that
                      mimic @deriving@ extensions that were introduced or modified
diff --git a/src/Data/Deriving/Internal.hs b/src/Data/Deriving/Internal.hs
--- a/src/Data/Deriving/Internal.hs
+++ b/src/Data/Deriving/Internal.hs
@@ -56,6 +56,10 @@
 import           GHC.Exts
 import           GHC.Read (choose, list, paren)
 import           GHC.Show (showSpace)
+#if MIN_VERSION_base(4,19,0)
+import           GHC.Int (Int8(..), Int16(..), Int32(..), Int64(..))
+import           GHC.Word (Word8(..), Word16(..), Word32(..), Word64(..))
+#endif
 
 import           Text.ParserCombinators.ReadPrec
                    ( ReadPrec, (+++), pfail, prec, readPrec_to_S, readS_to_Prec
@@ -2163,4 +2167,36 @@
 
 wordToWord32HashValName :: Name
 wordToWord32HashValName = 'wordToWord32#
+#endif
+
+#if MIN_VERSION_base(4,19,0)
+i8HashDataName :: Name
+i8HashDataName = 'I8#
+
+i16HashDataName :: Name
+i16HashDataName = 'I16#
+
+i32HashDataName :: Name
+i32HashDataName = 'I32#
+
+i64HashDataName :: Name
+i64HashDataName = 'I64#
+
+int64HashTypeName :: Name
+int64HashTypeName = ''Int64#
+
+w8HashDataName :: Name
+w8HashDataName = 'W8#
+
+w16HashDataName :: Name
+w16HashDataName = 'W16#
+
+w32HashDataName :: Name
+w32HashDataName = 'W32#
+
+w64HashDataName :: Name
+w64HashDataName = 'W64#
+
+word64HashTypeName :: Name
+word64HashTypeName = ''Word64#
 #endif
diff --git a/src/Text/Show/Deriving/Internal.hs b/src/Text/Show/Deriving/Internal.hs
--- a/src/Text/Show/Deriving/Internal.hs
+++ b/src/Text/Show/Deriving/Internal.hs
@@ -690,8 +690,50 @@
                              , primShowPostfixMod = twoHashE
                              , primShowConv       = id
                              })
-#if MIN_VERSION_base(4,13,0)
+#if MIN_VERSION_base(4,19,0)
     , (int8HashTypeName,   PrimShow
+                             { primShowBoxer      = appE (conE i8HashDataName)
+                             , primShowPostfixMod = extendedLitE "Int8"
+                             , primShowConv       = id
+                             })
+    , (int16HashTypeName,  PrimShow
+                             { primShowBoxer      = appE (conE i16HashDataName)
+                             , primShowPostfixMod = extendedLitE "Int16"
+                             , primShowConv       = id
+                             })
+    , (int32HashTypeName,  PrimShow
+                             { primShowBoxer      = appE (conE i32HashDataName)
+                             , primShowPostfixMod = extendedLitE "Int32"
+                             , primShowConv       = id
+                             })
+    , (int64HashTypeName,  PrimShow
+                             { primShowBoxer      = appE (conE i64HashDataName)
+                             , primShowPostfixMod = extendedLitE "Int64"
+                             , primShowConv       = id
+                             })
+    , (word8HashTypeName,  PrimShow
+                             { primShowBoxer      = appE (conE w8HashDataName)
+                             , primShowPostfixMod = extendedLitE "Word8"
+                             , primShowConv       = id
+                             })
+    , (word16HashTypeName, PrimShow
+                             { primShowBoxer      = appE (conE w16HashDataName)
+                             , primShowPostfixMod = extendedLitE "Word16"
+                             , primShowConv       = id
+                             })
+    , (word32HashTypeName, PrimShow
+                             { primShowBoxer      = appE (conE w32HashDataName)
+                             , primShowPostfixMod = extendedLitE "Word32"
+                             , primShowConv       = id
+                             })
+    , (word64HashTypeName, PrimShow
+                             { primShowBoxer      = appE (conE w64HashDataName)
+                             , primShowPostfixMod = extendedLitE "Word64"
+                             , primShowConv       = id
+                             })
+#else
+# if MIN_VERSION_base(4,13,0)
+    , (int8HashTypeName,   PrimShow
                              { primShowBoxer      = appE (conE iHashDataName) . appE (varE int8ToIntHashValName)
                              , primShowPostfixMod = oneHashE
                              , primShowConv       = mkNarrowE intToInt8HashValName
@@ -711,8 +753,8 @@
                              , primShowPostfixMod = twoHashE
                              , primShowConv       = mkNarrowE wordToWord16HashValName
                              })
-#endif
-#if MIN_VERSION_base(4,16,0)
+# endif
+# if MIN_VERSION_base(4,16,0)
     , (int32HashTypeName,  PrimShow
                              { primShowBoxer      = appE (conE iHashDataName) . appE (varE int32ToIntHashValName)
                              , primShowPostfixMod = oneHashE
@@ -723,10 +765,11 @@
                              , primShowPostfixMod = twoHashE
                              , primShowConv       = mkNarrowE wordToWord32HashValName
                              })
+# endif
 #endif
     ]
 
-#if MIN_VERSION_base(4,13,0)
+#if MIN_VERSION_base(4,13,0) && !(MIN_VERSION_base(4,19,0))
 mkNarrowE :: Name -> Q Exp -> Q Exp
 mkNarrowE narrowName e =
   foldr (`infixApp` varE composeValName)
@@ -739,3 +782,8 @@
 oneHashE, twoHashE :: Q Exp
 oneHashE = varE showCharValName `appE` charE '#'
 twoHashE = varE showStringValName `appE` stringE "##"
+
+#if MIN_VERSION_base(4,19,0)
+extendedLitE :: String -> Q Exp
+extendedLitE suffix = varE showStringValName `appE` stringE ("#" ++ suffix)
+#endif
