diff --git a/lib/helpers/scopeTab.js b/lib/helpers/scopeTab.js
index 737352b6..5ba664fb 100644
--- a/lib/helpers/scopeTab.js
+++ b/lib/helpers/scopeTab.js
@@ -2,6 +2,7 @@ var findTabbable = require('../helpers/tabbable');
 
 module.exports = function(node, event) {
   var tabbable = findTabbable(node);
+  if (!tabbable.length) return;
   var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];
   var leavingFinalTabbable = (
     finalTabbable === document.activeElement ||
diff --git a/specs/Modal.spec.js b/specs/Modal.spec.js
index 514e7e43..6d8d4faf 100644
--- a/specs/Modal.spec.js
+++ b/specs/Modal.spec.js
@@ -92,6 +92,14 @@ describe('Modal', function () {
     });
   });
 
+  it('handles case when child has no tabbable elements', function() {
+    var component = renderModal({isOpen: true}, 'hello');
+    assert.doesNotThrow(function() {
+      Simulate.keyDown(component.portal.refs.content, {key: "Tab", keyCode: 9, which: 9})
+    });
+    unmountModal();
+  });
+
   it('supports custom className', function() {
     var modal = renderModal({isOpen: true, className: 'myClass'});
     equal(modal.portal.refs.content.className.contains('myClass'), true);