diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+# optics-extra-0.4.1 (2022-03-22)
+* Add support for GHC-9.2
+
 # optics-extra-0.4 (2021-02-22)
 * Add support for GHC-9.0
 
diff --git a/optics-extra.cabal b/optics-extra.cabal
--- a/optics-extra.cabal
+++ b/optics-extra.cabal
@@ -1,12 +1,13 @@
+cabal-version: 2.2
 name:          optics-extra
-version:       0.4
-license:       BSD3
+version:       0.4.1
+license:       BSD-3-Clause
 license-file:  LICENSE
 build-type:    Simple
-cabal-version: 1.24
 maintainer:    optics@well-typed.com
 author:        Andrzej Rybczak
-tested-with:   ghc ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.3, GHCJS ==8.4
+tested-with:   GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7
+                || ==9.0.2 || ==9.2.2, GHCJS ==8.4
 synopsis:      Extra utilities and instances for optics-core
 category:      Data, Optics, Lenses
 description:
@@ -25,20 +26,50 @@
   location: https://github.com/well-typed/optics.git
   subdir:   optics-extra
 
+common language
+    ghc-options:        -Wall -Wcompat
+
+    default-language:   Haskell2010
+
+    default-extensions: BangPatterns
+                        ConstraintKinds
+                        DefaultSignatures
+                        DeriveFoldable
+                        DeriveFunctor
+                        DeriveGeneric
+                        DeriveTraversable
+                        EmptyCase
+                        FlexibleContexts
+                        FlexibleInstances
+                        FunctionalDependencies
+                        GADTs
+                        GeneralizedNewtypeDeriving
+                        InstanceSigs
+                        KindSignatures
+                        LambdaCase
+                        OverloadedLabels
+                        PatternSynonyms
+                        RankNTypes
+                        ScopedTypeVariables
+                        TupleSections
+                        TypeApplications
+                        TypeFamilies
+                        TypeOperators
+                        ViewPatterns
+
 library
-  default-language: Haskell2010
+  import:           language
   hs-source-dirs:   src
-  ghc-options:      -Wall
 
   build-depends: base                   >= 4.10      && <5
                , array                  >= 0.5.2.0   && <0.6
                , bytestring             >= 0.10.8    && <0.12
                , containers             >= 0.5.10.2  && <0.7
-               , hashable               >= 1.1.1     && <1.4
+               , hashable               >= 1.1.1     && <1.5
                , indexed-profunctors    >= 0.1       && <0.2
                , mtl                    >= 2.2.2     && <2.3
-               , optics-core            >= 0.4       && <0.4.1
-               , text                   >= 1.2       && <1.3
+               , optics-core            >= 0.4.1     && <0.4.2
+               , text                   >= 1.2       && <1.3 || >=2.0 && <2.1
                , transformers           >= 0.5       && <0.6
                , unordered-containers   >= 0.2.6     && <0.3
                , vector                 >= 0.11      && <0.13
@@ -74,20 +105,3 @@
                    Optics.Extra.Internal.ByteString
                    Optics.Extra.Internal.Vector
                    Optics.Extra.Internal.Zoom
-
-  default-extensions: BangPatterns
-                      DefaultSignatures
-                      DeriveFunctor
-                      FlexibleContexts
-                      FlexibleInstances
-                      FunctionalDependencies
-                      GADTs
-                      InstanceSigs
-                      LambdaCase
-                      MultiParamTypeClasses
-                      RankNTypes
-                      ScopedTypeVariables
-                      TupleSections
-                      TypeApplications
-                      TypeFamilies
-                      TypeOperators
diff --git a/src/Data/ByteString/Lazy/Optics.hs b/src/Data/ByteString/Lazy/Optics.hs
--- a/src/Data/ByteString/Lazy/Optics.hs
+++ b/src/Data/ByteString/Lazy/Optics.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE PatternSynonyms #-}
 -- | Lazy 'ByteString' lenses.
 module Data.ByteString.Lazy.Optics
   ( packedBytes, unpackedBytes, bytes
diff --git a/src/Data/ByteString/Optics.hs b/src/Data/ByteString/Optics.hs
--- a/src/Data/ByteString/Optics.hs
+++ b/src/Data/ByteString/Optics.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE PatternSynonyms #-}
 module Data.ByteString.Optics
   ( IsByteString(..)
   , unpackedBytes
diff --git a/src/Data/ByteString/Strict/Optics.hs b/src/Data/ByteString/Strict/Optics.hs
--- a/src/Data/ByteString/Strict/Optics.hs
+++ b/src/Data/ByteString/Strict/Optics.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE PatternSynonyms #-}
 module Data.ByteString.Strict.Optics
   ( packedBytes, unpackedBytes, bytes
   , packedChars, unpackedChars, chars
diff --git a/src/Data/Text/Lazy/Optics.hs b/src/Data/Text/Lazy/Optics.hs
--- a/src/Data/Text/Lazy/Optics.hs
+++ b/src/Data/Text/Lazy/Optics.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE PatternSynonyms #-}
-{-# LANGUAGE ViewPatterns #-}
 -- |
 -- Module: Data.Text.Lazy.Optics
 -- Description: Optics for working with lazy 'Text.Text'.
diff --git a/src/Data/Text/Optics.hs b/src/Data/Text/Optics.hs
--- a/src/Data/Text/Optics.hs
+++ b/src/Data/Text/Optics.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE PatternSynonyms #-}
 -- |
 -- Module: Data.Text.Optics
 -- Description: Optics for working with strict or lazy 'Text'.
diff --git a/src/Data/Text/Strict/Optics.hs b/src/Data/Text/Strict/Optics.hs
--- a/src/Data/Text/Strict/Optics.hs
+++ b/src/Data/Text/Strict/Optics.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE PatternSynonyms #-}
 -- |
 -- Module: Data.Text.Strict.Optics
 -- Description: Optics for working with strict 'Strict.Text'.
diff --git a/src/Optics/Cons.hs b/src/Optics/Cons.hs
--- a/src/Optics/Cons.hs
+++ b/src/Optics/Cons.hs
@@ -5,7 +5,6 @@
 -- This module defines the 'Cons' and 'Snoc' classes, which provide 'Prism's for
 -- the leftmost and rightmost elements of a container, respectively.
 --
-{-# LANGUAGE PatternSynonyms #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Optics.Cons
   (
diff --git a/src/Optics/Empty.hs b/src/Optics/Empty.hs
--- a/src/Optics/Empty.hs
+++ b/src/Optics/Empty.hs
@@ -11,7 +11,6 @@
 -- >>> case Nothing of { Empty -> True; _ -> False }
 -- True
 --
-{-# LANGUAGE PatternSynonyms #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 module Optics.Empty
   ( AsEmpty(..)
