diff --git a/packages/react-navigation/src/navigators/__tests__/NestedNavigator-test.js b/packages/react-navigation/src/navigators/__tests__/NestedNavigator-test.js
new file mode 100644
index 00000000..9fb3ef29
--- /dev/null
+++ b/packages/react-navigation/src/navigators/__tests__/NestedNavigator-test.js
@@ -0,0 +1,40 @@
+import React from 'react';
+import renderer from 'react-test-renderer';
+import StackNavigator from '../createStackNavigator';
+
+const SubNavigator = StackNavigator({
+ Home: {
+ screen: () => null,
+ },
+});
+
+const NavNestedDirect = StackNavigator({
+ Sub: {
+ screen: SubNavigator,
+ },
+});
+
+const NavNestedIndirect = StackNavigator({
+ Sub: {
+ // eslint-disable-next-line react/display-name
+ screen: props => ,
+ },
+});
+
+/* Prevent React error boundaries from swallowing the errors */
+NavNestedIndirect.prototype.componentDidCatch = null;
+SubNavigator.prototype.componentDidCatch = null;
+
+describe('Nested navigators', () => {
+ it('renders succesfully as direct child', () => {
+ const rendered = renderer.create().toJSON();
+ expect(rendered).toMatchSnapshot();
+ });
+
+ it('throw when trying to pass navigation prop', () => {
+ const tryRender = () => {
+ renderer.create();
+ };
+ expect(tryRender).toThrowErrorMatchingSnapshot();
+ });
+});
diff --git a/packages/react-navigation/src/navigators/__tests__/__snapshots__/NestedNavigator-test.js.snap b/packages/react-navigation/src/navigators/__tests__/__snapshots__/NestedNavigator-test.js.snap
new file mode 100644
index 00000000..0eef7f36
--- /dev/null
+++ b/packages/react-navigation/src/navigators/__tests__/__snapshots__/NestedNavigator-test.js.snap
@@ -0,0 +1,359 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Nested navigators renders succesfully as direct child 1`] = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
+
+exports[`Nested navigators throw when trying to pass navigation prop 1`] = `"No \\"routes\\" found in navigation state. Did you try to pass the navigation prop of a React component to a Navigator child? See https://reactnavigation.org/docs/en/custom-navigators.html#navigator-navigation-prop"`;
diff --git a/packages/react-navigation/src/navigators/createNavigator.js b/packages/react-navigation/src/navigators/createNavigator.js
index ab62fc87..a54416d1 100644
--- a/packages/react-navigation/src/navigators/createNavigator.js
+++ b/packages/react-navigation/src/navigators/createNavigator.js
@@ -22,9 +22,15 @@ function createNavigator(NavigatorView, router, navigationConfig) {
const { navigation, screenProps } = nextProps;
const { dispatch, state, addListener } = navigation;
const { routes } = state;
+ if (typeof routes === 'undefined') {
+ throw new TypeError(
+ 'No "routes" found in navigation state. Did you try to pass the navigation prop of a React component to a Navigator child? See https://reactnavigation.org/docs/en/custom-navigators.html#navigator-navigation-prop'
+ );
+ }
const descriptors = { ...prevState.descriptors };
const childEventSubscribers = { ...prevState.childEventSubscribers };
+
routes.forEach(route => {
if (
!descriptors[route.key] ||