diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [0.9.1]
+### Changed
+- (#63) Fixed bug where `modify` on non-existent components crashes
+
 ## [0.9.0]
 ### Added
 - (#59) Expose `makeMapComponents`, which creates `Component` instances with `Map` stores
diff --git a/apecs.cabal b/apecs.cabal
--- a/apecs.cabal
+++ b/apecs.cabal
@@ -1,5 +1,5 @@
 name:                apecs
-version:             0.9.0
+version:             0.9.1
 homepage:            https://github.com/jonascarpay/apecs#readme
 license:             BSD3
 license-file:        LICENSE
diff --git a/src/Apecs/System.hs b/src/Apecs/System.hs
--- a/src/Apecs/System.hs
+++ b/src/Apecs/System.hs
@@ -62,8 +62,10 @@
   sx :: Storage cx <- getStore
   sy :: Storage cy <- getStore
   lift$ do
-    x <- explGet sx ety
-    explSet sy ety (f x)
+    possible <- explExists sx ety
+    when possible $ do
+      x <- explGet sx ety
+      explSet sy ety (f x)
 
 -- | @modify@ operator
 ($~) = modify
