diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.8.4.0
+=======
+* Add support for unliftio-core 0.2 while maintaining backwards-compatible support for 0.1
+
 0.8.3.0
 =======
 
diff --git a/katip.cabal b/katip.cabal
--- a/katip.cabal
+++ b/katip.cabal
@@ -1,5 +1,5 @@
 name:                katip
-version:             0.8.3.0
+version:             0.8.4.0
 synopsis:            A structured logging framework.
 description:
   Katip is a structured logging framework. See README.md for more details.
@@ -87,7 +87,7 @@
   if flag(lib-Werror)
     ghc-options: -Werror
   if os(windows)
-    build-depends: Win32 >=2.3 && <2.6
+    build-depends: Win32 >=2.3 && <2.9
     exposed-modules: Katip.Compat
   else
     build-depends: unix >= 2.5 && <2.8
diff --git a/src/Katip/Core.hs b/src/Katip/Core.hs
--- a/src/Katip/Core.hs
+++ b/src/Katip/Core.hs
@@ -901,9 +901,14 @@
   restoreM = defaultRestoreM
 
 instance MonadUnliftIO m => MonadUnliftIO (KatipT m) where
+#if MIN_VERSION_unliftio_core(0, 2, 0)
+  withRunInIO inner = KatipT $ ReaderT $ \le -> withRunInIO $ \run ->
+    inner (run . runKatipT le)
+#else
   askUnliftIO = KatipT $
-                withUnliftIO $ \u ->
-                pure (UnliftIO (unliftIO u . unKatipT))
+    withUnliftIO $ \u ->
+      pure (UnliftIO (unliftIO u . unKatipT))
+#endif
 
 #if MIN_VERSION_base(4, 9, 0)
 instance MF.MonadFail m => MF.MonadFail (KatipT m) where
@@ -1012,7 +1017,7 @@
 logException a ns sev action = action `catchAny` \e -> f e >> throwM e
   where
     f e = logF a ns sev (msg e)
-    msg e = ls (T.pack "An exception has occured: ") <> showLS e
+    msg e = ls (T.pack "An exception has occurred: ") <> showLS e
 
 
 -------------------------------------------------------------------------------
diff --git a/src/Katip/Monadic.hs b/src/Katip/Monadic.hs
--- a/src/Katip/Monadic.hs
+++ b/src/Katip/Monadic.hs
@@ -315,7 +315,7 @@
 logExceptionM action sev = action `catchAny` \e -> f e >> throwM e
   where
     f e = logFM sev (msg e)
-    msg e = ls ("An exception has occured: " :: Text) Semi.<> showLS e
+    msg e = ls ("An exception has occurred: " :: Text) Semi.<> showLS e
 
 
 -------------------------------------------------------------------------------
@@ -395,10 +395,16 @@
   localKatipNamespace f (KatipContextT m) = KatipContextT $ local (\s -> s { ltsNamespace = f (ltsNamespace s)}) m
 
 instance MonadUnliftIO m => MonadUnliftIO (KatipContextT m) where
+#if MIN_VERSION_unliftio_core(0, 2, 0)
+  withRunInIO inner = KatipContextT $ ReaderT $ \lts -> withRunInIO $ \run ->
+    inner (run . runKatipContextT (ltsLogEnv lts) (ltsContext lts) (ltsNamespace lts))
+#else
   askUnliftIO = KatipContextT $
-                withUnliftIO $ \u ->
-                pure (UnliftIO (unliftIO u . unKatipContextT))
+    withUnliftIO $ \u ->
+      pure (UnliftIO (unliftIO u . unKatipContextT))
+#endif
 
+
 #if MIN_VERSION_base(4, 9, 0)
 instance MF.MonadFail m => MF.MonadFail (KatipContextT m) where
     fail msg = lift (MF.fail msg)
@@ -482,9 +488,15 @@
      restoreM = NoLoggingT . restoreM
 
 instance MonadUnliftIO m => MonadUnliftIO (NoLoggingT m) where
+#if MIN_VERSION_unliftio_core(0, 2, 0)
+  withRunInIO inner = NoLoggingT $ withRunInIO $ \run ->
+    inner (run . runNoLoggingT)
+#else
   askUnliftIO = NoLoggingT $
-                withUnliftIO $ \u ->
-                pure (UnliftIO (unliftIO u . runNoLoggingT))
+    withUnliftIO $ \u ->
+      pure (UnliftIO (unliftIO u . runNoLoggingT))
+#endif
+
 
 instance MonadIO m => Katip (NoLoggingT m) where
   getLogEnv = liftIO (initLogEnv "NoLoggingT" "no-logging")
