diff --git a/src/cursor/index.js b/src/cursor/index.js
index <HASH>..<HASH> 100644
--- a/src/cursor/index.js
+++ b/src/cursor/index.js
@@ -50,8 +50,10 @@ export default class Cursor extends React.Component {
   }
 
   render() {
+    const tabIndex = this.state.positionY === -1 ? 0 : -1;
+
     return (
-      <div onKeyDown={this.onKeyDown} tabIndex="0">
+      <div onKeyDown={this.onKeyDown} tabIndex={tabIndex}>
         {this.props.children(this.state.positionX, this.state.positionY)}
       </div>
     );
diff --git a/src/grid/grid-cell.js b/src/grid/grid-cell.js
index <HASH>..<HASH> 100644
--- a/src/grid/grid-cell.js
+++ b/src/grid/grid-cell.js
@@ -20,8 +20,10 @@ export default class Cell extends React.Component {
   }
 
   render() {
+    const tabIndex = this.props.active ? 0 : -1;
+
     return (
-      <span ref={this.nodeRef}>
+      <span tabIndex={tabIndex} ref={this.nodeRef}>
         {this.props.active ? 'cell!' : 'cell'}
       </span>
     );
Manage tab indices

Once a component has been active in a Cursor, the Cursor no longer received focus. This is the nature of composite widgets: the shell is only used as a means of getting the `first` focus.