diff --git a/app/components/SimpleEditor/ContainerEditor.js b/app/components/SimpleEditor/ContainerEditor.js
index 376773acd2f1f6f144996eacb97d41cd0d83c92a..532f0d7bca9e4b386d0adc752b1cb596334c21af 100644
--- a/app/components/SimpleEditor/ContainerEditor.js
+++ b/app/components/SimpleEditor/ContainerEditor.js
@@ -76,35 +76,51 @@ class ContainerEditor extends SubstanceContainerEditor {
   onTextInput (event) {
     if (!this.props.trackChanges) return super.onTextInput(event)
 
-    event.preventDefault()
-    event.stopPropagation()
-
-    if (!event.data) return
-    this._state.skipNextObservation = true
-
-    const trackChangesProvider = this.context.trackChangesProvider
-    const options = {
+    this.handleTracking({
       event: event,
-      status: 'add'
-    }
-    trackChangesProvider.handleTransaction(options)
+      status: 'add',
+      surfaceEvent: 'input'
+    })
   }
 
   _handleDeleteKey (event) {
     if (!this.props.trackChanges) return super._handleDeleteKey(event)
 
+    this.handleTracking({
+      event: event,
+      status: 'delete',
+      surfaceEvent: 'delete'
+    })
+  }
+
+  _handleSpaceKey (event) {
+    if (!this.props.trackChanges) return super._handleSpaceKey(event)
+
+    this.handleTracking({
+      event: event,
+      status: 'add',
+      surfaceEvent: 'space'
+    })
+  }
+
+  handleTracking (options) {
+    const trackChangesProvider = this.context.trackChangesProvider
+    const { event, surfaceEvent } = options
+
     event.preventDefault()
     event.stopPropagation()
 
-    // TODO -- needed?
-    const direction = (event.keyCode === keyboardKeys.BACKSPACE) ? 'left' : 'right'
+    if (surfaceEvent === 'input') {
+      if (!event.data) return
+      this._state.skipNextObservation = true
+    }
 
-    const trackChangesProvider = this.context.trackChangesProvider
-    const options = {
-      key: (direction === 'left') ? 'BACKSPACE' : 'DELETE',
-      move: direction,
-      status: 'delete'
+    if (surfaceEvent === 'delete') {
+      const direction = (event.keyCode === keyboardKeys.BACKSPACE) ? 'left' : 'right'
+      options.move = direction
+      options.key = (direction === 'left') ? 'BACKSPACE' : 'DELETE'
     }
+
     trackChangesProvider.handleTransaction(options)
   }
 
diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
index 7174e68b17877ec0bfdc82ef5e3c17fa7e176d26..4d4128fc48dd1441ccf0ef62fcf30732f2bbe957 100644
--- a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
+++ b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js
@@ -387,7 +387,7 @@ class TrackChangesProvider {
     const surface = this.getSurface()
     surface.transaction(function (tx, args) {
       if (surface.domSelection) surface.domSelection.clear()
-      args.text = event.data
+      args.text = event.data || ' '    // if no data, it's a space key
       return surface.insertText(tx, args)
     }, { action: 'type' })
   }