diff --git a/Libraries/ART/ReactNativeART.js b/Libraries/ART/ReactNativeART.js
index 0ee68bca11825a..419fde98325572 100644
--- a/Libraries/ART/ReactNativeART.js
+++ b/Libraries/ART/ReactNativeART.js
@@ -19,6 +19,7 @@ var ReactNativeViewAttributes = require('ReactNativeViewAttributes');
var createReactNativeComponentClass = require('createReactNativeComponentClass');
var merge = require('merge');
+var invariant = require('fbjs/lib/invariant');
// Diff Helpers
@@ -137,6 +138,14 @@ function childrenAsString(children) {
// Surface - Root node of all ART
class Surface extends React.Component {
+ static childContextTypes = {
+ isInSurface: React.PropTypes.bool,
+ };
+
+ getChildContext() {
+ return { isInSurface: true };
+ }
+
render() {
var props = this.props;
var w = extractNumber(props.width, 0);
@@ -203,8 +212,16 @@ function extractOpacity(props) {
// ReactART.
class Group extends React.Component {
+ static contextTypes = {
+ isInSurface: React.PropTypes.bool.isRequired,
+ };
+
render() {
var props = this.props;
+ invariant(
+ this.context.isInSurface,
+ 'ART: must be a child of a '
+ );
return (