diff --git a/packages/stack/example/package.json b/packages/stack/example/package.json
index fdace5d9..76c3b4e1 100644
--- a/packages/stack/example/package.json
+++ b/packages/stack/example/package.json
@@ -25,7 +25,7 @@
"react-native-unimodules": "~0.5.2",
"react-native-web": "^0.11.4",
"react-native-webview": "~5.12.0",
- "react-navigation": "^4.0.4",
+ "react-navigation": "^4.0.5",
"react-navigation-drawer": "^2.0.0",
"react-navigation-tabs": "2.2.0"
},
diff --git a/packages/stack/example/yarn.lock b/packages/stack/example/yarn.lock
index aa3e2dbd..b8ab50b9 100644
--- a/packages/stack/example/yarn.lock
+++ b/packages/stack/example/yarn.lock
@@ -1261,10 +1261,10 @@
resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.1.tgz#dbcfc5ec08efbb02d4142dd9426c8d7a396829d7"
integrity sha512-EyJVSbarZkOPYq+zCZLx9apMcpwkX9HvH6R+6CeVL29q88kEFemnLO/IhmE4YX/0MfalsduI8eTi7fuQh/5VeA==
-"@react-navigation/core@^3.5.0":
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.0.tgz#73d1a12448e2bd71855e0080b95a7f51ede0cd9e"
- integrity sha512-NLm24lA51R8o8c+iFnwtN9elqRzm4OJ8f1qPBCUNIYW1sb8M5yCD53vRP0fRcPFpr/6Xzs2TJMsWnnebwFp0Rw==
+"@react-navigation/core@^3.5.1":
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.1.tgz#7a2339fca3496979305fb3a8ab88c2ca8d8c214d"
+ integrity sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA==
dependencies:
hoist-non-react-statics "^3.3.0"
path-to-regexp "^1.7.0"
@@ -9451,12 +9451,12 @@ react-navigation-tabs@2.2.0:
react-lifecycles-compat "^3.0.4"
react-native-tab-view "^2.6.2"
-react-navigation@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.4.tgz#afa43c7183891d38708cf57f1d4394fed1d4c2ad"
- integrity sha512-MZeVkYkFTKZobhrXMV3Hgeg0HHeokCrYsbxActVfO0n6zfzm0/La6EiC2mIHiwOymvb1ZygyFf90vryLUMEBNA==
+react-navigation@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.5.tgz#d4e16d9884cfd6bb2cda4d16e001227e2c859b46"
+ integrity sha512-VidRiSA2RvrgPlKs/7FNKV6pXEYXREtxiEl6m/Dmfb8x27amG6JRibzJC2mpWt4w0SAIGMUjHallRi3h9sIk0A==
dependencies:
- "@react-navigation/core" "^3.5.0"
+ "@react-navigation/core" "^3.5.1"
"@react-navigation/native" "^3.6.2"
react-proxy@^1.1.7:
diff --git a/packages/stack/package.json b/packages/stack/package.json
index 93f96830..5834310f 100644
--- a/packages/stack/package.json
+++ b/packages/stack/package.json
@@ -68,7 +68,7 @@
"react-native-gesture-handler": "^1.3.0",
"react-native-reanimated": "^1.1.0",
"react-native-screens": "^1.0.0-alpha.23",
- "react-navigation": "^4.0.4",
+ "react-navigation": "^4.0.5",
"react-test-renderer": "16.8.3",
"release-it": "^12.3.2",
"scheduler": "^0.14.0",
@@ -81,7 +81,7 @@
"react-native-gesture-handler": "^1.0.0",
"react-native-reanimated": "^1.3.0-alpha",
"react-native-screens": "^1.0.0 || ^1.0.0-alpha",
- "react-navigation": "^4.0.4"
+ "react-navigation": "^4.0.5"
},
"jest": {
"preset": "react-native",
diff --git a/packages/stack/src/views/Stack/Stack.tsx b/packages/stack/src/views/Stack/Stack.tsx
index 0068e715..9854a302 100755
--- a/packages/stack/src/views/Stack/Stack.tsx
+++ b/packages/stack/src/views/Stack/Stack.tsx
@@ -102,6 +102,8 @@ const MaybeScreen = ({
return ;
};
+const FALLBACK_DESCRIPTOR = Object.freeze({ options: {} });
+
const { cond, eq } = Animated;
const ANIMATED_ONE = new Animated.Value(1);
@@ -163,10 +165,14 @@ export default class Stack extends React.Component {
: undefined;
const next = nextRoute ? progress[nextRoute.key] : undefined;
+ const oldScene = state.scenes[index];
const scene = {
route,
previous: previousRoute,
- descriptor: props.descriptors[route.key],
+ descriptor:
+ props.descriptors[route.key] ||
+ state.descriptors[route.key] ||
+ (oldScene ? oldScene.descriptor : FALLBACK_DESCRIPTOR),
progress: {
current,
next,
@@ -174,8 +180,6 @@ export default class Stack extends React.Component {
},
};
- const oldScene = state.scenes[index];
-
if (
oldScene &&
scene.route === oldScene.route &&
diff --git a/packages/stack/yarn.lock b/packages/stack/yarn.lock
index f0b1f99b..f0e87233 100644
--- a/packages/stack/yarn.lock
+++ b/packages/stack/yarn.lock
@@ -1155,10 +1155,10 @@
resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.1.tgz#dbcfc5ec08efbb02d4142dd9426c8d7a396829d7"
integrity sha512-EyJVSbarZkOPYq+zCZLx9apMcpwkX9HvH6R+6CeVL29q88kEFemnLO/IhmE4YX/0MfalsduI8eTi7fuQh/5VeA==
-"@react-navigation/core@^3.5.0":
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.0.tgz#73d1a12448e2bd71855e0080b95a7f51ede0cd9e"
- integrity sha512-NLm24lA51R8o8c+iFnwtN9elqRzm4OJ8f1qPBCUNIYW1sb8M5yCD53vRP0fRcPFpr/6Xzs2TJMsWnnebwFp0Rw==
+"@react-navigation/core@^3.5.1":
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.1.tgz#7a2339fca3496979305fb3a8ab88c2ca8d8c214d"
+ integrity sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA==
dependencies:
hoist-non-react-statics "^3.3.0"
path-to-regexp "^1.7.0"
@@ -7333,12 +7333,12 @@ react-native@~0.59.8:
xmldoc "^0.4.0"
yargs "^9.0.0"
-react-navigation@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.4.tgz#afa43c7183891d38708cf57f1d4394fed1d4c2ad"
- integrity sha512-MZeVkYkFTKZobhrXMV3Hgeg0HHeokCrYsbxActVfO0n6zfzm0/La6EiC2mIHiwOymvb1ZygyFf90vryLUMEBNA==
+react-navigation@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.5.tgz#d4e16d9884cfd6bb2cda4d16e001227e2c859b46"
+ integrity sha512-VidRiSA2RvrgPlKs/7FNKV6pXEYXREtxiEl6m/Dmfb8x27amG6JRibzJC2mpWt4w0SAIGMUjHallRi3h9sIk0A==
dependencies:
- "@react-navigation/core" "^3.5.0"
+ "@react-navigation/core" "^3.5.1"
"@react-navigation/native" "^3.6.2"
react-proxy@^1.1.7: