Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
89a2a20
Bump hermes version
robhogan May 5, 2026
0311680
Bump hermes-compiler dependency
robhogan May 5, 2026
1382a5d
Release 0.86.0-rc.0
react-native-bot May 6, 2026
6b54fca
[LOCAL] Bump Podfile.lock
react-native-bot May 6, 2026
1d8d46b
Make PODFILE_DIR build setting portable across machines (#56732)
zoontek May 11, 2026
ff84256
Fix Image.getSize returning downsampled dimensions on Android (#56736)
zoontek May 12, 2026
94b6bcb
Release 0.86.0-rc.1
react-native-bot May 18, 2026
aa91ba2
[LOCAL] Bump Podfile.lock
react-native-bot May 18, 2026
ff2562e
fix(ios): load RCTDefines.h first in React umbrella + drop submodule …
wneel May 18, 2026
443ac40
fix(cocoapods) Podfile.lock SPEC CHECKSUMS drift for React XCFramewor…
chrfalch May 13, 2026
f2880fd
Cache prebuilt iOS binaries in ~/Library/Caches/ReactNative (#56847)
cipolleschi May 18, 2026
6c6511c
feat(Pressable): add support for PlatformColor and alpha (#56395)
adrcotfas May 20, 2026
cc27962
fix(cocoapods): escape local file URIs for unicode paths (#56907)
chrfalch May 22, 2026
19da7bb
Release 0.86.0-rc.2
react-native-bot May 25, 2026
72cbd40
[LOCAL] Bump Podfile.lock
react-native-bot May 25, 2026
cd5b3b5
Bump Hermes V1 version to 250829098.0.14
fabriziocucci Jun 2, 2026
012be3b
Release 0.86.0-rc.3
react-native-bot Jun 2, 2026
3c1595b
[LOCAL] Bump Podfile.lock
react-native-bot Jun 2, 2026
a632f9e
Release 0.86.0
react-native-bot Jun 9, 2026
d698cec
[LOCAL] Bump Podfile.lock
react-native-bot Jun 9, 2026
1e1fd4f
Update GH Actions references from facebook/react-native to react/reac…
fabriziocucci Jun 16, 2026
a8eb4f7
Unbreak android CI by moving to ubuntu-latest (#57216)
fabriziocucci Jun 16, 2026
27931ff
Fix Android template E2E for PRs targeting stable branches (#57650)
gabrieldonadel Jul 23, 2026
9553811
Bump Hermes V1 to 250829098.0.16 (#57646)
gabrieldonadel Jul 23, 2026
36f69ef
Fix `display: contents` nodes having `hasNewLayout` set incorrectly (…
j-piasecki Jul 23, 2026
821045a
Do not synchronize on java.lang.Boolean. (#56196)
Yqwed Jun 30, 2026
cdfba52
Fix Android Fabric Native Animated null prop crash (#56913)
jingjing2222 May 26, 2026
0b941bc
Add guards around nativeProps usage to prevent race conditions (#52646)
OrfeasZ Jul 1, 2026
0a1ebb7
Release 0.86.1
react-native-bot Jul 24, 2026
3d9c852
Revert "Release 0.86.1"
cipolleschi Jul 24, 2026
f4ffd25
[LOCAL] Set stagingProfileId to com.facebook
cortinico Jul 24, 2026
5b9e949
Backport npm trusted publishing to 0.86 (#57664)
cipolleschi Jul 24, 2026
6766cc3
Update repository references on 0.86 (#57666)
cipolleschi Jul 24, 2026
00ac282
[LOCAL] fix linting
cipolleschi Jul 24, 2026
db582cd
Release 0.86.1
react-native-bot Jul 24, 2026
501fac4
Release 0.86.2
react-native-bot Jul 27, 2026
62d6a6c
Fix popup menu metadata for trusted publishing
cipolleschi Jul 27, 2026
efd46eb
Revert "Release 0.86.2"
cipolleschi Jul 27, 2026
ee90a75
Release 0.86.2
react-native-bot Jul 27, 2026
8bb110d
Fix post-release workflow execution
cipolleschi Jul 27, 2026
5ea8639
Fix post-release recovery failures
cipolleschi Jul 27, 2026
9d9c446
[LOCAL] Bump Podfile.lock
react-native-bot Jul 27, 2026
497e1d1
Make post-release asset recovery resumable
cipolleschi Jul 27, 2026
3fa695a
[0.86] Use macOS 26 runners for iOS E2E tests (#58057)
cipolleschi Aug 21, 2026
09dcc63
Fix RetryableMountingLayerException crash in updateOverflowInset (#56…
javache May 11, 2026
fdb26ed
Fix use-after-free data race in EventEmitter.cpp (T259167206) (#56763)
May 11, 2026
6e3f0e8
fix(ios): make Podfile.lock SPEC CHECKSUMS deterministic across machi…
IsaacIsrael Jun 3, 2026
3e5e3c2
Fix custom font weight rendering heaviest face on iOS Fabric (#57483)
jensdev Jul 9, 2026
5c129ff
Fix ConcurrentModificationException in IntentModule.getInitialURL re-…
nickcernera Jul 27, 2026
3fd71f0
[LOCAL] Bump hermes-v1 to 250829098.0.17 (#58051)
cipolleschi Aug 24, 2026
4323a26
Fix parentNode for nested root host views like <Modal> (#57623)
rubennorte Jul 21, 2026
4829a67
Release 0.86.3
react-native-bot Aug 24, 2026
7591eb0
Revert "Release 0.86.3"
cipolleschi Aug 24, 2026
95cffbf
Release 0.86.3
react-native-bot Aug 24, 2026
72202db
[LOCAL] Bump Podfile.lock
react-native-bot Aug 24, 2026
85d7fcc
Merge React Native 0.86.0 stable into React Native macOS 0.86
Saadnajmi Jul 18, 2026
688d6f6
chore: regenerate 0.86 dependency metadata
Saadnajmi Jul 18, 2026
0e65164
chore: regenerate 0.86 JavaScript API snapshot
Saadnajmi Jul 18, 2026
7c4d49a
chore: regenerate 0.86 C++ API snapshots
Saadnajmi Jul 18, 2026
e6e8825
chore: regenerate 0.86 Jest snapshots
Saadnajmi Jul 18, 2026
af149cd
chore: regenerate 0.86 CocoaPods metadata
Saadnajmi Jul 18, 2026
351c406
fix: align 0.86 release package constraints
Saadnajmi Jul 18, 2026
af2eccf
fix: preserve Changesets origin fallback
Saadnajmi Jul 18, 2026
1aa00d6
chore: refresh 0.86 CocoaPods lock
Saadnajmi Jul 18, 2026
ec2f512
chore(0.86): sync upstream React Native 0.86.3
Saadnajmi Sep 16, 2026
708d536
chore(0.86): align the stable release graph
Saadnajmi Sep 17, 2026
9dc2862
fix(0.86): apply reviewed validation artifacts and Hermes test fixes
Saadnajmi Sep 17, 2026
1f361fa
chore(0.86): apply approved generated CocoaPods lock
Saadnajmi Sep 20, 2026
79c6a32
chore(0.86): prepare stable 0.86.0 release
Saadnajmi Sep 21, 2026
0603dca
chore(0.86): refresh approved generated API snapshot
Saadnajmi Sep 21, 2026
0d57e36
fix(ci): apply reviewed release validation repairs
Saadnajmi Sep 22, 2026
7b0259d
fix(ci): align lock metadata with the public registry
Saadnajmi Sep 22, 2026
88032ae
fix(ci): refresh validated snapshots and platform fixtures
Saadnajmi Sep 22, 2026
c7b8552
fix(ci): refresh validated snapshots and platform fixtures
Saadnajmi Sep 22, 2026
734b39b
fix(ci): refresh validated snapshots and platform fixtures
Saadnajmi Sep 22, 2026
ceb4a64
fix(ci): refresh validated snapshots and platform fixtures
Saadnajmi Sep 22, 2026
62d2d4b
fix(ci): refresh validated snapshots and platform fixtures
Saadnajmi Sep 22, 2026
33dc11c
fix(ci): refresh validated snapshots and platform fixtures
Saadnajmi Sep 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
"access": "public",
"baseBranch": "origin/main",
"baseBranch": "origin/0.86-stable",
"bumpVersionsWithWorkspaceProtocolOnly": true,
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [["react-native-macos", "@react-native-macos/virtualized-lists"]],
"ignore": ["react-native-macos", "@react-native/tester"],
"ignore": [],
"privatePackages": {
"version": false,
"tag": false
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
GitHub Issues in the `microsoft/react-native-macos` repository are used exclusively for tracking bugs in the Microsoft/React Native for macOS fork. If the issue concerns Facebook's react-native, submit the issue to `facebook/react-native`.
GitHub Issues in the `microsoft/react-native-macos` repository are used exclusively for tracking bugs in the Microsoft/React Native for macOS fork. If the issue concerns upstream React Native, submit the issue to `react/react-native`.
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ body:
* If you're found a problem with our **documentation**, [report it here](https://github.com/facebook/react-native-website/issues/).
* If you're having an issue with **Metro** (the bundler), [report it here](https://github.com/facebook/metro/issues/).
* If you're using an external library, report the issue to the **library first**.
* Please [search for similar issues](https://github.com/facebook/react-native/issues) in our issue tracker.
* Please [search for similar issues](https://github.com/react/react-native/issues) in our issue tracker.

Make sure that your issue:
* Have a **valid reproducer** (See [How to report a bug](https://reactnative.dev/contributing/how-to-report-a-bug)).
* Is tested against the [**latest stable**](https://github.com/facebook/react-native/releases/) of React Native.
* Is tested against the [**latest stable**](https://github.com/react/react-native/releases/) of React Native.

🚨 IMPORTANT: Due to the extreme number of bugs we receive, issues **without a reproducer** or for an [**unsupported versions**](https://github.com/reactwg/react-native-releases#which-versions-are-currently-supported) of React Native **will be closed**.
- type: textarea
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/debugger_bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ body:
* If you've found a problem with our **documentation**, [report it here](https://github.com/facebook/react-native-website/issues/).
* If you're having an issue with **Metro** (the bundler), [report it here](https://github.com/facebook/metro/issues/).
* If you're using an external library, report the issue to the **library first**.
* Please [search for similar issues](https://github.com/facebook/react-native/issues) in our issue tracker.
* Please [search for similar issues](https://github.com/react/react-native/issues) in our issue tracker.

Make sure that your issue is tested against the [**latest stable**](https://github.com/facebook/react-native/releases/) of React Native.
Make sure that your issue is tested against the [**latest stable**](https://github.com/react/react-native/releases/) of React Native.
- type: textarea
id: description
attributes:
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/new_architecture_bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ body:
Thank you for taking the time to report an issue for [the New Architecture of React Native](https://reactnative.dev/docs/the-new-architecture/landing-page),
your contribution will help make the framework better for everyone.

If you're **NOT** using the New Architecture, please use this [other bug type](https://github.com/facebook/react-native/issues/new?template=bug_report.yml).
If you're **NOT** using the New Architecture, please use this [other bug type](https://github.com/react/react-native/issues/new?template=bug_report.yml).
Do not attempt to open a bug in this category if you're not using the New Architecture as your bug will be closed.

Make sure that your issue:
* Have a **valid reproducer** (See [How to report a bug](https://reactnative.dev/contributing/how-to-report-a-bug)).
* Is tested against the [**latest stable**](https://github.com/facebook/react-native/releases/) of React Native.
* Is tested against the [**latest stable**](https://github.com/react/react-native/releases/) of React Native.

🚨 IMPORTANT: Due to the extreme number of bugs we receive, issues **without a reproducer** or for an [**unsupported versions**](https://github.com/reactwg/react-native-releases#which-versions-are-currently-supported) of React Native **will be closed**.
- type: textarea
Expand Down
2 changes: 1 addition & 1 deletion .github/RELEASE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ To help you upgrade to this version, you can use the [upgrade helper](https://re

---

See changes from this release in the [changelog PR](https://github.com/facebook/react-native/labels/%F0%9F%93%9D%20Changelog)
See changes from this release in the [changelog PR](https://github.com/react/react-native/labels/%F0%9F%93%9D%20Changelog)
2 changes: 1 addition & 1 deletion .github/SUPPORT.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ The React Native website is hosted on a [separate repository](https://github.com

## 🐛 I found a bug in React Native.

If you want to report a reproducible bug or regression in the React Native library, you can [create a new issue](https://github.com/facebook/react-native/issues/new?labels=Type%3A+Bug+Report&template=bug_report.md). It's a good idea to look through [open issues](https://github.com/facebook/react-native/issues) before doing so, as someone else may have reported a similar issue.
If you want to report a reproducible bug or regression in the React Native library, you can [create a new issue](https://github.com/react/react-native/issues/new?labels=Type%3A+Bug+Report&template=bug_report.md). It's a good idea to look through [open issues](https://github.com/react/react-native/issues) before doing so, as someone else may have reported a similar issue.


## 🚀 I want to discuss the future of React Native.
Expand Down
16 changes: 6 additions & 10 deletions .github/actions/build-npm-package/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ inputs:
release-type:
required: true
description: The type of release we are building. It could be nightly, release or dry-run
gha-npm-token:
required: false
description: The GHA npm token, required only to publish to npm
default: ''
gradle-cache-encryption-key:
description: The encryption key needed to store the Gradle Configuration cache

Expand Down Expand Up @@ -38,6 +34,9 @@ runs:
cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
- name: Setup node.js
uses: ./.github/actions/setup-node
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build packages
Expand All @@ -46,12 +45,9 @@ runs:
- name: Build types
shell: bash
run: yarn build-types --skip-snapshot
# Continue with publish steps
- name: Set npm credentials
if: ${{ inputs.release-type == 'release' ||
inputs.release-type == 'nightly' }}
shell: bash
run: echo "//registry.npmjs.org/:_authToken=${{ inputs.gha-npm-token }}" > ~/.npmrc
# `npm publish` below authenticates via npm Trusted Publishing (OIDC).
# The caller (the `publish-npm.yml` workflow) MUST grant `id-token: write`;
# this composite action runs inside that job.
- name: Publish NPM
shell: bash
run: |
Expand Down
10 changes: 9 additions & 1 deletion .github/actions/setup-node/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,19 @@ inputs:
description: 'The node.js version to use'
required: false
default: '22.14.0'
registry-url:
description: |
Optional npm registry URL passed through to actions/setup-node. Set on
jobs that publish to npm so setup-node writes a `.npmrc` configured to
pick up the OIDC-minted token from npm Trusted Publishing.
required: false
default: ''
runs:
using: "composite"
using: 'composite'
steps:
- name: Setup node.js
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.node-version }}
cache: yarn
registry-url: ${{ inputs.registry-url }}
29 changes: 16 additions & 13 deletions .github/scripts/__tests__/resolve-hermes-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ const {

const root = path.resolve(__dirname, '../../..');
const {version: v1Version} = readHermesMetadata('v1-default', '1');
const {version: legacyVersion} = readHermesMetadata('v1-default', '0');
const script = path.join(root, '.github/scripts/resolve-hermes.mts');
const preload = path.join(__dirname, '__fixtures__/resolve-hermes.cjs');
const sourceCommit = '1234567890abcdef1234567890abcdef12345678';
Expand Down Expand Up @@ -79,19 +80,13 @@ test.each([
[undefined, v1Version, 'HERMES_V1_VERSION_NAME', 'Debug'],
['', v1Version, 'HERMES_V1_VERSION_NAME', 'Debug'],
['true', v1Version, 'HERMES_V1_VERSION_NAME', 'Release'],
['0', '123.4.56', 'HERMES_VERSION_NAME', 'Debug'],
['0', legacyVersion, 'HERMES_VERSION_NAME', 'Debug'],
['1', v1Version, 'HERMES_V1_VERSION_NAME', 'Release'],
])(
'CI downloads flag %s with the selected key and version',
(flag, version, key, flavor) => {
const result = run(['download-hermes', flavor], {
...(flag == null ? {} : {RCT_HERMES_V1_ENABLED: flag}),
...(flag === '0'
? {
HERMES_TEST_PROPERTIES:
`HERMES_VERSION_NAME=${version}\nHERMES_V1_VERSION_NAME=1000.0.0`,
}
: {}),
HERMES_TEST_DOWNLOAD: 'release',
});
expect(result.status).toBe(0);
Expand Down Expand Up @@ -142,12 +137,9 @@ test('CI snapshot fallback uses the five-argument URL helper with the Hermes sub
test.each([undefined, '1', '0'])(
'CI selects source when concrete artifacts are unavailable for flag %s',
flag => {
const version = flag === '0' ? '123.4.56' : v1Version;
const version = flag === '0' ? legacyVersion : v1Version;
const result = run(['download-hermes'], {
...(flag == null ? {} : {RCT_HERMES_V1_ENABLED: flag}),
...(flag === '0'
? {HERMES_TEST_PROPERTIES: `HERMES_VERSION_NAME=${version}`}
: {}),
});
expect(result.status).toBe(0);
expect(result.output).toBe('');
Expand Down Expand Up @@ -175,7 +167,10 @@ const invalidMetadata = [
['', 'Expected one exact HERMES_V1_VERSION_NAME'],
['UNREADABLE', 'EACCES'],
['HERMES_VERSION_NAME=1.2.3', 'Expected one exact HERMES_V1_VERSION_NAME'],
['HERMES_V1_VERSION_NAME=^1.2.3', 'Expected one exact HERMES_V1_VERSION_NAME'],
[
'HERMES_V1_VERSION_NAME=^1.2.3',
'Expected one exact HERMES_V1_VERSION_NAME',
],
[
'HERMES_V1_VERSION_NAME=1.2.3\nHERMES_V1_VERSION_NAME=1.2.3',
'Expected one exact HERMES_V1_VERSION_NAME',
Expand Down Expand Up @@ -221,7 +216,11 @@ test('CI selects source without a download when version.properties is missing',
});

test.each([
['0', 'HERMES_VERSION_NAME', undefined],
[
'0',
'HERMES_VERSION_NAME',
'HERMES_VERSION_NAME=1000.0.0\nHERMES_V1_VERSION_NAME=123.4.56',
],
[
undefined,
'HERMES_V1_VERSION_NAME',
Expand Down Expand Up @@ -260,6 +259,8 @@ test('CI legacy source resolution uses the current helper SHA for the cache outp
const commit = 'abcdef1234567890abcdef1234567890abcdef12';
const result = run(['resolve-commit'], {
RCT_HERMES_V1_ENABLED: '0',
HERMES_TEST_PROPERTIES:
'HERMES_VERSION_NAME=1000.0.0\nHERMES_V1_VERSION_NAME=123.4.56',
HERMES_TEST_COMMIT: commit,
});
expect(result.status).toBe(0);
Expand All @@ -271,6 +272,8 @@ test('CI legacy source resolution uses the current helper SHA for the cache outp
test('CI fails legacy source resolution without falling back to a tag', () => {
const result = run(['resolve-commit'], {
RCT_HERMES_V1_ENABLED: '0',
HERMES_TEST_PROPERTIES:
'HERMES_VERSION_NAME=1000.0.0\nHERMES_V1_VERSION_NAME=123.4.56',
HERMES_TEST_SOURCE_ERROR: 'Cannot resolve merge-base timestamp',
});
expect(result.status).toBe(1);
Expand Down
Loading
Loading