Skip to content

fix(0.81, macos): shadow color and scroll indicator crashes, two compiler warnings - #3132

Draft
Saad Najmi (Saadnajmi) wants to merge 6 commits into
0.81-stablefrom
0.81/saadnajmi/macos-fixes
Draft

Saad Najmi (Saadnajmi) wants to merge 6 commits into
0.81-stablefrom
0.81/saadnajmi/macos-fixes

Conversation

@Saadnajmi

@Saadnajmi Saad Najmi (Saadnajmi) commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary:

Backports these fixes to 0.81-stable:

It also adds a version plan for a patch release, and demotes 0.81 from latest in nx.json (as #2801 did for 0.79), since react-native-macos@latest is 0.83 now. Without that, the NPM Publish (Dry Run) check fails on every 0.81-stable PR, and would block the release. Office has been patching these in its copy of React Native macOS, and needs them in a 0.81 release so it can stop.

Test Plan:

  • Built React Native macOS 0.81.9 in Office with these changes, for macOS arm64 and x86_64 (debug, warnings as errors, without suppressing either warning): no compiler warnings.
  • The NPM Publish (Dry Run) check passes, and versions the packages as 0.81.10.

On macOS, RCTView declares shadowColor as an assign CGColorRef property, so it kept
the color it was given without retaining it. That color is autoreleased, so by the
time didUpdateShadow read it, it could already be freed, which crashed.

Convert the color to an NSColor as soon as it's set, and keep that instead. Setting
it to NULL clears the color.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
…llView

RCTScrollViewManager exports scrollIndicatorInsets, verticalScrollIndicatorInsets and
automaticallyAdjustsScrollIndicatorInsets on every platform, but on macOS RCTScrollView
has no setters for them, so setting one from JavaScript crashed. Add no-op setters on
macOS.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
…rfaceLayoutDirection values

On macOS, RCTUIKit makes UIUserInterfaceLayoutDirection an alias of
NSUserInterfaceLayoutDirection, but declared the LeftToRight and RightToLeft
constants in a separate, unnamed enum. Comparing a layout direction with them, as
RCTTextAttributes.mm does, mixes two enumeration types, which C++20 deprecates and
clang reports with -Wdeprecated-anon-enum-enum-conversion.

Define the constants as the NSUserInterfaceLayoutDirection values, like the type.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
…laration

RCTInspectorNetworkReporter.h declares reportRequestFailed:cancelled: with a BOOL
parameter, but the implementation took bool. They're the same type on arm64, but on
x86_64 macOS and Mac Catalyst BOOL is signed char, so the definition didn't match its
declaration and clang warned with -Wmismatched-parameter-types.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a
react-native-macos@latest is 0.83 now, so tag 0.81 releases with 0.81-stable
instead, as #2801 did for 0.79. Until then, the prepublish check in the NPM
Publish (Dry Run) job fails on every 0.81-stable pull request, and would block
the next 0.81 release.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 33ac4470-c1d2-43c0-92ee-8407909f0f6a

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant