diff --git a/.ado/android-pr.yml b/.ado/android-pr.yml
index fd4ac235668491..3507ec1b964df4 100644
--- a/.ado/android-pr.yml
+++ b/.ado/android-pr.yml
@@ -74,10 +74,24 @@ jobs:
           SYSTEM_ACCESSTOKEN: $(System.AccessToken)
           githubApiToken: $(githubApiToken)
 
-      - task: CmdLine@2
-        displayName: gradlew clean
-        inputs:
-          script: ./gradlew clean
+#     In RN64 "clean" task tries to run the build again. It is reproing in 0.64-stable branch but fixed in 0.65-stable.
+#     I can't zero on the exact cause .. but turns out the issue is with rntester clean task.
+#     
+#     mganandraj@RNDroid:~/github/rnm-64$ ./gradlew :packages:rn-tester:android:app:clean --dry-run
+#     :packages:react-native-codegen:android:buildCodegenCLI SKIPPED
+#     :packages:rn-tester:android:app:generateCodegenSchemaFromJavaScript SKIPPED
+#     :packages:rn-tester:android:app:generateCodegenArtifactsFromSchema SKIPPED
+#     :ReactAndroid:extractAARHeaders SKIPPED
+#     :ReactAndroid:extractJNIFiles SKIPPED
+#     :ReactAndroid:generateCodegenSchemaFromJavaScript SKIPPED
+#     :ReactAndroid:generateCodegenArtifactsFromSchema SKIPPED
+#     :ReactAndroid:prepareBoost SKIPPED
+#     :ReactAndroid:createNativeDepsDirectories SKIPPED
+#     ..
+#      - task: CmdLine@2
+#        displayName: gradlew clean
+#        inputs:
+#          script: ./gradlew clean
 
       - task: PublishBuildArtifacts@1
         displayName: 'Publish final artifacts'
