diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,15 @@
 Brick changelog
 ---------------
 
+0.41.5
+------
+
+Miscellaneous:
+ * `suspendAndResume` now empties the rendering cache when returning to
+   the rendering event loop. This ensures that the state returned by the
+   `IO` action is rendered completely rather than relying on potentially
+   stale cache entries.
+
 0.41.4
 ------
 
diff --git a/brick.cabal b/brick.cabal
--- a/brick.cabal
+++ b/brick.cabal
@@ -1,5 +1,5 @@
 name:                brick
-version:             0.41.4
+version:             0.41.5
 synopsis:            A declarative terminal user interface library
 description:
   Write terminal applications painlessly with 'brick'! You write an
diff --git a/src/Brick/Main.hs b/src/Brick/Main.hs
--- a/src/Brick/Main.hs
+++ b/src/Brick/Main.hs
@@ -222,7 +222,7 @@
                 InternalSuspendAndResume newRS action -> do
                     newAppState <- action
                     newVty <- buildVty
-                    run newVty newRS newAppState brickChan
+                    run newVty (newRS { renderCache = mempty }) newAppState brickChan
 
         emptyES = ES [] mempty
         emptyRS = RS M.empty mempty S.empty mempty mempty
@@ -492,7 +492,7 @@
 
 -- | Suspend the event loop, save the terminal state, and run the
 -- specified action. When it returns an application state value, restore
--- the terminal state, redraw the application from the new state, and
--- resume the event loop.
+-- the terminal state, empty the rendering cache, redraw the application
+-- from the new state, and resume the event loop.
 suspendAndResume :: IO s -> EventM n (Next s)
 suspendAndResume = return . SuspendAndResume
