{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":279960943,"defaultBranch":"main","name":"react-native-macos","ownerLogin":"amgleitman","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2020-07-15T19:39:38.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/717674?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1712181286.0","currentOid":""},"activityList":{"items":[{"before":"26ab78e54afed20b2becf637551a8a4d73c5c539","after":"fee391cc227c43c86c78ef89cdd1c063d9a4cdbb","ref":"refs/heads/main","pushedAt":"2024-04-09T21:26:07.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Ensure ghost text doesn't appear when performing undos (#2105)\n\n* Ensure ghost text doesn't appear when performing undos\r\n\r\n* Clarify purpose of strict mode in `removingGhostTextFromString:strict:`\r\n\r\n* Add clarifying comments about `removingGhostTextFromString:strict:` nil checks\r\n\r\n---------\r\n\r\nCo-authored-by: Adam Gleitman ","shortMessageHtmlLink":"Ensure ghost text doesn't appear when performing undos (microsoft#2105)"}},{"before":"154299a68da7568e6ba7c2aea8d8f28e6511b8eb","after":null,"ref":"refs/heads/0.73-ghost-text-undo-fixes","pushedAt":"2024-04-03T21:54:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}},{"before":null,"after":"154299a68da7568e6ba7c2aea8d8f28e6511b8eb","ref":"refs/heads/0.73-ghost-text-undo-fixes","pushedAt":"2024-04-03T21:03:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Ensure ghost text doesn't appear when performing undos (#2105)\n\n* Ensure ghost text doesn't appear when performing undos\r\n\r\n* Clarify purpose of strict mode in `removingGhostTextFromString:strict:`\r\n\r\n* Add clarifying comments about `removingGhostTextFromString:strict:` nil checks\r\n\r\n---------\r\n\r\nCo-authored-by: Adam Gleitman ","shortMessageHtmlLink":"Ensure ghost text doesn't appear when performing undos (microsoft#2105)"}},{"before":"3c44bccbe02807ed831c6c063cba074d7fd91eca","after":null,"ref":"refs/heads/undo-ignores-ghost-text","pushedAt":"2024-04-03T21:02:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}},{"before":"5b951f72e858d10d81860464ec3c5d1eb1185ba2","after":"3c44bccbe02807ed831c6c063cba074d7fd91eca","ref":"refs/heads/undo-ignores-ghost-text","pushedAt":"2024-04-03T19:52:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Add clarifying comments about `removingGhostTextFromString:strict:` nil checks","shortMessageHtmlLink":"Add clarifying comments about removingGhostTextFromString:strict: n…"}},{"before":"bb542ba4ae91cf28e9a6af100dd84e8a38428177","after":"5b951f72e858d10d81860464ec3c5d1eb1185ba2","ref":"refs/heads/undo-ignores-ghost-text","pushedAt":"2024-04-03T18:26:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Clarify purpose of strict mode in `removingGhostTextFromString:strict:`","shortMessageHtmlLink":"Clarify purpose of strict mode in removingGhostTextFromString:strict:"}},{"before":null,"after":"bb542ba4ae91cf28e9a6af100dd84e8a38428177","ref":"refs/heads/undo-ignores-ghost-text","pushedAt":"2024-04-03T00:46:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Ensure ghost text doesn't appear when performing undos","shortMessageHtmlLink":"Ensure ghost text doesn't appear when performing undos"}},{"before":"ab75b799d0b615616609f1b51a94ee19eca74df4","after":null,"ref":"refs/heads/0.73-fix-transform","pushedAt":"2024-03-25T23:58:12.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}},{"before":"1641f14c113af223960d4869b25d67cd787e5be5","after":null,"ref":"refs/heads/fix-transform-prop","pushedAt":"2024-03-25T23:57:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}},{"before":null,"after":"ab75b799d0b615616609f1b51a94ee19eca74df4","ref":"refs/heads/0.73-fix-transform","pushedAt":"2024-03-25T22:55:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Address PR comments","shortMessageHtmlLink":"Address PR comments"}},{"before":"a4c03ca3343e2c9fafbcea1b2d49b17a5ff81925","after":"1641f14c113af223960d4869b25d67cd787e5be5","ref":"refs/heads/fix-transform-prop","pushedAt":"2024-03-25T22:36:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Address PR comments","shortMessageHtmlLink":"Address PR comments"}},{"before":"c90b0e12644cd4838a3be73b04f055048fa4de95","after":"a4c03ca3343e2c9fafbcea1b2d49b17a5ff81925","ref":"refs/heads/fix-transform-prop","pushedAt":"2024-03-25T21:52:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Move transform updating logic on Mac to RCTView","shortMessageHtmlLink":"Move transform updating logic on Mac to RCTView"}},{"before":"07a7bf2a46da6298646024caeb821509cf23c141","after":"c90b0e12644cd4838a3be73b04f055048fa4de95","ref":"refs/heads/fix-transform-prop","pushedAt":"2024-03-23T00:04:00.000Z","pushType":"push","commitsCount":22,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Add macOS tag","shortMessageHtmlLink":"Add macOS tag"}},{"before":"a064b8505acb2fdfc62a3baee0ef00617428ad06","after":"26ab78e54afed20b2becf637551a8a4d73c5c539","ref":"refs/heads/main","pushedAt":"2024-03-22T23:58:41.000Z","pushType":"push","commitsCount":20,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Fix new role prop after JS-Shim was removed by Meta (#2101)\n\n## Summary:\r\n\r\nmain targeted PR of #2100 \r\n\r\nPrior to 0.73, the new `role` prop was remapped to `accessibilityRole`\r\non the JS-side. Starting with #37304, the work needs to be completed on\r\nthe native side. Since the new prop is ARIA inspired, the mappings are\r\ntaking from the [ARIA Core\r\nAAM](https://www.w3.org/TR/core-aam-1.2/#mapping_role_table) which\r\ndisagrees with some of the mappings used in the old `accessibilityRole`\r\nprop. Users of the old prop are unaffected, but the new prop will take\r\nthe mappings from the spec.\r\n\r\n## Test Plan:\r\n\r\nTested a variety of permutations of accessibilityRole and role to\r\nconfirm the behavior looks correct in Accessibility Inspector","shortMessageHtmlLink":"Fix new role prop after JS-Shim was removed by Meta (microsoft#2101)"}},{"before":null,"after":"07a7bf2a46da6298646024caeb821509cf23c141","ref":"refs/heads/fix-transform-prop","pushedAt":"2024-03-22T23:23:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Fix transform prop","shortMessageHtmlLink":"Fix transform prop"}},{"before":"164469a0c424b8a6710b9f9b0d6f761ba289cec4","after":"a064b8505acb2fdfc62a3baee0ef00617428ad06","ref":"refs/heads/main","pushedAt":"2024-01-29T19:16:27.000Z","pushType":"push","commitsCount":21,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Add visionOS support (#2019)\n\n* Remove TARGET_OS_UIKITFORMAC macros (#42278)\r\n\r\nSummary:\r\nThere seems to be a lot of `TARGET_OS_UIKITFORMAC` macro in React Native that don't need to be there. Let's remove them.\r\n\r\nFirst off, what is `TARGET_OS_UIKITFORMAC` targeting? You might think it's [Mac Catalyst](https://developer.apple.com/mac-catalyst/), if you look at the [commit](https://github.com/facebook/react-native/commit/3724810d2168eb182db24acf9e741775df27ae13) introducing the ifdefs. However.. that doesn't seem right because `TARGET_OS_MACCATALYST` exists, and is used elsewhere in the codebase. In fact, if you look at this handy comment inside `TargetConditionals.h` (the file that defines all these conditionals), `TARGET_OS_UIKITFORMAC` is not even on there!\r\n\r\n```\r\n/*\r\n * TARGET_OS_*\r\n *\r\n * These conditionals specify in which Operating System the generated code will\r\n * run. Indention is used to show which conditionals are evolutionary subclasses.\r\n *\r\n * The MAC/WIN32/UNIX conditionals are mutually exclusive.\r\n * The IOS/TV/WATCH/VISION conditionals are mutually exclusive.\r\n *\r\n * TARGET_OS_WIN32 - Generated code will run on WIN32 API\r\n * TARGET_OS_WINDOWS - Generated code will run on Windows\r\n * TARGET_OS_UNIX - Generated code will run on some Unix (not macOS)\r\n * TARGET_OS_LINUX - Generated code will run on Linux\r\n * TARGET_OS_MAC - Generated code will run on a variant of macOS\r\n * TARGET_OS_OSX - Generated code will run on macOS\r\n * TARGET_OS_IPHONE - Generated code will run on a variant of iOS (firmware, devices, simulator)\r\n * TARGET_OS_IOS - Generated code will run on iOS\r\n * TARGET_OS_MACCATALYST - Generated code will run on macOS\r\n * TARGET_OS_TV - Generated code will run on tvOS\r\n * TARGET_OS_WATCH - Generated code will run on watchOS\r\n * TARGET_OS_VISION - Generated code will run on visionOS\r\n * TARGET_OS_BRIDGE - Generated code will run on bridge devices\r\n * TARGET_OS_SIMULATOR - Generated code will run on an iOS, tvOS, watchOS, or visionOS simulator\r\n * TARGET_OS_DRIVERKIT - Generated code will run on macOS, iOS, tvOS, watchOS, or visionOS\r\n *\r\n * TARGET_OS_EMBEDDED - DEPRECATED: Use TARGET_OS_IPHONE and/or TARGET_OS_SIMULATOR instead\r\n * TARGET_IPHONE_SIMULATOR - DEPRECATED: Same as TARGET_OS_SIMULATOR\r\n * TARGET_OS_NANO - DEPRECATED: Same as TARGET_OS_WATCH\r\n *\r\n * +--------------------------------------------------------------------------------------+\r\n * | TARGET_OS_MAC |\r\n * | +-----+ +------------------------------------------------------------+ +-----------+ |\r\n * | | | | TARGET_OS_IPHONE | | | |\r\n * | | | | +-----------------+ +----+ +-------+ +--------+ +--------+ | | | |\r\n * | | | | | IOS | | | | | | | | | | | | |\r\n * | | OSX | | | +-------------+ | | TV | | WATCH | | BRIDGE | | VISION | | | DRIVERKIT | |\r\n * | | | | | | MACCATALYST | | | | | | | | | | | | | |\r\n * | | | | | +-------------+ | | | | | | | | | | | | |\r\n * | | | | +-----------------+ +----+ +-------+ +--------+ +--------+ | | | |\r\n * | +-----+ +------------------------------------------------------------+ +-----------+ |\r\n * +--------------------------------------------------------------------------------------+\r\n */\r\n```\r\n\r\nGoing even deeper into `TargetConditionals.h`, you will see `TARGET_OS_UIKITFORMAC` defined... and it's always 1 when `TARGET_OS_MACCATALYST` is 1, making it feel even more redundant. My current conclusion is it's either another variant of Mac Catalyst (the one where they just run unmodified UIKit maybe..), or it's an older macro back from when Catalyst was still experimental.\r\n\r\nEither way, it's pretty obvious nobody is running or testing this codepath, and it adds bloat, especially to React Native macOS where we have extra ifdef blocks for macOS support (and eventually visionOS support). Let's remove it.\r\n\r\nAnother change I made while we're here:\r\nI've seen this lingering TODO to replace setTargetRect:InView: / setMenuVisible:animated: (deprecated as of iOS 13, below our minimum OS requirement) with showMenuFromView (deprecated as of iOS 16, in line with the availability check). Let's just.... do that?\r\n\r\n[IOS] [REMOVED] - Remove TARGET_OS_UIKITFORMAC macros\r\n\r\nPull Request resolved: https://github.com/facebook/react-native/pull/42278\r\n\r\nTest Plan:\r\nRNTester with Mac Catalyst still compiles:\r\n![Screenshot 2024-01-15 at 12 26 03 AM](https://github.com/facebook/react-native/assets/6722175/015bd37d-f536-43c7-9586-96187cdbd013)\r\n\r\nReviewed By: cipolleschi\r\n\r\nDifferential Revision: D52780690\r\n\r\nPulled By: sammy-SC\r\n\r\nfbshipit-source-id: df6a333e8e15f79de0ce6f538ebd73b92698dcb6\r\n\r\n* Remove an early return to suppress a deprecated API warning for `UIMenuController` (#42277)\r\n\r\nSummary:\r\n`UIMenuController` is deprecated as of iOS 16. https://github.com/facebook/react-native/commit/e08a1973f67d85acc157111c749c43572469e4c2 migrated a usage into an `available` check. However, it does not properly fall back to the deprecated API in the \"else\" block of the availability check, instead it uses an early return. It seems this means Xcode still sees the API as used, and spits out a deprecated warning. Let's just refactor the code so we don't have that anymore.\r\n\r\n[IOS] [FIXED] - Remove an early return to suppress a deprecated API warning for `UIMenuController`\r\n\r\nPull Request resolved: https://github.com/facebook/react-native/pull/42277\r\n\r\nTest Plan: CI should pass.\r\n\r\nReviewed By: cipolleschi\r\n\r\nDifferential Revision: D52785488\r\n\r\nPulled By: sammy-SC\r\n\r\nfbshipit-source-id: 0b47e8aa8d7c94728e3d68332fbb8f97f8ded34e\r\n\r\n* Native changes for visionOS","shortMessageHtmlLink":"Add visionOS support (microsoft#2019)"}},{"before":"4d2387233cf68914f2c174b4c71850053cdee3fe","after":null,"ref":"refs/heads/force-publish-virtualized-lists-73.3","pushedAt":"2023-12-28T01:45:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}},{"before":"247ca146c2730bfd6eaf36c38847f868d187953e","after":"4d2387233cf68914f2c174b4c71850053cdee3fe","ref":"refs/heads/force-publish-virtualized-lists-73.3","pushedAt":"2023-12-22T19:35:34.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Merge branch 'main' into force-publish-virtualized-lists-73.3","shortMessageHtmlLink":"Merge branch 'main' into force-publish-virtualized-lists-73.3"}},{"before":"b8b60b6f2da336b05edbfe1cd1c1718e4d268255","after":"164469a0c424b8a6710b9f9b0d6f761ba289cec4","ref":"refs/heads/main","pushedAt":"2023-12-19T00:15:11.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"fix(react-native): `runMacOS.js` depends on `@react-native-community/cli-tools` (#1993)","shortMessageHtmlLink":"fix(react-native): runMacOS.js depends on `@react-native-community/…"}},{"before":"a20841e52bca1fe986b02a442a695953d4182e19","after":null,"ref":"refs/heads/0.73-socket-connections-concurrency","pushedAt":"2023-12-08T20:27:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}},{"before":"fdb6ccb7ae447a22c7be5e89ab258916fff0c0c1","after":"247ca146c2730bfd6eaf36c38847f868d187953e","ref":"refs/heads/force-publish-virtualized-lists-73.3","pushedAt":"2023-12-07T22:27:52.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Merge branch 'main' into force-publish-virtualized-lists-73.3","shortMessageHtmlLink":"Merge branch 'main' into force-publish-virtualized-lists-73.3"}},{"before":"f5b4fccb6ff3220470b62f8284065e0b99b195db","after":"fdb6ccb7ae447a22c7be5e89ab258916fff0c0c1","ref":"refs/heads/force-publish-virtualized-lists-73.3","pushedAt":"2023-11-17T19:07:14.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Merge branch 'main' into force-publish-virtualized-lists-73.3","shortMessageHtmlLink":"Merge branch 'main' into force-publish-virtualized-lists-73.3"}},{"before":"59360007004a686ab8d73a729d2f74b6a8bad436","after":null,"ref":"refs/heads/remove-post-install-workaround","pushedAt":"2023-11-17T17:46:48.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}},{"before":null,"after":"59360007004a686ab8d73a729d2f74b6a8bad436","ref":"refs/heads/remove-post-install-workaround","pushedAt":"2023-11-16T22:08:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Remove call to Xcode 12.5 post-install workaround","shortMessageHtmlLink":"Remove call to Xcode 12.5 post-install workaround"}},{"before":"07c8e402eb19fb7eea8101ce594632596d5ed016","after":"f5b4fccb6ff3220470b62f8284065e0b99b195db","ref":"refs/heads/force-publish-virtualized-lists-73.3","pushedAt":"2023-11-16T01:54:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Rollback pre-bumped version to 0.73.2\nReason: semver caret apparently doesn't match \"newer\" prereleases\n(example: 0.73.3-0 doesn't satisfy ^0.73.0)","shortMessageHtmlLink":"Rollback pre-bumped version to 0.73.2"}},{"before":null,"after":"07c8e402eb19fb7eea8101ce594632596d5ed016","ref":"refs/heads/force-publish-virtualized-lists-73.3","pushedAt":"2023-11-15T23:02:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Change files","shortMessageHtmlLink":"Change files"}},{"before":null,"after":"a20841e52bca1fe986b02a442a695953d4182e19","ref":"refs/heads/0.73-socket-connections-concurrency","pushedAt":"2023-11-15T22:28:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"nit: delete empty line","shortMessageHtmlLink":"nit: delete empty line"}},{"before":null,"after":"86479d6353ea9ef34cdd7cb5001ee8b32315bf8e","ref":"refs/heads/0.72-socket-connections-concurrency","pushedAt":"2023-11-15T21:34:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"nit: delete empty line","shortMessageHtmlLink":"nit: delete empty line"}},{"before":"15ea449d0851aae85d63c2dbd8c15b460dba8888","after":"b8b60b6f2da336b05edbfe1cd1c1718e4d268255","ref":"refs/heads/main","pushedAt":"2023-11-15T00:16:44.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"},"commit":{"message":"Make socketConnections NSDictionary thread-safe (#1980)\n\n#### Please select one of the following\r\n- [ ] I am removing an existing difference between facebook/react-native\r\nand microsoft/react-native-macos :thumbsup:\r\n- [ ] I am cherry-picking a change from Facebook's react-native into\r\nmicrosoft/react-native-macos :thumbsup:\r\n- [x] I am making a fix / change for the macOS implementation of\r\nreact-native\r\n- [ ] I am making a change required for Microsoft usage of react-native\r\n\r\n## Summary:\r\n\r\nWe've seen a crash when we have multiple instances of React Native\r\nrunning in an app. It appears to be caused by multiple threads accessing\r\n`+[RCTInspectorDevServerHelper connectWithBundleURL:]` at the same time.\r\n\r\nTo fix this, we put all accesses to the `socketConnections` dictionary\r\nin a `@synchronized` block. This brings the iOS/macOS implementations up\r\nto speed with\r\n[Android](https://github.com/facebook/react-native/blob/050a5a379766318c3a9f322ceb5e13ef4cd8e7d2/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/websocket/WebSocketModule.java#L47),\r\nwhich uses a `ConcurrentHashMap`.\r\n\r\n## Changelog:\r\n\r\n[IOS] [FIXED] - Improve `RCTInspectorDevServerHelper` thread safety\r\n\r\n## Test Plan:\r\n\r\nTested this change in an internal app that consumes React Native and\r\nconfirmed that it doesn't crash. (Without this change, crashes happened\r\nintermittently but frequently enough that it was noticeable.)","shortMessageHtmlLink":"Make socketConnections NSDictionary thread-safe (microsoft#1980)"}},{"before":"718e45e3d75b7ec7870280e6140f6c9bd30615c7","after":null,"ref":"refs/heads/socket-connections-concurrency","pushedAt":"2023-11-14T22:05:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"amgleitman","name":"Adam Gleitman","path":"/amgleitman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/717674?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAELHBuLQA","startCursor":null,"endCursor":null}},"title":"Activity · amgleitman/react-native-macos"}