{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":130961487,"defaultBranch":"main","name":"react-native-reanimated","ownerLogin":"software-mansion","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-04-25T06:35:29.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/56880679?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714558553.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"0efffaad068390d51fba80f0cf616d7f9db66b12","ref":"refs/heads/@piaskowyk/update-gesture-handler","pushedAt":"2024-05-01T10:15:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"piaskowyk","name":"Krzysztof Piaskowy","path":"/piaskowyk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36106620?s=80&v=4"},"commit":{"message":"Update react-native-gesture-handler version","shortMessageHtmlLink":"Update react-native-gesture-handler version"}},{"before":"ce0ae6e03c0dfa15841dbc64f33040e8827b3862","after":null,"ref":"refs/heads/@piaskowyk/3.10.0","pushedAt":"2024-05-01T09:52:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"piaskowyk","name":"Krzysztof Piaskowy","path":"/piaskowyk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36106620?s=80&v=4"}},{"before":"81c41309266c3391e026719dcb450acd296f00e9","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-5963-69a1ae140003cc638142b91c0654def172637690","pushedAt":"2024-05-01T09:52:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"69a1ae140003cc638142b91c0654def172637690","after":"81c41309266c3391e026719dcb450acd296f00e9","ref":"refs/heads/main","pushedAt":"2024-05-01T09:52:20.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Release 3.10.0 (#5963)\n\n## Summary\n\nRelease Reanimated 3.10.0 🐎","shortMessageHtmlLink":"Release 3.10.0 (#5963)"}},{"before":null,"after":"81c41309266c3391e026719dcb450acd296f00e9","ref":"refs/heads/gh-readonly-queue/main/pr-5963-69a1ae140003cc638142b91c0654def172637690","pushedAt":"2024-05-01T09:52:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Release 3.10.0 (#5963)\n\n## Summary\n\nRelease Reanimated 3.10.0 🐎","shortMessageHtmlLink":"Release 3.10.0 (#5963)"}},{"before":null,"after":"ce0ae6e03c0dfa15841dbc64f33040e8827b3862","ref":"refs/heads/@piaskowyk/3.10.0","pushedAt":"2024-05-01T08:26:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"piaskowyk","name":"Krzysztof Piaskowy","path":"/piaskowyk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36106620?s=80&v=4"},"commit":{"message":"Release 3.10.0","shortMessageHtmlLink":"Release 3.10.0"}},{"before":"b83179afda034ff05662ac7a49d3df2d19237f9b","after":null,"ref":"refs/heads/@maciekstosio/Investigate-unexpected-space-when-using-useAnimatedKeyboard","pushedAt":"2024-05-01T08:11:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"piaskowyk","name":"Krzysztof Piaskowy","path":"/piaskowyk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36106620?s=80&v=4"}},{"before":"69a1ae140003cc638142b91c0654def172637690","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-5851-80ef0eb0514696fd8b4cbeb5ee836a9a007d7006","pushedAt":"2024-05-01T08:11:30.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"80ef0eb0514696fd8b4cbeb5ee836a9a007d7006","after":"69a1ae140003cc638142b91c0654def172637690","ref":"refs/heads/main","pushedAt":"2024-05-01T08:11:29.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix calculating keyboard height (#5851)\n\n## Summary\n\nShould fix: #5811\n\nKeyboard height seems to be improperly calculated. Based on my\ninvestigation it seems that ` WindowInsetsCompat.Type.ime()` includes\nheight of the keyboard + bottom navigation. What Reanimated does\ncurrently is checking if navigation bar is visible\n(`KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);`) and then\nsubtracts the bottom inset `int keyboardHeight = DiphasNavigationBar ?\ncontentBottomInset - systemBarBottomInset : contentBottomInset;`. But to\nmy understanding `hasNavigationBar` is always true, thus when keyboard\nis hidden keyboard height becomes `-contentBottomInset`. So I changed\nthe navigation height to be `Math.max(0, keyboardHeightDip)`\n\nAdditionally in WindowInsetsManager.java I applied default paddings and\nadded padding bottom which should help correctly position element from\nthe bottom.\n\n### Remarks\n- on older androids < 11, hidden status bar rolls back to adjustPan\nkeyboard behavior\n- flag `isStatusBarTranslucentAndroid` doesn't seems to do anything when\nscreen has native header (`headerShown: true`)\n\n### Examples before vs after \n\n*Adding useAnimatedKeyboard breaks the layout*\n|Before|After|\n|-|-|\n|||\n\n*After closing the keyboard there is unexpected gap (negative height)*\n|Before|After|\n|-|-|\n|||\n\n*When StatusBar is hidden keyboard nor working properly on Android 10 -\nnot fixed but not a regression*\n|Before|After|\n|-|-|\n|||\n\n## Test plan\n\n
\nExample showing the problem\n\n```jsx\nimport React, { useEffect, useState } from 'react';\nimport Animated, {\n useAnimatedKeyboard,\n useAnimatedReaction,\n useAnimatedStyle,\n} from 'react-native-reanimated';\nimport {\n Platform,\n StatusBar,\n StyleSheet,\n TextInput,\n View,\n Text,\n Button,\n} from 'react-native';\n\nexport default function EmptyExample() {\n const [statusBarHidden, setStatusBarHidden] = useState(false);\n const keyboard = useAnimatedKeyboard();\n\n const animatedStyles = useAnimatedStyle(() => ({\n transform: [{ translateY: -keyboard.height.value }],\n }));\n\n useAnimatedReaction(\n () => {\n return keyboard.height.value;\n },\n (currentValue) => console.log(currentValue)\n );\n\n useEffect(() => {\n StatusBar.setHidden(statusBarHidden);\n }, [statusBarHidden]);\n\n return (\n \n setStatusBarHidden((hidden) => !hidden)}\n />\n console.warn('WARNING!!!!')}\n />\n \n {`Android ${Platform.constants['Release']}`}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n center: { justifyContent: 'center', alignItems: 'center' },\n});\n\n```\n\n
","shortMessageHtmlLink":"Fix calculating keyboard height (#5851)"}},{"before":null,"after":"69a1ae140003cc638142b91c0654def172637690","ref":"refs/heads/gh-readonly-queue/main/pr-5851-80ef0eb0514696fd8b4cbeb5ee836a9a007d7006","pushedAt":"2024-05-01T08:11:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix calculating keyboard height (#5851)\n\n## Summary\n\nShould fix: #5811\n\nKeyboard height seems to be improperly calculated. Based on my\ninvestigation it seems that ` WindowInsetsCompat.Type.ime()` includes\nheight of the keyboard + bottom navigation. What Reanimated does\ncurrently is checking if navigation bar is visible\n(`KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);`) and then\nsubtracts the bottom inset `int keyboardHeight = DiphasNavigationBar ?\ncontentBottomInset - systemBarBottomInset : contentBottomInset;`. But to\nmy understanding `hasNavigationBar` is always true, thus when keyboard\nis hidden keyboard height becomes `-contentBottomInset`. So I changed\nthe navigation height to be `Math.max(0, keyboardHeightDip)`\n\nAdditionally in WindowInsetsManager.java I applied default paddings and\nadded padding bottom which should help correctly position element from\nthe bottom.\n\n### Remarks\n- on older androids < 11, hidden status bar rolls back to adjustPan\nkeyboard behavior\n- flag `isStatusBarTranslucentAndroid` doesn't seems to do anything when\nscreen has native header (`headerShown: true`)\n\n### Examples before vs after \n\n*Adding useAnimatedKeyboard breaks the layout*\n|Before|After|\n|-|-|\n|||\n\n*After closing the keyboard there is unexpected gap (negative height)*\n|Before|After|\n|-|-|\n|||\n\n*When StatusBar is hidden keyboard nor working properly on Android 10 -\nnot fixed but not a regression*\n|Before|After|\n|-|-|\n|||\n\n## Test plan\n\n
\nExample showing the problem\n\n```jsx\nimport React, { useEffect, useState } from 'react';\nimport Animated, {\n useAnimatedKeyboard,\n useAnimatedReaction,\n useAnimatedStyle,\n} from 'react-native-reanimated';\nimport {\n Platform,\n StatusBar,\n StyleSheet,\n TextInput,\n View,\n Text,\n Button,\n} from 'react-native';\n\nexport default function EmptyExample() {\n const [statusBarHidden, setStatusBarHidden] = useState(false);\n const keyboard = useAnimatedKeyboard();\n\n const animatedStyles = useAnimatedStyle(() => ({\n transform: [{ translateY: -keyboard.height.value }],\n }));\n\n useAnimatedReaction(\n () => {\n return keyboard.height.value;\n },\n (currentValue) => console.log(currentValue)\n );\n\n useEffect(() => {\n StatusBar.setHidden(statusBarHidden);\n }, [statusBarHidden]);\n\n return (\n \n setStatusBarHidden((hidden) => !hidden)}\n />\n console.warn('WARNING!!!!')}\n />\n \n {`Android ${Platform.constants['Release']}`}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n center: { justifyContent: 'center', alignItems: 'center' },\n});\n\n```\n\n
","shortMessageHtmlLink":"Fix calculating keyboard height (#5851)"}},{"before":"6e67b56a53c2077f239e297467ef27805142b265","after":null,"ref":"refs/heads/cspell-update-30-04","pushedAt":"2024-05-01T08:11:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"piaskowyk","name":"Krzysztof Piaskowy","path":"/piaskowyk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36106620?s=80&v=4"}},{"before":"80ef0eb0514696fd8b4cbeb5ee836a9a007d7006","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-5961-99327e6e535d517cc0abe6561260b6f8a366a57c","pushedAt":"2024-05-01T08:11:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"99327e6e535d517cc0abe6561260b6f8a366a57c","after":"80ef0eb0514696fd8b4cbeb5ee836a9a007d7006","ref":"refs/heads/main","pushedAt":"2024-05-01T08:11:13.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Update `cspell.json` (#5961)\n\n## Summary\n\n## Test plan","shortMessageHtmlLink":"Update cspell.json (#5961)"}},{"before":null,"after":"80ef0eb0514696fd8b4cbeb5ee836a9a007d7006","ref":"refs/heads/gh-readonly-queue/main/pr-5961-99327e6e535d517cc0abe6561260b6f8a366a57c","pushedAt":"2024-05-01T08:11:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Update `cspell.json` (#5961)\n\n## Summary\n\n## Test plan","shortMessageHtmlLink":"Update cspell.json (#5961)"}},{"before":"fe3f23c18abfa69074b88d33c04940dfb64d4cc1","after":null,"ref":"refs/heads/@maciekstosio/Crash-while-using-useAnimatedKeyboard-in-FlatList","pushedAt":"2024-05-01T07:52:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"piaskowyk","name":"Krzysztof Piaskowy","path":"/piaskowyk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36106620?s=80&v=4"}},{"before":"99327e6e535d517cc0abe6561260b6f8a366a57c","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-5918-1c46a97b876c8367b28f3aee60cc3607f963bebe","pushedAt":"2024-05-01T07:52:13.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"1c46a97b876c8367b28f3aee60cc3607f963bebe","after":"99327e6e535d517cc0abe6561260b6f8a366a57c","ref":"refs/heads/main","pushedAt":"2024-05-01T07:52:12.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Crash while using useAnimatedKeyboard in flat list (#5918)\n\n## Summary\n\nFixes #5822\n\nTo keep track of all listeners we use hash map, and notify changes on\nall of them. When quickly opening flat list with components that use\nuseAnimatedKeyboard and focus on some keyboard, the flat list is still\nadding new components (adding new listeners), while listeners are\nnotified in the loop about the changes to the keyboard height. Changing\nHashMap to ConcurrentHashMap seems to fix the issue.\n\n|Before|After|\n|-|-|\n|||\n\n## Test plan\n\n
\nTest component\n\n```jsx\nimport React from 'react';\nimport {\n FlatList,\n SafeAreaView,\n StyleSheet,\n TextInput,\n View,\n} from 'react-native';\n\nimport {useAnimatedKeyboard} from 'react-native-reanimated';\n\nfunction Card() {\n useAnimatedKeyboard();\n\n return (\n \n );\n}\nexport default function ProfileScreen() {\n const array = Array(1000).fill(0);\n\n const renderHeader = () => (\n \n \n \n );\n\n return (\n \n }\n ListHeaderComponent={renderHeader}\n />\n \n );\n}\n\n```\n\n
","shortMessageHtmlLink":"Crash while using useAnimatedKeyboard in flat list (#5918)"}},{"before":null,"after":"99327e6e535d517cc0abe6561260b6f8a366a57c","ref":"refs/heads/gh-readonly-queue/main/pr-5918-1c46a97b876c8367b28f3aee60cc3607f963bebe","pushedAt":"2024-05-01T07:52:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Crash while using useAnimatedKeyboard in flat list (#5918)\n\n## Summary\n\nFixes #5822\n\nTo keep track of all listeners we use hash map, and notify changes on\nall of them. When quickly opening flat list with components that use\nuseAnimatedKeyboard and focus on some keyboard, the flat list is still\nadding new components (adding new listeners), while listeners are\nnotified in the loop about the changes to the keyboard height. Changing\nHashMap to ConcurrentHashMap seems to fix the issue.\n\n|Before|After|\n|-|-|\n|||\n\n## Test plan\n\n
\nTest component\n\n```jsx\nimport React from 'react';\nimport {\n FlatList,\n SafeAreaView,\n StyleSheet,\n TextInput,\n View,\n} from 'react-native';\n\nimport {useAnimatedKeyboard} from 'react-native-reanimated';\n\nfunction Card() {\n useAnimatedKeyboard();\n\n return (\n \n );\n}\nexport default function ProfileScreen() {\n const array = Array(1000).fill(0);\n\n const renderHeader = () => (\n \n \n \n );\n\n return (\n \n }\n ListHeaderComponent={renderHeader}\n />\n \n );\n}\n\n```\n\n
","shortMessageHtmlLink":"Crash while using useAnimatedKeyboard in flat list (#5918)"}},{"before":"d4b45caad5861b6949cd92f3924e153bc4908ba9","after":null,"ref":"refs/heads/@tomekzaw/fix-uimanager-infinite-loop","pushedAt":"2024-05-01T07:45:09.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"piaskowyk","name":"Krzysztof Piaskowy","path":"/piaskowyk","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36106620?s=80&v=4"}},{"before":"1c46a97b876c8367b28f3aee60cc3607f963bebe","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-5957-a8c09ee6ef3710b52e6023ede36c8509a994e233","pushedAt":"2024-05-01T07:45:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"a8c09ee6ef3710b52e6023ede36c8509a994e233","after":"1c46a97b876c8367b28f3aee60cc3607f963bebe","ref":"refs/heads/main","pushedAt":"2024-05-01T07:45:08.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Use `[RCTUIManager viewForReactTag:]` instead of `viewRegistry` to avoid infinite loop in `[RCTComponentViewRegistry objectForKey:]` (#5957)\n\n## Summary\n\nThis PR fixes the following infinite loop:\n\n\n![obraz](https://github.com/software-mansion/react-native-reanimated/assets/20516055/196f62a3-1e8b-411f-9d66-3e3946dc406f)\n\nFor details, see https://github.com/expo/expo/pull/28531.\n\n## Test plan\n\n1. Build Example app on iOS Paper on 0.74.0\n2. Open Bokeh example\n3. Go back\n4. Reload the app by pressing r in Metro console\n5. Repeat steps 2-4 several times\n6. When the app hangs, press pause button in Xcode debugger","shortMessageHtmlLink":"Use [RCTUIManager viewForReactTag:] instead of viewRegistry to av…"}},{"before":null,"after":"1c46a97b876c8367b28f3aee60cc3607f963bebe","ref":"refs/heads/gh-readonly-queue/main/pr-5957-a8c09ee6ef3710b52e6023ede36c8509a994e233","pushedAt":"2024-05-01T07:45:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Use `[RCTUIManager viewForReactTag:]` instead of `viewRegistry` to avoid infinite loop in `[RCTComponentViewRegistry objectForKey:]` (#5957)\n\n## Summary\n\nThis PR fixes the following infinite loop:\n\n\n![obraz](https://github.com/software-mansion/react-native-reanimated/assets/20516055/196f62a3-1e8b-411f-9d66-3e3946dc406f)\n\nFor details, see https://github.com/expo/expo/pull/28531.\n\n## Test plan\n\n1. Build Example app on iOS Paper on 0.74.0\n2. Open Bokeh example\n3. Go back\n4. Reload the app by pressing r in Metro console\n5. Repeat steps 2-4 several times\n6. When the app hangs, press pause button in Xcode debugger","shortMessageHtmlLink":"Use [RCTUIManager viewForReactTag:] instead of viewRegistry to av…"}},{"before":"a8c09ee6ef3710b52e6023ede36c8509a994e233","after":null,"ref":"refs/heads/gh-readonly-queue/main/pr-5958-2e729a72243134d4745e2faba89e86733a355210","pushedAt":"2024-05-01T07:43:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"}},{"before":"2e729a72243134d4745e2faba89e86733a355210","after":"a8c09ee6ef3710b52e6023ede36c8509a994e233","ref":"refs/heads/main","pushedAt":"2024-05-01T07:43:33.000Z","pushType":"merge_queue_merge","commitsCount":1,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix crashes when reloading app quickly on Android (#5958)\n\n## Summary\n\nFixes:\n\nhttps://github.com/software-mansion/react-native-reanimated/assets/9578601/949756a7-fb89-4bbd-89a6-52d1ba759083\n\nStack trace:\n```\nFATAL EXCEPTION: main\nProcess: com.lukaszkosmaty.myapp, PID: 17336\njava.lang.AssertionError\n\tat com.swmansion.reanimated.NodesManager.(NodesManager.java:157)\n\tat com.swmansion.reanimated.ReanimatedModule.getNodesManager(ReanimatedModule.java:133)\n\tat com.swmansion.reanimated.layoutReanimation.ReaLayoutAnimator.maybeInit(ReanimatedNativeHierarchyManager.java:47)\n\tat com.swmansion.reanimated.layoutReanimation.ReaLayoutAnimator.isLayoutAnimationEnabled(ReanimatedNativeHierarchyManager.java:193)\n\tat com.swmansion.reanimated.layoutReanimation.ReanimatedNativeHierarchyManager.isLayoutAnimationDisabled(ReanimatedNativeHierarchyManager.java:269)\n\tat com.swmansion.reanimated.layoutReanimation.ReanimatedNativeHierarchyManager.dropView(ReanimatedNativeHierarchyManager.java:416)\n\tat com.facebook.react.uimanager.NativeViewHierarchyManager.removeRootView(NativeViewHierarchyManager.java:665)\n\tat com.facebook.react.uimanager.UIViewOperationQueue$RemoveRootViewOperation.execute(UIViewOperationQueue.java:79)\n\tat com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:910)\n\tat com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1023)\n\tat com.facebook.react.uimanager.UIViewOperationQueue.-$$Nest$mflushPendingBatches(Unknown Source:0)\n\tat com.facebook.react.uimanager.UIViewOperationQueue$2.runGuarded(UIViewOperationQueue.java:979)\n\tat com.facebook.react.bridge.GuardedRunnable.run(GuardedRunnable.java:29)\n\tat android.os.Handler.handleCallback(Handler.java:938)\n\tat android.os.Handler.dispatchMessage(Handler.java:99)\n\tat android.os.Looper.loopOnce(Looper.java:201)\n\tat android.os.Looper.loop(Looper.java:288)\n\tat android.app.ActivityThread.main(ActivityThread.java:7839)\n\tat java.lang.reflect.Method.invoke(Native Method)\n\tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)\n```\n\nIt seems that the code is attempting to trigger the layout animation for\nviews that are going to be removed, but due to the app being in a\nreloading state, the native side is not fully initialized. I believe\nthat in such cases, it would be best to temporarily disable the layout\nanimation.\n\n![Screenshot 2024-04-30 at 16 07\n33](https://github.com/software-mansion/react-native-reanimated/assets/9578601/74aebe14-0619-4bc1-9927-a0860b22d68a)\n\n> ⚠️ Note: I'm not 100% sure if that is a correct fix, however, I don't\nhave any other ideas.\n\n## Test plan\n\nThe crash also happens without the `dev-client`, but it isn't that\noften. So it's easier to reproduce it like this.\n```\nyarn create expo-app --template default@sdk-51\ncd my-app\nyarn expo install expo-dev-client\nyarn expo run:android\n# reload the app multiple times \n```\n\n---------\n\nCo-authored-by: Krzysztof Piaskowy ","shortMessageHtmlLink":"Fix crashes when reloading app quickly on Android (#5958)"}},{"before":null,"after":"a8c09ee6ef3710b52e6023ede36c8509a994e233","ref":"refs/heads/gh-readonly-queue/main/pr-5958-2e729a72243134d4745e2faba89e86733a355210","pushedAt":"2024-05-01T07:43:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"github-merge-queue[bot]","name":null,"path":"/apps/github-merge-queue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9919?s=80&v=4"},"commit":{"message":"Fix crashes when reloading app quickly on Android (#5958)\n\n## Summary\n\nFixes:\n\nhttps://github.com/software-mansion/react-native-reanimated/assets/9578601/949756a7-fb89-4bbd-89a6-52d1ba759083\n\nStack trace:\n```\nFATAL EXCEPTION: main\nProcess: com.lukaszkosmaty.myapp, PID: 17336\njava.lang.AssertionError\n\tat com.swmansion.reanimated.NodesManager.(NodesManager.java:157)\n\tat com.swmansion.reanimated.ReanimatedModule.getNodesManager(ReanimatedModule.java:133)\n\tat com.swmansion.reanimated.layoutReanimation.ReaLayoutAnimator.maybeInit(ReanimatedNativeHierarchyManager.java:47)\n\tat com.swmansion.reanimated.layoutReanimation.ReaLayoutAnimator.isLayoutAnimationEnabled(ReanimatedNativeHierarchyManager.java:193)\n\tat com.swmansion.reanimated.layoutReanimation.ReanimatedNativeHierarchyManager.isLayoutAnimationDisabled(ReanimatedNativeHierarchyManager.java:269)\n\tat com.swmansion.reanimated.layoutReanimation.ReanimatedNativeHierarchyManager.dropView(ReanimatedNativeHierarchyManager.java:416)\n\tat com.facebook.react.uimanager.NativeViewHierarchyManager.removeRootView(NativeViewHierarchyManager.java:665)\n\tat com.facebook.react.uimanager.UIViewOperationQueue$RemoveRootViewOperation.execute(UIViewOperationQueue.java:79)\n\tat com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:910)\n\tat com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1023)\n\tat com.facebook.react.uimanager.UIViewOperationQueue.-$$Nest$mflushPendingBatches(Unknown Source:0)\n\tat com.facebook.react.uimanager.UIViewOperationQueue$2.runGuarded(UIViewOperationQueue.java:979)\n\tat com.facebook.react.bridge.GuardedRunnable.run(GuardedRunnable.java:29)\n\tat android.os.Handler.handleCallback(Handler.java:938)\n\tat android.os.Handler.dispatchMessage(Handler.java:99)\n\tat android.os.Looper.loopOnce(Looper.java:201)\n\tat android.os.Looper.loop(Looper.java:288)\n\tat android.app.ActivityThread.main(ActivityThread.java:7839)\n\tat java.lang.reflect.Method.invoke(Native Method)\n\tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)\n```\n\nIt seems that the code is attempting to trigger the layout animation for\nviews that are going to be removed, but due to the app being in a\nreloading state, the native side is not fully initialized. I believe\nthat in such cases, it would be best to temporarily disable the layout\nanimation.\n\n![Screenshot 2024-04-30 at 16 07\n33](https://github.com/software-mansion/react-native-reanimated/assets/9578601/74aebe14-0619-4bc1-9927-a0860b22d68a)\n\n> ⚠️ Note: I'm not 100% sure if that is a correct fix, however, I don't\nhave any other ideas.\n\n## Test plan\n\nThe crash also happens without the `dev-client`, but it isn't that\noften. So it's easier to reproduce it like this.\n```\nyarn create expo-app --template default@sdk-51\ncd my-app\nyarn expo install expo-dev-client\nyarn expo run:android\n# reload the app multiple times \n```\n\n---------\n\nCo-authored-by: Krzysztof Piaskowy ","shortMessageHtmlLink":"Fix crashes when reloading app quickly on Android (#5958)"}},{"before":null,"after":"6e67b56a53c2077f239e297467ef27805142b265","ref":"refs/heads/cspell-update-30-04","pushedAt":"2024-04-30T17:29:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"szydlovsky","name":"Mikołaj Szydłowski","path":"/szydlovsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/77503811?s=80&v=4"},"commit":{"message":"Update `cspell.json`","shortMessageHtmlLink":"Update cspell.json"}},{"before":null,"after":"10096b1b6bd1b3674defd8c2886e10ecfad92c9e","ref":"refs/heads/@szydlovsky/rework-animatedComponent-tags","pushedAt":"2024-04-30T15:48:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"szydlovsky","name":"Mikołaj Szydłowski","path":"/szydlovsky","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/77503811?s=80&v=4"},"commit":{"message":"make animated components use different tag for events","shortMessageHtmlLink":"make animated components use different tag for events"}},{"before":"97e440fe87d74f01683fac3f79cb3831b0051648","after":"18005ba8980e197d5fb37f20f0ecb51dd5cdb597","ref":"refs/heads/acynk/add_more_tests","pushedAt":"2024-04-30T15:00:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Latropos","name":"Alex Cynk","path":"/Latropos","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56199675?s=80&v=4"},"commit":{"message":"Fix spelling","shortMessageHtmlLink":"Fix spelling"}},{"before":"f01937095eb4c9ed133c6d02e9cc784da4cf1af3","after":"97e440fe87d74f01683fac3f79cb3831b0051648","ref":"refs/heads/acynk/add_more_tests","pushedAt":"2024-04-30T13:55:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Latropos","name":"Alex Cynk","path":"/Latropos","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56199675?s=80&v=4"},"commit":{"message":"Polish tests","shortMessageHtmlLink":"Polish tests"}},{"before":null,"after":"d4b45caad5861b6949cd92f3924e153bc4908ba9","ref":"refs/heads/@tomekzaw/fix-uimanager-infinite-loop","pushedAt":"2024-04-30T13:34:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"tomekzaw","name":"Tomek Zawadzki","path":"/tomekzaw","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20516055?s=80&v=4"},"commit":{"message":"Use `[RCTUIManager viewForReactTag:]` instead of `viewRegistry` to avoid infinite loop in `[RCTComponentViewRegistry objectForKey:]`","shortMessageHtmlLink":"Use [RCTUIManager viewForReactTag:] instead of viewRegistry to av…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEPsoEEQA","startCursor":null,"endCursor":null}},"title":"Activity · software-mansion/react-native-reanimated"}