diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # xml-optics
 
+## 0.2.0
+
+* Compatibility with optics 0.4
+* Version bound on optics
+
 ## 0.1.0
 
 Initial release
diff --git a/src/Text/XML/Optics.hs b/src/Text/XML/Optics.hs
--- a/src/Text/XML/Optics.hs
+++ b/src/Text/XML/Optics.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 module Text.XML.Optics
   ( -- * Document
     Document (..),
@@ -184,7 +186,14 @@
 -- | Compose two 'Traversal'' using 'plate'
 --
 -- @t1 './' t2 = t1 '%' 'plate' '%' t2@
+#if MIN_VERSION_optics_core(0,4,0)
+(./) :: (JoinKinds k1 l m, JoinKinds k2 A_Traversal k1,
+ AppendIndices is1 js ks, AppendIndices is2 (WithIx Int) is1) =>
+  Optic k2 is2 s t Element Element
+  -> Optic l js Element Element a b -> Optic m ks s t a b
+#else
 (./) :: (Is (Join k A_Traversal) (Join (Join k A_Traversal) l), Is l (Join (Join k A_Traversal) l), Is k (Join k A_Traversal), Is A_Traversal (Join k A_Traversal)) => Optic k is s t Element Element -> Optic l js Element Element a b -> Optic (Join (Join k A_Traversal) l) (Append (Append is (WithIx Int)) js) s t a b
+#endif
 o1 ./ o2 = o1 % plate % o2
 {-# INLINE (./) #-}
 
@@ -193,6 +202,13 @@
 -- | A version of './' that ignores the index from 'plate'
 --
 -- @t1 './/' t1 = t1 '<%' 'plate' '%' t2@
+#if MIN_VERSION_optics_core(0,4,0)
+(.//) :: (AppendIndices is js ks, JoinKinds k1 l m,
+ JoinKinds k2 A_Traversal k1) =>
+  Optic k2 is s t Element Element
+  -> Optic l js Element Element a b -> Optic m ks s t a b
+#else
 (.//) :: (Is (Join k A_Traversal) (Join (Join k A_Traversal) l), Is l (Join (Join k A_Traversal) l), Is k (Join k A_Traversal), Is A_Traversal (Join k A_Traversal)) => Optic k is s t Element Element -> Optic l js Element Element a b -> Optic (Join (Join k A_Traversal) l) (Append is js) s t a b
+#endif
 o1 .// o2 = o1 <% plate % o2
 {-# INLINE (.//) #-}
diff --git a/xml-optics.cabal b/xml-optics.cabal
--- a/xml-optics.cabal
+++ b/xml-optics.cabal
@@ -1,14 +1,15 @@
 cabal-version:   3.0
 name:            xml-optics
-version:         0.1.0
-
+version:         0.2.0
 synopsis:        Optics for xml-conduit
-description:     Optics port of xml-lens, a collection of optics for xml-conduit
+description:
+  Optics port of xml-lens, a collection of optics for xml-conduit
+
 category:        XML
 license:         BSD-3-Clause
 license-file:    LICENSE
 author:          Poscat
-maintainer:      Poscat <poscat@mail.poscat.moe>
+maintainer:      Poscat <poscat@poscat.moe>
 copyright:       Copyright (c) Poscat 2021
 stability:       experimental
 homepage:        https://github.com/poscat0x04/xml-optics
@@ -19,11 +20,11 @@
 
 common common-attrs
   build-depends:
-    , base              >=4.10 && <5
+    , base         >=4.10 && <5
     , containers
-    , optics-core
-    , xml-conduit
+    , optics-core  >=0.3  && <0.5
     , text
+    , xml-conduit
 
   default-language:   Haskell2010
   default-extensions:
@@ -66,8 +67,7 @@
 library
   import:          common-attrs
   build-depends:
-  exposed-modules:
-    Text.XML.Optics
+  exposed-modules: Text.XML.Optics
   other-modules:
   hs-source-dirs:  src
 