diff --git a/.ado/apple-integration.yml b/.ado/apple-integration.yml
new file mode 100644
index 00000000000000..f4185b971be388
--- /dev/null
+++ b/.ado/apple-integration.yml
@@ -0,0 +1,97 @@
+name: Integrate $(Date:yyyyMMdd).$(Rev:.r)
+variables:
+  - template: variables/mac.yml
+trigger:
+  branches:
+    include:
+      - master
+      - '*-stable'
+  paths:
+    exclude:
+      - '*.md'
+pr:
+  branches:
+    include:
+      - master
+      - '*-stable'
+  paths:
+    exclude:
+      - '*.md'
+jobs:
+  - job: react_native_test_app
+    displayName: react-native-test-app
+    pool:
+      vmImage: $(VmImage)
+      demands: ['npm', 'sh', 'xcode']
+    workspace:
+      clean: all
+    timeoutInMinutes: 60
+    cancelTimeoutInMinutes: 5
+    steps:
+      - template: templates/apple-node-setup.yml
+      - template: templates/apple-xcode-select.yml
+        parameters:
+          slice_name: $(slice_name)
+          xcode_version: $(xcode_version)
+      - bash: |
+          echo "##vso[task.setvariable variable=package_version]$(cat package.json | jq .version | awk '{ print substr($0, 2, length($0) - 2) }')"
+          echo "##vso[task.setvariable variable=react_version]$(cat package.json | jq .peerDependencies.react)"
+          echo "##vso[task.setvariable variable=rncli_version]$(cat package.json | jq '.dependencies."@react-native-community/cli"')"
+        displayName: 'Determine react-native-macos version'
+      - bash: |
+          npm pack
+        displayName: 'Pack react-native-macos'
+      - bash: |
+          git clone --progress https://github.com/microsoft/react-native-test-app.git
+        displayName: Checkout react-native-test-app
+      - bash: |
+          set -eo pipefail
+          cat package.json |
+            jq '.devDependencies["react"] = $(react_version)' |
+            jq '.devDependencies["react-native"] = "^0.64"' |
+            jq '.devDependencies["react-native-macos"] = "../react-native-macos-$(package_version).tgz"' |
+            jq 'del(.devDependencies["@react-native-community/cli"])' |
+            jq 'del(.devDependencies["@react-native-community/cli-platform-android"])' |
+            jq 'del(.devDependencies["@react-native-community/cli-platform-ios"])' |
+            jq 'del(.devDependencies["react-native-windows"])' > .package.json
+          mv .package.json package.json
+          cat package.json | jq .devDependencies
+        displayName: Modify react-native-test-app dependencies
+        workingDirectory: react-native-test-app
+      - bash: |
+          set -eo pipefail
+          cat package.json |
+            jq '.devDependencies["@react-native-community/cli"] = $(rncli_version)' |
+            jq '.devDependencies["@react-native-community/cli-platform-android"] = $(rncli_version)' |
+            jq '.devDependencies["@react-native-community/cli-platform-ios"] = $(rncli_version)' |
+            jq '.devDependencies["react"] = $(react_version)' |
+            jq '.devDependencies["react-native"] = "^0.64"' |
+            jq '.devDependencies["react-native-macos"] = "../../react-native-macos-$(package_version).tgz"' |
+            jq 'del(.devDependencies["react-native-windows"])' > .package.json
+          mv .package.json package.json
+          cat package.json | jq .devDependencies
+        displayName: Modify example app dependencies
+        workingDirectory: react-native-test-app/example
+      - bash: |
+          yarn --no-immutable
+        displayName: Install npm dependencies
+        workingDirectory: react-native-test-app
+      - bash: |
+          yarn build:macos || yarn build:macos
+        displayName: Bundle JavaScript
+        workingDirectory: react-native-test-app/example
+      - bash: |
+          pod install --project-directory=macos
+        displayName: Install Pods
+        workingDirectory: react-native-test-app/example
+      - bash: |
+          set -eo pipefail
+          ../scripts/xcodebuild.sh macos/Example.xcworkspace build
+        displayName: Build Intel
+        workingDirectory: react-native-test-app/example
+      - bash: |
+          set -eo pipefail
+          ../scripts/xcodebuild.sh macos/Example.xcworkspace clean
+          ../scripts/xcodebuild.sh macos/Example.xcworkspace build ARCHS=arm64
+        displayName: Build ARM
+        workingDirectory: react-native-test-app/example
diff --git a/.ado/gitTagRelease.js b/.ado/gitTagRelease.js
index 70fe26d187fbe4..75c96ccc089912 100644
--- a/.ado/gitTagRelease.js
+++ b/.ado/gitTagRelease.js
@@ -28,7 +28,7 @@ function doPublish() {
   exec(`git config --global user.email "53619745+rnbot@users.noreply.github.com"`);
   exec(`git config --global user.name "React-Native Bot"`);
 
-  exec(`git add ${pkgJsonPath}`);
+  exec(`git add .`);
   exec(`git commit -m "Applying package update to ${releaseVersion} ***NO_CI***"`);
   exec(`git tag v${releaseVersion}`);
   exec(`git push origin HEAD:${tempPublishBranch} --follow-tags --verbose`);
diff --git a/.ado/npmOfficePack.js b/.ado/npmOfficePack.js
index 7f383ce3c7afd4..b1d549ed9ba0bb 100644
--- a/.ado/npmOfficePack.js
+++ b/.ado/npmOfficePack.js
@@ -28,7 +28,7 @@ function doPublish(fakeMode) {
   if (!onlyTagSource) {
     // -------- Generating Android Artifacts with JavaDoc
     const depsEnvPrefix = "REACT_NATIVE_BOOST_PATH=" + path.join(process.env.BUILD_SOURCESDIRECTORY, "build_deps");
-    const gradleCommand = path.join(process.env.BUILD_SOURCESDIRECTORY, "gradlew") + " installArchives";
+    const gradleCommand = path.join(process.env.BUILD_SOURCESDIRECTORY, "gradlew") + " installArchives -Pparam=\"excludeLibs\"";
     exec( depsEnvPrefix + " " + gradleCommand );
 
     // undo uncommenting javadoc setting
diff --git a/.ado/publish.yml b/.ado/publish.yml
index 410840614be5ce..4a5cce7542fbc1 100644
--- a/.ado/publish.yml
+++ b/.ado/publish.yml
@@ -16,11 +16,14 @@ trigger:
 
 pr: none
 
+variables:
+  - template: variables/mac.yml
+
 jobs:
   - job: RNGithubNpmJSPublish
     displayName: React-Native GitHub Publish to npmjs.org
     pool:
-      vmImage: vs2017-win2016
+      vmImage: $(VmImage)
     timeoutInMinutes: 90 # how long to run the job before automatically cancelling
     cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them
     steps:
@@ -47,6 +50,8 @@ jobs:
         displayName: Set dist-tag to v0.x-stable
         condition: and(ne(variables['Build.SourceBranchName'], 'master'), ne(variables['Build.SourceBranchName'], variables.latestStableBranch))
 
+      - template: templates/apple-node-setup.yml
+
       - task: CmdLine@2
         displayName: yarn install
         inputs:
@@ -56,17 +61,37 @@ jobs:
         displayName: Bump stable package version
         inputs:
           script: node .ado/bumpFileVersions.js
-        condition: ne(variables['Build.SourceBranchName'], 'master')
+        condition: and(succeeded(), ne(variables['Build.SourceBranchName'], 'master'))
+
+      - task: CmdLine@2
+        displayName: pod update React-TurboModuleCxx-RNW
+        inputs:
+          script: |
+            cd packages/rn-tester
+            pod update React-TurboModuleCxx-RNW
+        condition: and(succeeded(), ne(variables['Build.SourceBranchName'], 'master'))
 
       - task: CmdLine@2
         displayName: Bump canary package version
         inputs:
           script: node scripts/bump-oss-version.js --nightly
-        condition: eq(variables['Build.SourceBranchName'], 'master')
+        condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))
+
+      # Publish will fail if package.json is marked as private
+      - task: CmdLine@2
+        displayName: Remove workspace config from package.json
+        inputs:
+          script: node .ado/removeWorkspaceConfig.js
 
       - script: npm publish --tag $(npmDistTag) --registry https://registry.npmjs.org/ --//registry.npmjs.org/:_authToken=$(npmAuthToken)
         displayName: Publish react-native-macos to npmjs.org
 
+      # Put the private flag back so that the removal does not get committed by the tag release step
+      - task: CmdLine@2
+        displayName: Restore package.json workspace config
+        inputs:
+          script: node .ado/restoreWorkspaceConfig.js
+
       - task: CmdLine@2
         displayName: 'Tag published release'
         inputs:
@@ -76,7 +101,7 @@ jobs:
           BUILD_SOURCEBRANCH: $(Build.SourceBranch)
           SYSTEM_ACCESSTOKEN: $(System.AccessToken)
           githubApiToken: $(githubApiToken)
-        condition: ne(variables['Build.SourceBranchName'], 'master')
+        condition: and(succeeded(), ne(variables['Build.SourceBranchName'], 'master'))
 
 
   - job: RNMacOSInitNpmJSPublish
@@ -137,6 +162,12 @@ jobs:
         inputs:
           script: node .ado/bumpOfficeFileVersions.js
 
+      # Publish will fail if package.json is marked as private
+      - task: CmdLine@2
+        displayName: Remove workspace config from package.json
+        inputs:
+          script: node .ado/removeWorkspaceConfig.js
+
       - task: CmdLine@2
         displayName: gradlew installArchives
         inputs:
diff --git a/.ado/removeWorkspaceConfig.js b/.ado/removeWorkspaceConfig.js
new file mode 100644
index 00000000000000..b6969e2841d570
--- /dev/null
+++ b/.ado/removeWorkspaceConfig.js
@@ -0,0 +1,3 @@
+// @ts-check
+const {removeWorkspaceConfig} = require('./versionUtils');
+removeWorkspaceConfig(); 
\ No newline at end of file
diff --git a/.ado/restoreWorkspaceConfig.js b/.ado/restoreWorkspaceConfig.js
new file mode 100644
index 00000000000000..cd779e99542ded
--- /dev/null
+++ b/.ado/restoreWorkspaceConfig.js
@@ -0,0 +1,3 @@
+// @ts-check
+const {restoreWorkspaceConfig} = require('./versionUtils');
+restoreWorkspaceConfig(); 
\ No newline at end of file
diff --git a/.ado/templates/android-build-office.yml b/.ado/templates/android-build-office.yml
index e220fd7178f7a0..e363e5b77be124 100644
--- a/.ado/templates/android-build-office.yml
+++ b/.ado/templates/android-build-office.yml
@@ -30,12 +30,29 @@ steps:
     inputs:
       script: yarn install --frozen-lockfile
 
+  # scripts/bump-oss-version.js
+  #
+  # update the following files to the commit id.
+  # package.json (-> npm package version)
+  # gradle.properties (-> aar version)
+  # gradle.properties (-> aar version)
+  #
+  # The following files are updated for runtime version checking.
+  # ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java
+  # React/Base/RCTVersion.m
+  # ReactCommon/cxxreact/ReactNativeVersion.h
+  # Libraries/Core/ReactNativeVersion.js
+  #
+  # --nightly => version = `0.0.0-${currentCommit.slice(0, 9)}`;
+  # When on master branch or non-stable branch.
   - task: CmdLine@2
     displayName: Bump canary package version
     inputs:
       script: node scripts/bump-oss-version.js --nightly
-    condition: eq(variables['Build.SourceBranchName'], 'master')
-  
+    condition: or(eq(variables['Build.SourceBranchName'], 'master'), not(contains(variables['Build.SourceBranchName'], '-stable')))
+
+  # TODO: We don't seem to be running bump-oss-version.js for stable branches, hence we would end up publishing using the values in the repository.
+
   - task: CmdLine@2
     displayName: nuget restore
     inputs:
diff --git a/.ado/templates/apple-droid-node-patching.yml b/.ado/templates/apple-droid-node-patching.yml
index 5b0133799ef0a7..e816d3b258b334 100644
--- a/.ado/templates/apple-droid-node-patching.yml
+++ b/.ado/templates/apple-droid-node-patching.yml
@@ -5,4 +5,4 @@ steps:
   - task: CmdLine@2
     displayName: Apply Android specific patches for Office consumption
     inputs:
-      script: node $(System.DefaultWorkingDirectory)/android-patches/bundle/bundle.js patch $(System.DefaultWorkingDirectory) Build OfficeRNHost V8 Focus --patch-store $(System.DefaultWorkingDirectory)/android-patches/patches --log-folder $(System.DefaultWorkingDirectory)/android-patches/logs --confirm ${{ parameters.apply_office_patches }}
+      script: node $(System.DefaultWorkingDirectory)/android-patches/bundle/bundle.js patch $(System.DefaultWorkingDirectory) Build OfficeRNHost V8 Focus MAC ImageColor --patch-store $(System.DefaultWorkingDirectory)/android-patches/patches --log-folder $(System.DefaultWorkingDirectory)/android-patches/logs --confirm ${{ parameters.apply_office_patches }}
diff --git a/.ado/versionUtils.js b/.ado/versionUtils.js
index a70c00bcb020be..21651c44bd4491 100644
--- a/.ado/versionUtils.js
+++ b/.ado/versionUtils.js
@@ -2,6 +2,7 @@
 const fs = require("fs");
 const path = require("path");
 const semver = require('semver');
+const {execSync} = require('child_process');
 
 const pkgJsonPath = path.resolve(__dirname, "../package.json");
 let publishBranchName = '';
@@ -41,15 +42,34 @@ function updateVersionsInFiles(patchVersionPrefix) {
     }
  
     pkgJson.version = releaseVersion;
-    fs.writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
-    console.log(`Updating package.json to version ${releaseVersion}`);
-  
+    console.log(`Bumping files to version ${releaseVersion}`);
+    execSync(`node ./scripts/bump-oss-version.js --rnmpublish ${releaseVersion}`, {stdio: 'inherit', env: process.env});
+
     return {releaseVersion, branchVersionSuffix};
 }
 
