Releases: tvinhas/react-native-macos
v0.85.3-tvinhas — React Native 0.85.3 for macOS
Companion release to v0.83.0-tvinhas. Brings react-native-macos up to upstream React Native 0.85.3 (the latest 0.85.x patch).
Tag named
v0.85.3-tvinhasto reflect the exact upstream base (facebook/react-native@0.85.3). Supersedes the earlierv0.85.0-tvinhascut, which is retired. Includes the full macOS RedBox 2.0 port plus the 6 post-review bug fixes.
Headline content
- Absorbs
facebook/react-nativev0.83.0 → v0.85.3 (1,061 commits — skipping 0.84 npm tag, code-equivalent path) - Hermes V1 default engine —
hermes-compiler@250829098.0.10 - iOS Prebuild as default
- React 19.2.3
- TurboModule Cxx cleanup wave
- New Animation Backend — layout props animatable with
useNativeDriver: true @react-native/jest-presetextracted to a separate workspace package- Node
^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0floor
macOS-specific additions vs 0.83-tvinhas
- Native AppKit port of upstream's new RedBox 2.0 dev error overlay (~1500 lines across
RCTRedBox2Controller.mm+RCTRedBoxController.mm++Internal.hheaders + companion parsers). NSViewController + NSTableView + NSPasteboard + nativekeyDown:shortcuts (Esc / Cmd-R / Cmd-Option-C), borderless NSWindow atNSStatusWindowLevel. Wired in via#if TARGET_OS_OSXinRCTRedBox.mm. - All 9 macOS PRs filed upstream (PRs #2956 – #2964) carried forward.
- Additional 0.85-merge fixes:
RCTUtils.mmunclosed-#ifrecovery,RCTUIManager.mmnew-arch stub retyping,RCTFrameTimingsObserver.mmmacOS stub,RCTSurfaceTouchHandler.mmgesture guard,RCTScheduler.mmCADisplayLink viaNSScreen(macOS 14+),RCTLogBoxView.mmlegacy-arch guard,RCTDevLoadingView.mmdealloc branch.
Post-review bug fixes (commit c51879f)
A 5-engineer review surfaced 6 build-clean-but-runtime-broken bugs, all fixed:
- RedBox 2.0 dead-code gating —
redBoxV2IOS()flag defaults false on all platforms; macOS RedBox 2.0 port was unreachable. Fixed with#if TARGET_OS_OSXunconditional select. - Code-frame cell zero height — added explicit
NSScrollView heightAnchor: 140. - Horizontal scroll broken — flipped code label to autoresizing-mask sizing.
- Stack-frame Auto Layout warnings — closed the vertical constraint chain.
- Escape key broken in legacy RedBox —
@"\e"(literal "e") →@"\x1b". - Section header missing top anchor — added
topAnchorconstraint.
Validated
- RNTester-macOS
xcodebuildgreen (Xcode 26.5, Apple Silicon, arm64, macOS 14.6 target). 51 MB.app. - react-native-test-app's
example-macosbuilds clean via Verdaccio publish +pod install+xcodebuild. 49 MBReactTestApp.app. yarn flow-check,yarn lint,yarn test-typecheckall exit 0.
Consumer install
See MIGRATION-0.85.md (local doc) for the full resolutions / overrides block. The tldr is:
{
"dependencies": {
"react-native-macos": "https://github.com/tvinhas/react-native-macos/releases/download/v0.85.3-tvinhas/react-native-macos-0.85.3-tvinhas.tgz"
}
}Plus every @react-native/* workspace as a tarball URL in resolutions (yarn) or overrides (npm). npm: use "react-native-macos": "$react-native-macos" in overrides for the peer-dep collapse. Requires React ^19.2.3 and react-native@^0.85.0 (or pin 0.85.3).
Not signed, not on npm
Tarball URLs only. Same posture as 0.83-tvinhas.
v0.85.3-tvinhas.2 (immutable re-pack)
Immutable re-pack of v0.85.3-tvinhas. Same built react-native-macos@0.85.3-tvinhas as the v0.85.3-tvinhas tag, but the tarball's package.json pins its @react-native/* deps to plain npm 0.85.3 (byte-equivalent to upstream) instead of the 0.85.3-tvinhas literal.
Why a new tag instead of clobbering v0.85.3-tvinhas: npm caches a tarball body by URL+integrity. Mutating an asset at a fixed URL traps stale content in consumers' npm cache (~/.npm/_cacache) and the lockfile integrity no longer matches. Each re-pack now cuts a NEW immutable tag (.2, .3, ...); released assets are never replaced.
Asset set is intentionally minimal -- only the two artifacts NOT on the public npm registry:
- react-native-macos-0.85.3-tvinhas.tgz (the fork itself)
- react-native-macos-virtualized-lists-0.85.3-tvinhas.tgz (@react-native-macos/virtualized-lists, unpublished)
Every @react-native/* package resolves from npm at 0.85.3 directly -- no per-package override needed. Consumers need exactly two overrides: "react-native-macos": "$react-native-macos" (name-collision guard) + the virtualized-lists tarball URL.
react-native-macos 0.83.0-tvinhas
Local-release of the 0.83-merge branch with 9 fork-side PRs collapsed for downstream consumption. Filed upstream as PRs microsoft#2956–microsoft#2964 against microsoft/react-native-macos; published here as tarballs while review is in flight.
What's included
Beyond upstream 0.83-merge tip:
- microsoft#2956 codegen — use
REACT_NATIVEconstant fornpmPackageName - microsoft#2957 hermes-utils.rb — pick
static_hvsmainbranch byRCT_HERMES_V1_ENABLED - microsoft#2958 RCTSwiftUI — expose
React-RCTUIKitmodule to Swift consumers - microsoft#2959 Fabric — fix three macOS focus regressions (
blur,sendAccessibilityEvent, VirtualView hooks) - microsoft#2960 rn-tester — restore
RNTesterPods.xcodeproj/project.pbxproj(was missing from0.83-merge) - microsoft#2961 fmt — patch
base.hconsteval gate viaprepare_commandfor Xcode 26.x - microsoft#2962 RCTViewComponentView.mm — guard iOS-only methods so the file compiles on macOS
- microsoft#2963 include
React-RCTUIKit.podspecin npm publish files array - microsoft#2964 TouchableBounce + AccessibilityInfo — align macOS `[macOS]` carve-outs with upstream 0.83 restructures
End-to-end validated locally on Xcode 26.5 / Apple Silicon: RNTester-macOS.app + microsoft/react-native-test-app's example-macos both build cleanly with `hermesvm.framework` linked.
How to consume
Each `.tgz` is a packed workspace from the fork's monorepo with workspace dep refs resolved to `0.83.0-tvinhas` literals. Downstream consumers (Epistles, RNTA, etc.) reference the main `react-native-macos` tarball URL from `package.json` and add a `resolutions` (yarn) or `overrides` (npm) block mapping the transitive workspace deps to their tarball URLs from this release.
The 24 tarballs are:
- `react-native-macos-0.83.0-tvinhas.tgz` — the main package
- 7 direct workspace deps: `assets-registry`, `codegen`, `community-cli-plugin`, `gradle-plugin`, `js-polyfills`, `normalize-colors`, `virtualized-lists`
- 16 transitive workspace deps (babel-preset, babel-plugin-codegen, debugger-frontend, debugger-shell, dev-middleware, etc.) — included for whoever needs them
`@react-native/tester` (the fork's internal test harness, ~122 MB) is excluded — not in any consumer's dep chain.
Caveats
- Not signed, not on npm registry — tarball URLs only.
- The `0.83-tvinhas` branch source on this fork still has `workspace:*` refs; only the packed tarballs carry the resolved `0.83.0-tvinhas` literals.
- Deprecated once `microsoft/react-native-macos` ships an official `0.83.x` release.