+const workspaceJsonPath = path.resolve(require('os').tmpdir(), 'rnpkg.json');
+
+function removeWorkspaceConfig() {
+  let {pkgJson} = gatherVersionInfo();
+  fs.writeFileSync(workspaceJsonPath, JSON.stringify(pkgJson, null, 2));
+  delete pkgJson.private;
+  delete pkgJson.workspaces;
+  fs.writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
+  console.log(`Removing workspace config from package.json to prepare to publish.`);
+}
+
+function restoreWorkspaceConfig() {
+  let pkgJson = JSON.parse(fs.readFileSync(workspaceJsonPath, "utf8"));
+  fs.writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
+  console.log(`Restoring workspace config from package.json`);
+}
+
 module.exports = {
     gatherVersionInfo,
     publishBranchName,
     pkgJsonPath,
+    removeWorkspaceConfig,
+    restoreWorkspaceConfig,
     updateVersionsInFiles
 }
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000000000..eaf618cafb2032
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,6 @@
+# Ensure scripts always have Unix newlines, even on Windows.
+*.command  text eol=lf
+*.sh       text eol=lf
+# Windows files should use crlf line endings
+# https://help.github.com/articles/dealing-with-line-endings/
+*.bat text eol=crlf
\ No newline at end of file
diff --git a/Libraries/Components/Pressable/Pressable.js b/Libraries/Components/Pressable/Pressable.js
index 34d3c8ccf716a3..ec0e2343dfb3ee 100644
--- a/Libraries/Components/Pressable/Pressable.js
+++ b/Libraries/Components/Pressable/Pressable.js
@@ -25,10 +25,9 @@ import type {
 import {PressabilityDebugView} from '../../Pressability/PressabilityDebug';
 import usePressability from '../../Pressability/usePressability';
 import {normalizeRect, type RectOrSize} from '../../StyleSheet/Rect';
-import type {ColorValue} from '../../StyleSheet/StyleSheet';
 import type {
   LayoutEvent,
-  MouseEvent, // TODO(macOS GH#774)
+  MouseEvent,
   PressEvent,
 } from '../../Types/CoreEventTypes';
 import type {DraggedTypesType} from '../View/DraggedType'; // TODO(macOS GH#774)
@@ -65,6 +64,16 @@ type Props = $ReadOnly<{|
    */
   children: React.Node | ((state: StateCallbackType) => React.Node),
 
+  /**
+   * Duration to wait after hover in before calling `onHoverIn`.
+   */
+  delayHoverIn?: ?number,
+
+  /**
+   * Duration to wait after hover out before calling `onHoverOut`.
+   */
+  delayHoverOut?: ?number,
+
   /**
    * Duration (in milliseconds) from `onPressIn` before `onLongPress` is called.
    */
@@ -91,6 +100,16 @@ type Props = $ReadOnly<{|
    */
   onLayout?: ?(event: LayoutEvent) => void,
 
+  /**
+   * Called when the hover is activated to provide visual feedback.
+   */
+  onHoverIn?: ?(event: MouseEvent) => mixed,
+
+  /**
+   * Called when the hover is deactivated to undo visual feedback.
+   */
+  onHoverOut?: ?(event: MouseEvent) => mixed,
+
   /**
    * Called when a long-tap gesture is detected.
    */
@@ -146,8 +165,6 @@ type Props = $ReadOnly<{|
   acceptsFirstMouse?: ?boolean,
   enableFocusRing?: ?boolean,
   tooltip?: ?string,
-  onMouseEnter?: (event: MouseEvent) => void,
-  onMouseLeave?: (event: MouseEvent) => void,
   onDragEnter?: (event: MouseEvent) => void,
   onDragLeave?: (event: MouseEvent) => void,
   onDrop?: (event: MouseEvent) => void,
@@ -167,11 +184,13 @@ function Pressable(props: Props, forwardedRef): React.Node {
     android_disableSound,
     android_ripple,
     children,
+    delayHoverIn,
+    delayHoverOut,
     delayLongPress,
     disabled,
     focusable,
-    onMouseEnter, // [TODO(macOS GH#774)
-    onMouseLeave, // ]TODO(macOS GH#774)
+    onHoverIn,
+    onHoverOut,
     onLongPress,
     onPress,
     onPressIn,
@@ -208,10 +227,12 @@ function Pressable(props: Props, forwardedRef): React.Node {
       hitSlop,
       pressRectOffset: pressRetentionOffset,
       android_disableSound,
+      delayHoverIn,
+      delayHoverOut,
       delayLongPress,
       delayPressIn: unstable_pressDelay,
-      onHoverIn: onMouseEnter, // [TODO(macOS GH#774)
-      onHoverOut: onMouseLeave, // ]TODO(macOS GH#774)
+      onHoverIn,
+      onHoverOut,
       onLongPress,
       onPress,
       onPressIn(event: PressEvent): void {
@@ -237,11 +258,13 @@ function Pressable(props: Props, forwardedRef): React.Node {
     [
       android_disableSound,
       android_rippleConfig,
+      delayHoverIn,
+      delayHoverOut,
       delayLongPress,
       disabled,
       hitSlop,
-      onMouseEnter, // [TODO(macOS GH#774)
-      onMouseLeave, // ]TODO(macOS GH#774)
+      onHoverIn,
+      onHoverOut,
       onLongPress,
       onPress,
       onPressIn,
diff --git a/Libraries/Image/RCTImageLoader.mm b/Libraries/Image/RCTImageLoader.mm
index 9462521cd02565..8bcd347e74c82a 100644
--- a/Libraries/Image/RCTImageLoader.mm
+++ b/Libraries/Image/RCTImageLoader.mm
@@ -966,15 +966,13 @@ - (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)data
           UIImage *image = RCTDecodeImageWithData(data, size, scale, resizeMode);
 
 #if !TARGET_OS_OSX && RCT_DEV // TODO(macOS GH#774)
-          if ([[self->_bridge devSettings] isDevModeEnabled]) { // TODO(OSS Candidate ISS#2710739)
-            CGSize imagePixelSize = RCTSizeInPixels(image.size, UIImageGetScale(image)); // TODO(macOS GH#774)
-            CGSize screenPixelSize = RCTSizeInPixels(RCTScreenSize(), RCTScreenScale());
-            if (imagePixelSize.width * imagePixelSize.height >
-                screenPixelSize.width * screenPixelSize.height) {
-              RCTLogInfo(@"[PERF ASSETS] Loading image at size %@, which is larger "
-                        "than the screen size %@", NSStringFromCGSize(imagePixelSize),
-                        NSStringFromCGSize(screenPixelSize));
-            }
+          CGSize imagePixelSize = RCTSizeInPixels(image.size, UIImageGetScale(image)); // TODO(macOS GH#774)
+          CGSize screenPixelSize = RCTSizeInPixels(RCTScreenSize(), RCTScreenScale());
+          if (imagePixelSize.width * imagePixelSize.height >
+              screenPixelSize.width * screenPixelSize.height) {
+            RCTLogInfo(@"[PERF ASSETS] Loading image at size %@, which is larger "
+                      "than the screen size %@", NSStringFromCGSize(imagePixelSize),
+                      NSStringFromCGSize(screenPixelSize));
           }
 #endif
 
diff --git a/React/Base/RCTDefines.h b/React/Base/RCTDefines.h
index abef526b774d3d..23be65eb5c64d7 100644
--- a/React/Base/RCTDefines.h
+++ b/React/Base/RCTDefines.h
@@ -42,8 +42,7 @@
 #if DEBUG
 #define RCT_DEV 1
 #else
-// Dev Mode is now enabled or disabled at runtime via the -[RCTDevSettings isDevModeEnabled] property
-#define RCT_DEV 1
+#define RCT_DEV 0
 #endif
 #endif
 
diff --git a/React/Base/RCTJSInvokerModule.h b/React/Base/RCTJSInvokerModule.h
index 6f952c3742d0d7..b3b86a12d71104 100644
--- a/React/Base/RCTJSInvokerModule.h
+++ b/React/Base/RCTJSInvokerModule.h
@@ -12,6 +12,6 @@
 @protocol RCTJSInvokerModule
 
 @property (nonatomic, copy, nonnull) void (^invokeJS)(NSString * _Nullable module, NSString * _Nullable method, NSArray * _Nullable args); // TODO(macOS GH#774)
-@property (nonatomic, copy) void (^invokeJSWithModuleDotMethod)(NSString *moduleDotMethod, NSArray *args);
+@property (nonatomic, copy, nonnull) void (^invokeJSWithModuleDotMethod)(NSString * _Nullable moduleDotMethod, NSArray * _Nullable args); // TODO(macOS GH#774)
 
 @end
diff --git a/React/Base/RCTRootView.m b/React/Base/RCTRootView.m
index 62c927c250b35e..1d1550fb9babac 100644
--- a/React/Base/RCTRootView.m
+++ b/React/Base/RCTRootView.m
@@ -467,9 +467,7 @@ - (NSMenu *)menuForEvent:(NSEvent *)event
 {
   NSMenu *menu = nil;
 #if __has_include("RCTDevMenu.h") && RCT_DEV
-  if ([[_bridge devSettings] isDevModeEnabled]) {
-    menu = [[_bridge devMenu] menu];
-  }
+  menu = [[_bridge devMenu] menu];
 #endif
   if (menu == nil) {
     menu = [super menuForEvent:event];
diff --git a/React/CoreModules/RCTDevLoadingView.mm b/React/CoreModules/RCTDevLoadingView.mm
index 0a899170c080bd..f340d1806da07d 100644
--- a/React/CoreModules/RCTDevLoadingView.mm
+++ b/React/CoreModules/RCTDevLoadingView.mm
@@ -71,7 +71,7 @@ - (void)setBridge:(RCTBridge *)bridge
                                                name:RCTJavaScriptDidFailToLoadNotification
                                              object:nil];
 
-  if ([[bridge devSettings] isDevModeEnabled] && bridge.loading) { // TODO(OSS Candidate ISS#2710739)
+  if (bridge.loading) {
     [self showWithURL:bridge.bundleURL];
   }
 }
@@ -339,7 +339,7 @@ + (NSString *)moduleName
 + (void)setEnabled:(BOOL)enabled
 {
 }
-- (void)showMessage:(NSString *)message color:(UIColor *)color backgroundColor:(UIColor *)backgroundColor
+- (void)showMessage:(NSString *)message color:(RCTUIColor *)color backgroundColor:(RCTUIColor *)backgroundColor // TODO(macOS GH#774) RCTUIColor
 {
 }
 - (void)showMessage:(NSString *)message withColor:(NSNumber *)color withBackgroundColor:(NSNumber *)backgroundColor
diff --git a/React/CoreModules/RCTDevMenu.mm b/React/CoreModules/RCTDevMenu.mm
index fe9a4f4367de20..24e08980161757 100644
--- a/React/CoreModules/RCTDevMenu.mm
+++ b/React/CoreModules/RCTDevMenu.mm
@@ -511,7 +511,6 @@ - (void)setDefaultJSBundle
 #if TARGET_OS_OSX // [TODO(macOS GH#774)
 - (NSMenu *)menu
 {
-  NSMenu *menu = nil;
   if ([_bridge.devSettings isSecondaryClickToShowDevMenuEnabled]) {
     NSMenu *menu = nil;
     if (_bridge) {
diff --git a/React/CoreModules/RCTDevSettings.h b/React/CoreModules/RCTDevSettings.h
index 77dabfc7da7848..98848cafd4aa55 100644
--- a/React/CoreModules/RCTDevSettings.h
+++ b/React/CoreModules/RCTDevSettings.h
@@ -41,14 +41,6 @@
 
 - (instancetype)initWithDataSource:(id<RCTDevSettingsDataSource>)dataSource;
 
-// [TODO(OSS Candidate ISS#2710739)
-/**
- * Whether Dev Mode is enabled meaning the development tools
- * such as the debug executors, dev menu, red box, etc. are available.
- */
-@property (nonatomic, assign, setter=setDevModeEnabled:) BOOL isDevModeEnabled;
-// ]TODO(OSS Candidate ISS#2710739)
-
 @property (nonatomic, readonly) BOOL isHotLoadingAvailable;
 @property (nonatomic, readonly) BOOL isLiveReloadAvailable;
 @property (nonatomic, readonly) BOOL isRemoteDebuggingAvailable;
diff --git a/React/CoreModules/RCTDevSettings.mm b/React/CoreModules/RCTDevSettings.mm
index 6960ae10d80525..a576c7809d2ac4 100644
--- a/React/CoreModules/RCTDevSettings.mm
+++ b/React/CoreModules/RCTDevSettings.mm
@@ -250,18 +250,6 @@ - (BOOL)isDeviceDebuggingAvailable
 #endif // RCT_ENABLE_INSPECTOR
 }
 
-// [TODO(OSS Candidate ISS#2710739)
-RCT_EXPORT_METHOD(setDevModeEnabled:(BOOL)enabled)
-{
-  [self _updateSettingWithValue:@(enabled) forKey:kRCTDevSettingDevModeEnabled];
-}
-
-- (BOOL)isDevModeEnabled
-{
-  return [[self settingForKey:kRCTDevSettingDevModeEnabled] boolValue];
-}
-// ]TODO(OSS Candidate ISS#2710739)
-
 - (BOOL)isRemoteDebuggingAvailable
 {
   if (RCTTurboModuleEnabled()) {
diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm
index fcd6955276d37f..6b86556bb5247f 100644
--- a/React/CxxBridge/RCTCxxBridge.mm
+++ b/React/CxxBridge/RCTCxxBridge.mm
@@ -470,7 +470,7 @@ - (void)start
 #if (RCT_DEV | RCT_ENABLE_LOADING_VIEW) && __has_include(<React/RCTDevLoadingViewProtocol.h>)
         // [TODO(OSS Candidate ISS#2710739)
         // Note: RCTDevLoadingView should have been loaded at this point, so no need to allow lazy loading.
-        if ([weakSelf isValid] && [[weakSelf devSettings] isDevModeEnabled]) {
+        if ([weakSelf isValid]) {
           id<RCTDevLoadingViewProtocol> loadingView = [weakSelf moduleForName:@"DevLoadingView"
                                                         lazilyLoadIfNecessary:YES];
           [loadingView updateProgress:progressData];
@@ -673,9 +673,7 @@ - (void)_initializeBridge:(std::shared_ptr<JSExecutorFactory>)executorFactory
   // This can only be false if the bridge was invalidated before startup completed
   if (_reactInstance) {
 #if RCT_DEV
-    if ([[self devSettings] isDevModeEnabled]) { // TODO(OSS Candidate ISS#2710739)
-      executorFactory = std::make_shared<GetDescAdapter>(self, executorFactory);
-    } // TODO(OSS Candidate ISS#2710739)
+    executorFactory = std::make_shared<GetDescAdapter>(self, executorFactory);
 #endif
 
     [self _initializeBridgeLocked:executorFactory];
@@ -1037,9 +1035,7 @@ - (void)executeSourceCode:(NSData *)sourceCode sync:(BOOL)sync
     [self enqueueApplicationScript:sourceCode url:self.bundleURL onComplete:completion];
   }
 
-  if (self.devSettings.isDevModeEnabled) { // TODO(OSS Candidate ISS#2710739)
-    [self.devSettings setupHMRClientWithBundleURL:self.bundleURL];
-  }
+  [self.devSettings setupHMRClientWithBundleURL:self.bundleURL];
 }
 
 #if RCT_DEV_MENU
diff --git a/React/Modules/MacOS/RCTAccessibilityManager.m b/React/Modules/MacOS/RCTAccessibilityManager.m
index 58974ffbb2afcd..2106376709d40c 100644
--- a/React/Modules/MacOS/RCTAccessibilityManager.m
+++ b/React/Modules/MacOS/RCTAccessibilityManager.m
@@ -99,9 +99,10 @@ - (void)dealloc
 
 RCT_EXPORT_METHOD(setAccessibilityFocus:(nonnull NSNumber *)reactTag)
 {
-   dispatch_async(dispatch_get_main_queue(), ^{
+  dispatch_async(dispatch_get_main_queue(), ^{
     NSView *view = [self.bridge.uiManager viewForReactTag:reactTag];
     [[view window] makeFirstResponder:view];
+    NSAccessibilityPostNotification(view, NSAccessibilityLayoutChangedNotification);
   });
 }
 
diff --git a/React/Modules/RCTEventEmitter.h b/React/Modules/RCTEventEmitter.h
index 015ca1dffd2f60..16dc71dcddfc2a 100644
--- a/React/Modules/RCTEventEmitter.h
+++ b/React/Modules/RCTEventEmitter.h
@@ -16,7 +16,7 @@
 
 @property (nonatomic, weak) RCTBridge * _Nullable bridge; // TODO(macOS GH#774)
 
-- (instancetype)initWithDisabledObservation;
+- (instancetype _Nullable)initWithDisabledObservation; // TODO(macOS GH#774)
 
 /**
  * Override this method to return an array of supported event names. Attempting
diff --git a/android-patches/patches/Build/ReactAndroid/ReactAndroid.nuspec b/android-patches/patches/Build/ReactAndroid/ReactAndroid.nuspec
index 200effcbc06ba7..109878ed6ee0d0 100644
--- a/android-patches/patches/Build/ReactAndroid/ReactAndroid.nuspec
+++ b/android-patches/patches/Build/ReactAndroid/ReactAndroid.nuspec
@@ -1,6 +1,6 @@
 --- "E:\\gh\\react-native-macos2\\ReactAndroid\\ReactAndroid.nuspec"	1969-12-31 16:00:00.000000000 -0800
-+++ "E:\\gh\\react-native-macos\\ReactAndroid\\ReactAndroid.nuspec"	2021-10-12 19:48:38.934480100 -0700
-@@ -0,0 +1,200 @@
++++ "E:\\gh\\react-native-macos\\ReactAndroid\\ReactAndroid.nuspec"	2021-10-16 13:47:24.356639200 -0700
+@@ -0,0 +1,242 @@
 +<?xml version="1.0" encoding="utf-8"?>
 +<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
 +  <metadata>
@@ -100,6 +100,26 @@
 +    <file src="build\react-ndk\all\x86\libfolly_futures.so" target="lib\droidx86"/>
 +    <file src="build\react-ndk\all\arm64-v8a\libfolly_futures.so" target="lib\droidarm64"/>
 +
++    <file src="build\react-ndk\all\x86_64\libreact_nativemodule_core.so" target="lib\droidx64"/>
++    <file src="build\react-ndk\all\armeabi-v7a\libreact_nativemodule_core.so" target="lib\droidarm"/>
++    <file src="build\react-ndk\all\x86\libreact_nativemodule_core.so" target="lib\droidx86"/>
++    <file src="build\react-ndk\all\arm64-v8a\libreact_nativemodule_core.so" target="lib\droidarm64"/>
++
++    <file src="build\react-ndk\all\x86_64\libreactnativeutilsjni.so" target="lib\droidx64"/>
++    <file src="build\react-ndk\all\armeabi-v7a\libreactnativeutilsjni.so" target="lib\droidarm"/>
++    <file src="build\react-ndk\all\x86\libreactnativeutilsjni.so" target="lib\droidx86"/>
++    <file src="build\react-ndk\all\arm64-v8a\libreactnativeutilsjni.so" target="lib\droidarm64"/>
++
++    <file src="build\react-ndk\all\x86_64\libreactperfloggerjni.so" target="lib\droidx64"/>
++    <file src="build\react-ndk\all\armeabi-v7a\libreactperfloggerjni.so" target="lib\droidarm"/>
++    <file src="build\react-ndk\all\x86\libreactperfloggerjni.so" target="lib\droidx86"/>
++    <file src="build\react-ndk\all\arm64-v8a\libreactperfloggerjni.so" target="lib\droidarm64"/>
++
++    <file src="build\react-ndk\all\x86_64\libturbomodulejsijni.so" target="lib\droidx64"/>
++    <file src="build\react-ndk\all\armeabi-v7a\libturbomodulejsijni.so" target="lib\droidarm"/>
++    <file src="build\react-ndk\all\x86\libturbomodulejsijni.so" target="lib\droidx86"/>
++    <file src="build\react-ndk\all\arm64-v8a\libturbomodulejsijni.so" target="lib\droidarm64"/>
++
 +    <!-- Unstripped binaries -->
 +    <file src="build\tmp\buildReactNdkLib\local\x86_64\libfb.so" target="lib\droidx64\unstripped"/>
 +    <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libfb.so" target="lib\droidarm\unstripped"/>
@@ -185,9 +205,29 @@
 +    <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libfolly_futures.so" target="lib\droidarm\unstripped"/>
 +    <file src="build\tmp\buildReactNdkLib\local\x86\libfolly_futures.so" target="lib\droidx86\unstripped"/>
 +    <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libfolly_futures.so" target="lib\droidarm64\unstripped"/>
++
++    <file src="build\tmp\buildReactNdkLib\local\x86_64\libreact_nativemodule_core.so" target="lib\droidx64\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libreact_nativemodule_core.so" target="lib\droidarm\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\x86\libreact_nativemodule_core.so" target="lib\droidx86\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libreact_nativemodule_core.so" target="lib\droidarm64\unstripped"/>
++
++    <file src="build\tmp\buildReactNdkLib\local\x86_64\libreactnativeutilsjni.so" target="lib\droidx64\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libreactnativeutilsjni.so" target="lib\droidarm\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\x86\libreactnativeutilsjni.so" target="lib\droidx86\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libreactnativeutilsjni.so" target="lib\droidarm64\unstripped"/>
++
++    <file src="build\tmp\buildReactNdkLib\local\x86_64\libreactperfloggerjni.so" target="lib\droidx64\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libreactperfloggerjni.so" target="lib\droidarm\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\x86\libreactperfloggerjni.so" target="lib\droidx86\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libreactperfloggerjni.so" target="lib\droidarm64\unstripped"/>
++
++    <file src="build\tmp\buildReactNdkLib\local\x86_64\libturbomodulejsijni.so" target="lib\droidx64\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\armeabi-v7a\libturbomodulejsijni.so" target="lib\droidarm\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\x86\libturbomodulejsijni.so" target="lib\droidx86\unstripped"/>
++    <file src="build\tmp\buildReactNdkLib\local\arm64-v8a\libturbomodulejsijni.so" target="lib\droidarm64\unstripped"/>
++    
 +    <!-- AAR and POM -->
-+    <file src="..\android\com\facebook\react\react-native\*\react-native-*.aar" target="lib"/>
-+    <file src="..\android\com\facebook\react\react-native\*\react-native-*.pom" target="lib"/>
++    <file src="..\android\com\**\*" target="maven\com"/>
 +
 +    <!-- Headers, ideally we'd only exported the needed headers, not the complete list -->
 +    <file src=".\build\third-party-ndk\double-conversion\double-conversion\*.h" target="inc\double-conversion"/>
@@ -195,6 +235,8 @@
 +    <file src=".\build\third-party-ndk\glog\exported\glog\*.h" target="inc\glog" />
 +    <file src=".\build\third-party-ndk\jsc\JavaScriptCore\*.h" target="inc\jsc"/>
 +    <file src="..\ReactCommon\cxxreact\**\*.h" target="inc\cxxreact"/>
++    <file src="..\ReactCommon\runtimeexecutor\ReactCommon\*.h" target="inc\ReactCommon"/>
++    <file src="..\ReactCommon\callinvoker\ReactCommon\*.h" target="inc\ReactCommon"/>
 +    <file src="..\ReactCommon\jsi\**\*.h" target="inc\jsi"/>
 +    <file src="..\ReactCommon\yoga\yoga\**\*.h" target="inc\Yoga"/>
 +    <file src="..\android\dependencies\**\*.*" target="dependencies"/>
diff --git a/android-patches/patches/ImageColor/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java b/android-patches/patches/ImageColor/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
new file mode 100644
index 00000000000000..6d59e245d9c9db
--- /dev/null
+++ b/android-patches/patches/ImageColor/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
@@ -0,0 +1,35 @@
+diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
+index 6e2a1691fd..f856e85d53 100644
+--- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
++++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java
+@@ -325,6 +325,21 @@ import java.util.Map;
+     }
+   }
+ 
++  private static class BoxedColorPropSetter extends PropSetter {
++
++    public BoxedColorPropSetter(ReactProp prop, Method setter) {
++      super(prop, "mixed", setter);
++    }
++
++    @Override
++    protected @Nullable Object getValueOrDefault(Object value, Context context) {
++      if (value != null) {
++        return ColorPropConverter.getColor(value, context);
++      }
++      return null;
++    }
++  }
++
+   /*package*/ static Map<String, String> getNativePropsForView(
+       Class<? extends ViewManager> viewManagerTopClass,
+       Class<? extends ReactShadowNode> shadowNodeTopClass) {
+@@ -418,7 +433,7 @@ import java.util.Map;
+       return new BoxedBooleanPropSetter(annotation, method);
+     } else if (propTypeClass == Integer.class) {
+       if ("Color".equals(annotation.customType())) {
+-        return new ColorPropSetter(annotation, method);
++        return new BoxedColorPropSetter(annotation, method);
+       }
+       return new BoxedIntPropSetter(annotation, method);
+     } else if (propTypeClass == ReadableArray.class) {
diff --git a/android-patches/patches/MAC/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java b/android-patches/patches/MAC/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java
new file mode 100644
index 00000000000000..84e6c96614a361
--- /dev/null
+++ b/android-patches/patches/MAC/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.java
@@ -0,0 +1,12 @@
+--- "E:\\gh\\react-native-macos2\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\modules\\debug\\DevSettingsModule.java"	2021-08-31 19:52:47.502468000 -0700
++++ "E:\\gh\\react-native-macos\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\modules\\debug\\DevSettingsModule.java"	2021-10-20 19:29:11.611192200 -0700
+@@ -118,4 +118,9 @@
+   public void removeListeners(double count) {
+     // iOS only
+   }
++
++  @Override
++  public void setIsSecondaryClickToShowDevMenuEnabled(boolean enabled) {
++    // macOS only.
++  }
+ }
diff --git a/android-patches/patches/OfficeRNHost/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.java b/android-patches/patches/OfficeRNHost/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.java
deleted file mode 100644
index 453802aa68d84f..00000000000000
--- a/android-patches/patches/OfficeRNHost/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactBridge.java
+++ /dev/null
@@ -1,27 +0,0 @@
---- "E:\\gh\\react-native-macos2\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\bridge\\ReactBridge.java"	2021-10-12 13:35:49.124099000 -0700
-+++ "E:\\gh\\react-native-macos\\ReactAndroid\\src\\main\\java\\com\\facebook\\react\\bridge\\ReactBridge.java"	2021-10-12 13:22:46.508704400 -0700
-@@ -31,6 +31,24 @@
-     Systrace.beginSection(
-         TRACE_TAG_REACT_JAVA_BRIDGE, "ReactBridge.staticInit::load:reactnativejni");
-     ReactMarker.logMarker(ReactMarkerConstants.LOAD_REACT_NATIVE_SO_FILE_START);
-+
-+    // JS Engine is configurable .. And we expect only one packaged.
-+    // Hence ignore failure.
-+
-+    try {
-+      SoLoader.loadLibrary("hermes");
-+    } catch (UnsatisfiedLinkError jscE) {}
-+
-+    try {
-+      SoLoader.loadLibrary("v8jsi");
-+    } catch (UnsatisfiedLinkError jscE) {}
-+    
-+    SoLoader.loadLibrary("glog_init");
-+    SoLoader.loadLibrary("fb");
-+    SoLoader.loadLibrary("fbjni");
-+    SoLoader.loadLibrary("yoga");
-+    SoLoader.loadLibrary("jsinspector");
-+
-     SoLoader.loadLibrary("reactnativejni");
-     ReactMarker.logMarker(ReactMarkerConstants.LOAD_REACT_NATIVE_SO_FILE_END);
-     Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE);
diff --git a/android-patches/scripts/downloadDependencies.py b/android-patches/scripts/downloadDependencies.py
index dd036900583644..2c0232e03a20f0 100644
--- a/android-patches/scripts/downloadDependencies.py
+++ b/android-patches/scripts/downloadDependencies.py
@@ -523,7 +523,7 @@ def main():
     shutil.copy(os.path.join(hermes_engine_node_modules_path, "package.json"), dependency_dir_hermes)
 
     dependency_dir_hermes_android_native_debug = os.path.join(dependency_dir_hermes_android_aar_path, "debug")
-    dependency_dir_hermes_android_native_release = os.path.join(dependency_dir_hermes_android_aar_path, "release")
+    dependency_dir_hermes_android_native_release = os.path.join(dependency_dir_hermes_android_aar_path, "ship")
     extract_so(dependency_dir_hermes_android_aar_path, dependency_dir_hermes_android_native_debug, "hermes-debug.aar")
     extract_so(dependency_dir_hermes_android_aar_path, dependency_dir_hermes_android_native_debug, "hermes-cppruntime-debug.aar")
 
diff --git a/packages/react-native-macos-init/yarn.lock b/packages/react-native-macos-init/yarn.lock
index 8f3f53b9b93e26..ad0b744a2d4eee 100644
--- a/packages/react-native-macos-init/yarn.lock
+++ b/packages/react-native-macos-init/yarn.lock
@@ -435,7 +435,7 @@ chalk@^3:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
-chownr@^1.1.1:
+chownr@^1.1.1, chownr@^1.1.4:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
   integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
@@ -954,7 +954,7 @@ fs-extra@^8.0.1:
     jsonfile "^4.0.0"
     universalify "^0.1.0"
 
-fs-minipass@^1.2.5:
+fs-minipass@^1.2.7:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
   integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
@@ -1105,9 +1105,9 @@ has-flag@^4.0.0:
   integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
 
 hosted-git-info@^2.7.1:
-  version "2.8.8"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
-  integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+  version "2.8.9"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+  integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
 
 http-cache-semantics@^3.8.1:
   version "3.8.1"
@@ -1565,7 +1565,7 @@ minimist@^1.2.5:
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
   integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
 
-minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
+minipass@^2.6.0, minipass@^2.9.0:
   version "2.9.0"
   resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
   integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
@@ -1573,7 +1573,7 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
     safe-buffer "^5.1.2"
     yallist "^3.0.0"
 
-minizlib@^1.2.1:
+minizlib@^1.3.3:
   version "1.3.3"
   resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
   integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
@@ -1596,7 +1596,7 @@ mississippi@^3.0.0:
     stream-each "^1.1.0"
     through2 "^2.0.0"
 
-mkdirp@^0.5.0, mkdirp@^0.5.1:
+mkdirp@^0.5.1, mkdirp@^0.5.5:
   version "0.5.5"
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
   integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
@@ -2078,10 +2078,10 @@ run-queue@^1.0.0, run-queue@^1.0.3:
   dependencies:
     aproba "^1.1.1"
 
-safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
-  integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
 
 safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
@@ -2293,17 +2293,17 @@ supports-hyperlinks@^1.0.1:
     supports-color "^5.0.0"
 
 tar@^4.4.8:
-  version "4.4.13"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
-  integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
+  version "4.4.19"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3"
+  integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==
   dependencies:
-    chownr "^1.1.1"
-    fs-minipass "^1.2.5"
-    minipass "^2.8.6"
-    minizlib "^1.2.1"
-    mkdirp "^0.5.0"
-    safe-buffer "^5.1.2"
-    yallist "^3.0.3"
+    chownr "^1.1.4"
+    fs-minipass "^1.2.7"
+    minipass "^2.9.0"
+    minizlib "^1.3.3"
+    mkdirp "^0.5.5"
+    safe-buffer "^5.2.1"
+    yallist "^3.1.1"
 
 text-hex@0.0.x:
   version "0.0.0"
@@ -2514,7 +2514,7 @@ xtend@^4.0.0, xtend@~4.0.1:
   resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
   integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
 
-yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
   integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock
index 4c2409b7ea2e31..4fcac42cfefef1 100644
--- a/packages/rn-tester/Podfile.lock
+++ b/packages/rn-tester/Podfile.lock
@@ -510,8 +510,8 @@ SPEC CHECKSUMS:
   CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845
   CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f
   DoubleConversion: 0ea4559a49682230337df966e735d6cc7760108e
-  FBLazyVector: 0af9c548d05821b8d3d8b1158af257ad82eb8c90
-  FBReactNativeSpec: c2d79a2c8c07216f6626c39111124f41d76d4c40
+  FBLazyVector: 51cc83402f3d709f74795ff5c422a3d64aad2d5c
+  FBReactNativeSpec: 3a039b4dcabf30506715ca5c18c30d31d6c3e771
   Flipper: be611d4b742d8c87fbae2ca5f44603a02539e365
   Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
   Flipper-Folly: e4493b013c02d9347d5e0cb4d128680239f6c78a
@@ -522,35 +522,35 @@ SPEC CHECKSUMS:
   glog: 0dc7efada961c0793012970b60faebbd58b0decb
   OpenSSL-Universal: ff34003318d5e1163e9529b08470708e389ffcdd
   RCT-Folly: b3998425a8ee9f695f57a204dc494534246f0fe9
-  RCTRequired: 3da9abe24673584d7a79f5248832059899068f05
-  RCTTypeSafety: 7119233a5389023ed13c58d09d8ee7bb7088bad8
-  React: c0de64975793cccf0f4138daa4e590146b162f11
-  React-callinvoker: b1124c70c39d3ba0d015d32a158dc0a2eb9c7fa4
-  React-Core: 96446146b7e864c6198b23d7337a252cc9adab55
-  React-CoreModules: 7325e9048de2bbc116bcdb545cf747012d7afa6b
-  React-cxxreact: d86b284a0f9a7a3048459c9c770f4957586d63b8
-  React-jsi: fd6c9fc27e417504fcc0a2839e4d49ee62cd6147
-  React-jsiexecutor: db69b2bd700a8d0e1f45acbd4f67579eac008594
-  React-jsinspector: 89f8d52f0864887a8111927bfc2ca46bc92e42bc
-  React-perflogger: 880d12b4d24001fe05caa7dd97fc65a59d86a8ce
-  React-RCTActionSheet: 07569f6bbccf555da01fe45a85dc77fa73538e73
-  React-RCTAnimation: 953a20ae7e65edc4597db2f42bb1ab6f49139dbf
-  React-RCTBlob: 956b7b4fbca784a2c12a24670a153663a341af8d
-  React-RCTImage: ae01e26d1e08e7ec14efdcc495e11e270fd5d7e6
-  React-RCTLinking: ebb5724a94de55dba5b3ca4d81c3265a8e29906e
-  React-RCTNetwork: 170c0fb1fb9af1ee2a22dcc9b6210210a90e9ff0
-  React-RCTPushNotification: ee9e0b11dee6dad4fabb74bfbae70a3d2eed8ea3
-  React-RCTSettings: 1348016b05923c4eba469f7eb4de9f14d6c199ed
-  React-RCTTest: 922247d62baab8fdc5fdd050ca23b0d5f3d2dc17
-  React-RCTText: c3a41352baca01610f860dc955658574dc0a763c
-  React-RCTVibration: 4faffa992f29eacda03ade258837d2b66525efdf
-  React-runtimeexecutor: 05f6110ddd6882d227293094c983dbfc5db315b7
+  RCTRequired: 2d686a7dce047f5d49d3cfaaafcac309faabdfa3
+  RCTTypeSafety: 381a24d058ab4456271b44774bb2b13bffe73fe4
+  React: c057844fd06ecfa863cfb9c84991ab0f486540f3
+  React-callinvoker: 488e8d69e0eb35579dc5ef2b36efd4aa1a94f40b
+  React-Core: 7260200dfa2667c56ed4cc27265c1e57d5d040fd
+  React-CoreModules: 1a58a4fbe3a667760e0921a85c5da21492fb7715
+  React-cxxreact: 1e319bcd17b54b6768c10b8b9e89397f153d7f87
+  React-jsi: a4a24e1ea3874772a28eaef6124b17fad1a29e41
+  React-jsiexecutor: 332bca23c317135ea722ab7bdd1f65b61be13a0f
+  React-jsinspector: b1cb2f7a601f8aed95928062b908deddf3c82a48
+  React-perflogger: 983acb8318ed9b7e9a7d0e1054218eaa24dfebe7
+  React-RCTActionSheet: 83604ec93778a3b52805862d6feef63466765888
+  React-RCTAnimation: 510927e07ee1e22b6a8ccbc7736df3105312c4cc
+  React-RCTBlob: eb1e62da8269a1acb2a48edfa36c872b79dda27a
+  React-RCTImage: e21d4e5881383144983a76fea1aa572b411f5d3e
+  React-RCTLinking: 793a4b3843b04c4e6f63c491cb114b24c17a8e5c
+  React-RCTNetwork: 7efd214d99d4e79d4ddabe76d2e01449267303d2
+  React-RCTPushNotification: a4c94a936589b9b01ae6bc403b4b126f0ab64790
+  React-RCTSettings: fe346a2cb5a0f73781b4430df3cba4ddeef9bafc
+  React-RCTTest: a75eb8f43f21d1b6429e081945447accdd7047f0
+  React-RCTText: 38b52e9a804c7f5c5197f8f59cfc64295af63e38
+  React-RCTVibration: dcb108280be8bf84c1ab716348587ffce989a40d
+  React-runtimeexecutor: fa0f514ab1020dbde36e9c88512930ceedb9bb2b
   React-TurboModuleCxx-RNW: 12172bdbaaf052406ec571465243fad4b2eb2702
-  React-TurboModuleCxx-WinRTPort: 557ca6d53cca3bf5f9d42a1cb1cd9ff5d887d006
-  ReactCommon: e3384ac2e3de59fce90c35524d6fae1ca82a21fe
-  Yoga: c80bf412b7c3f863cbb5aa73cfb6568c33b20220
+  React-TurboModuleCxx-WinRTPort: 3844727e8cd53c024b276029bd96e01358d702e8
+  ReactCommon: 94a1371a376fb197ff69b52efef86dc19d627abb
+  Yoga: 28f20bff355b99c1d8bc07008f47546796859a1d
   YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
 
 PODFILE CHECKSUM: 096cbc796e89167c003b0c49186597432f0fb5e8
 
-COCOAPODS: 1.10.1
+COCOAPODS: 1.11.2
diff --git a/packages/rn-tester/js/examples/Pressable/PressableExample.js b/packages/rn-tester/js/examples/Pressable/PressableExample.js
index 6c8764654ea56e..b592a2b0e6d7f1 100644
--- a/packages/rn-tester/js/examples/Pressable/PressableExample.js
+++ b/packages/rn-tester/js/examples/Pressable/PressableExample.js
@@ -99,8 +99,8 @@ function PressableFeedbackEvents() {
           testID="pressable_feedback_events_button"
           accessibilityLabel="pressable feedback events"
           accessibilityRole="button"
-          onMouseEnter={() => appendEvent('mouseEnter')} // [TODO(macOS GH#774)
-          onMouseLeave={() => appendEvent('mouseLeave')} // ]TODO(macOS GH#774)
+          onHoverIn={() => appendEvent('hoverIn')} // [TODO(macOS GH#774)
+          onHoverOut={() => appendEvent('hoverOut')} // ]TODO(macOS GH#774)
           onPress={() => appendEvent('press')}
           onPressIn={() => appendEvent('pressIn')}
           onPressOut={() => appendEvent('pressOut')}
diff --git a/scripts/bump-oss-version.js b/scripts/bump-oss-version.js
index a940e4fc9a41b1..9107380bdedb04 100755
--- a/scripts/bump-oss-version.js
+++ b/scripts/bump-oss-version.js
@@ -29,6 +29,11 @@ let argv = yargs
     type: 'boolean',
     default: false,
   })
+  .option('p', { // [MacOS: Used during RNM's publish pipelines
+    alias: 'rnmpublish',
+    type: 'boolean',
+    default: false,
+  })
   .option('n', {
     alias: 'nightly',
     type: 'boolean',
@@ -37,6 +42,7 @@ let argv = yargs
 
 const nightlyBuild = argv.nightly;
 const ci = argv.ci;
+const rnmpublish = argv.rnmpublish;
 
 let version, branch;
 if (nightlyBuild) {
@@ -45,10 +51,15 @@ if (nightlyBuild) {
   }).stdout.trim();
   version = `0.0.0-${currentCommit.slice(0, 9)}`;
 } else {
-  // Check we are in release branch, e.g. 0.33-stable
-  branch = exec('git symbolic-ref --short HEAD', {
-    silent: true,
-  }).stdout.trim();
+  if (!ci && process.env.BUILD_SOURCEBRANCH) {
+    console.log(`BUILD_SOURCEBRANCH: ${process.env.BUILD_SOURCEBRANCH}`)
+    branch = process.env.BUILD_SOURCEBRANCH.match(/refs\/heads\/(.*)/)[1];
+    console.log(`Identified branch: ${branch}`)
+  } else {
+    branch = exec('git symbolic-ref --short HEAD', {
+      silent: true,
+    }).stdout.trim();
+  }
 
   if (!ci && branch.indexOf('-stable') === -1) {
     echo('You must be in 0.XX-stable branch to bump a version');
@@ -133,8 +144,10 @@ fs.writeFileSync(
 
 let packageJson = JSON.parse(cat('package.json'));
 packageJson.version = version;
-delete packageJson.workspaces;
-delete packageJson.private;
+if (!rnmpublish) {
+  delete packageJson.workspaces;
+  delete packageJson.private;
+}
 fs.writeFileSync('package.json', JSON.stringify(packageJson, null, 2), 'utf-8');
 
 // Change ReactAndroid/gradle.properties
@@ -161,7 +174,7 @@ let numberOfChangedLinesWithNewVersion = exec(
 
 // Release builds should commit the version bumps, and create tags.
 // Nightly builds do not need to do that.
-if (!nightlyBuild) {
+if (!nightlyBuild && !rnmpublish) {
   if (+numberOfChangedLinesWithNewVersion !== 3) {
     echo(
       'Failed to update all the files. package.json and gradle.properties must have versions in them',