Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
0c8e15e
[LOCAL] Bump Hermes
cipolleschi Jan 13, 2025
94b7082
Revert "Do not reset rn-artifacts-version on release branch (#48572)"
cortinico Jan 13, 2025
b713f27
Release 0.78.0-rc.0
react-native-bot Jan 15, 2025
5c7823f
Properly test JSC for template_app e2e tests (#48656)
cipolleschi Jan 14, 2025
ddfa8a7
Use RNTester App downloaded from CI instead of building (#48637)
cipolleschi Jan 15, 2025
5bff540
Fix ruby (#48721)
cipolleschi Jan 16, 2025
36e2ae6
fix Pressable when transform style is animated (#48672)
sammy-SC Jan 14, 2025
bb5f971
Animated: Fix `onUserDrivenAnimationEnded` w/ Insertion Effects (#48678)
yungsters Jan 15, 2025
3abb4ca
Animated: Defer `onAnimatedValueUpdate` on Attach + Native (#48715)
yungsters Jan 16, 2025
1f412d0
Release 0.78.0-rc.1
react-native-bot Jan 20, 2025
7e883be
Update Podfile.lock
fabriziocucci Jan 22, 2025
8207a09
Fix images not displayed when extension is implicit (#48888)
cipolleschi Jan 23, 2025
465f49e
Release 0.78.0-rc.2
react-native-bot Jan 28, 2025
76da20a
Update Podfile.lock
fabriziocucci Jan 29, 2025
1bd9d36
fix(react-native): pass the protocol from bundle URL to HMR client on…
byCedric Jan 28, 2025
cbf4f26
fix(dev-middleware): add missing `invariant` dependency (#49047)
tido64 Jan 30, 2025
ea49d4d
Fix `maxFontSizeMultiplier` prop on `Text` and `TextInput` components…
RickardZrinski Jan 29, 2025
5c55580
Add extra parameter to define whether codegen is invoked by lib or ap…
cipolleschi Jan 28, 2025
82b78f3
Release 0.78.0-rc.3
react-native-bot Feb 3, 2025
5f1aeff
[LOCAL] Bump Podfile.lock
cipolleschi Feb 3, 2025
d5b9e79
Be less strict with method parsing of TurboModule Interop Layer (#49072)
cipolleschi Feb 3, 2025
a567736
Fix "paused on debugger" overlay icon (#48736)
robhogan Jan 16, 2025
9468ac6
Fix execution of early InteropEvents (#48823)
mdvacca Jan 22, 2025
8072627
Undo breaking change in ReactPointerEventsView due to Kotlin conversi…
cortinico Feb 7, 2025
ef14530
Undo a breaking change on ReactOverflowView (#49229)
cortinico Feb 7, 2025
b96e948
Revert visibility change of ReactCookieJarContainer (#49247)
javache Feb 7, 2025
ebfd705
[RN][iOS] Properly handle null values in TM interop layer (#49291)
cipolleschi Feb 10, 2025
461ec65
Release 0.78.0-rc.4
react-native-bot Feb 11, 2025
98e8e84
Update Podfile.lock
fabriziocucci Feb 11, 2025
9e664dc
Make UIBlock.execute params non nullable
mdvacca Feb 10, 2025
7b088fa
Allow multiple RN instances to run at the same time (#49300)
cipolleschi Feb 11, 2025
86db4fa
Restore Metro log streaming via CLI flag (#49354)
huntie Feb 12, 2025
a2f17c5
Release 0.78.0-rc.5
react-native-bot Feb 13, 2025
1e5ae5f
Update Podfile.lock
fabriziocucci Feb 13, 2025
c64256b
Release 0.78.0
react-native-bot Feb 19, 2025
721f5d3
Update Podfile.lock
fabriziocucci Feb 20, 2025
bdc83cb
Added custom load js block in bridge mode (#48845)
zhongwuzw Feb 6, 2025
123bfb8
Update cli-server-api middleware imports (#48997)
huntie Jan 28, 2025
68dc582
Fix elevation with border-radius set (#48982) (#49877)
polovi Mar 7, 2025
97adbd8
Fix issue with extraModulesForBridge callback (#49849)
Mar 7, 2025
12b70ae
[RN][Releases] Fix Publish template (#49789)
cipolleschi Mar 11, 2025
9e47ed9
increase ping-pong timeout before killing WS connection to DevTools (…
vzaidman Feb 13, 2025
282cdc9
Fixes TextInput crashes when any text is entered while running as iOS…
zhongwuzw Mar 11, 2025
665212e
Fix Android Image `defaultSource` runtime error (#49097)
mateoguzmana Feb 4, 2025
9ffbead
community-cli-plugin: resolve cli-server-api via peer dependency on c…
robhogan Mar 18, 2025
29e39d1
Handle null params in the Interop TM layer (#49873)
cipolleschi Mar 7, 2025
1299ef7
Release 0.78.1
react-native-bot Mar 19, 2025
166ea31
[LOCAL][RN][iOS] Bump Podfile.lock
cipolleschi Mar 19, 2025
1e54c5d
Remove the v prefix from the version passed by GHA to the script (#50…
cipolleschi Mar 20, 2025
23c9dbc
Metro minimum to 0.81.3, fix "_interopRequireDefault is not a functio…
robhogan Apr 1, 2025
301532b
fix: set text position should not reset component text (#49450)
freeboub Feb 24, 2025
31e09bc
Fix issue with zIndex child removal (#49900)
rozele Mar 10, 2025
994ea3b
Add missing loadFromSource method in the DefaultRNFactoryDelegate (#4…
cipolleschi Mar 10, 2025
5861f7e
fix: iOS app crash caused by the request operation canceling (#48350)
zhouzh1 Feb 18, 2025
eb8c1c3
Correctly batch reportMount calls (#50090)
rubennorte Mar 18, 2025
aa75e94
Avoid errors when dispatching mount operations within mount hooks (#5…
rubennorte Mar 18, 2025
ae1841a
Convert to JSException only NSException from sync methods (#50193)
cipolleschi Mar 21, 2025
f3d1ad1
Release 0.78.2
react-native-bot Apr 1, 2025
0d1bb87
Fixed patch
kushagra-zepto Jun 20, 2025
878204f
changes for fixing patch for animation crash
amitmundraz08 Jul 22, 2025
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
2 changes: 0 additions & 2 deletions .github/actions/build-android/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ runs:
- name: Set React Native Version
shell: bash
run: node ./scripts/releases/set-rn-artifacts-version.js --build-type ${{ inputs.release-type }}
# We don't want to re-set the artifacts version if we're on the release branch.
if: ${{ !contains(github.ref, '-stable') }}
- name: Setup gradle
uses: ./.github/actions/setup-gradle
with:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflow-scripts/publishTemplate.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ module.exports.verifyPublishedTemplate = async (
latest = false,
retries = MAX_RETRIES,
) => {
if (version.startsWith('v')) {
version = version.slice(1);
}

log(`🔍 Is ${TEMPLATE_NPM_PKG}@${version} on npm?`);

let count = retries;
Expand All @@ -86,7 +90,7 @@ module.exports.verifyPublishedTemplate = async (
return;
}
log(
`🐌 ${TEMPLATE_NPM_PKG}@latest → ${pkg.version} on npm and not ${version} as expected, retrying...`,
`🐌 ${TEMPLATE_NPM_PKG}@latest → ${json.version} on npm and not ${version} as expected, retrying...`,
);
} catch (e) {
log(`Nope, fetch failed: ${e.message}`);
Expand Down
7 changes: 6 additions & 1 deletion .github/workflows/test-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ jobs:
react-native-version: ${{ needs.prepare_hermes_workspace.outputs.react-native-version }}

test_ios_rntester:
runs-on: macos-13
runs-on: macos-13-large
needs:
[build_apple_slices_hermes, prepare_hermes_workspace, build_hermes_macos]
env:
Expand Down Expand Up @@ -369,6 +369,11 @@ jobs:
sed -i 's/newArchEnabled=true/newArchEnabled=false/' android/gradle.properties
fi

if [[ ${{matrix.jsengine}} == "JSC" ]]; then
echo "Using JSC instead of Hermes"
sed -i 's/hermesEnabled=true/hermesEnabled=false/' android/gradle.properties
fi

# Build
cd android
CAPITALIZED_FLAVOR=$(echo "${{ matrix.flavor }}" | awk '{print toupper(substr($0, 1, 1)) substr($0, 2)}')
Expand Down
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ ruby ">= 2.6.10"
gem 'cocoapods', '~> 1.13', '!= 1.15.0', '!= 1.15.1'
gem 'activesupport', '>= 6.1.7.5', '< 7.1.0'
gem 'xcodeproj', '< 1.26.0'
gem 'concurrent-ruby', '< 1.3.4'
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@
"@babel/preset-flow": "^7.24.7",
"@definitelytyped/dtslint": "^0.0.127",
"@jest/create-cache-key-function": "^29.6.3",
"@react-native/metro-babel-transformer": "0.77.0-main",
"@react-native/metro-config": "0.77.0-main",
"@react-native/metro-babel-transformer": "0.78.2",
"@react-native/metro-config": "0.78.2",
"@tsconfig/node18": "1.0.1",
"@types/react": "^19.0.0",
"@typescript-eslint/parser": "^7.1.1",
Expand Down Expand Up @@ -87,9 +87,9 @@
"jest-junit": "^10.0.0",
"jest-snapshot": "^29.7.0",
"jscodeshift": "^0.14.0",
"metro-babel-register": "^0.81.0",
"metro-memory-fs": "^0.81.0",
"metro-transform-plugins": "^0.81.0",
"metro-babel-register": "^0.81.3",
"metro-memory-fs": "^0.81.3",
"metro-transform-plugins": "^0.81.3",
"micromatch": "^4.0.4",
"node-fetch": "^2.2.0",
"nullthrows": "^1.1.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/assets/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@react-native/assets-registry",
"version": "0.77.0-main",
"version": "0.78.2",
"description": "Asset support code for React Native.",
"license": "MIT",
"repository": {
Expand Down
4 changes: 2 additions & 2 deletions packages/babel-plugin-codegen/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@react-native/babel-plugin-codegen",
"version": "0.77.0-main",
"version": "0.78.2",
"description": "Babel plugin to generate native module and view manager code for React Native.",
"license": "MIT",
"repository": {
Expand All @@ -26,7 +26,7 @@
],
"dependencies": {
"@babel/traverse": "^7.25.3",
"@react-native/codegen": "0.77.0-main"
"@react-native/codegen": "0.78.2"
},
"devDependencies": {
"@babel/core": "^7.25.2"
Expand Down
5 changes: 3 additions & 2 deletions packages/community-cli-plugin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Start the React Native development server.
#### Usage

```sh
npx react-native start [options]
npx @react-native-community/cli start [options]
```

#### Options
Expand All @@ -37,6 +37,7 @@ npx react-native start [options]
| `--cert <path>` | Specify path to a custom SSL cert. |
| `--config <string>` | Path to the CLI configuration file. |
| `--no-interactive` | Disable interactive mode. |
| `--client-logs` | **[Deprecated]** Enable plain text JavaScript log streaming for all connected apps. |

### `bundle`

Expand All @@ -45,7 +46,7 @@ Build the bundle for the provided JavaScript entry file.
#### Usage

```sh
npx react-native bundle --entry-file <path> [options]
npx @react-native-community/cli bundle --entry-file <path> [options]
```

#### Options
Expand Down
18 changes: 9 additions & 9 deletions packages/community-cli-plugin/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@react-native/community-cli-plugin",
"version": "0.77.0-main",
"version": "0.78.2",
"description": "Core CLI commands for React Native",
"keywords": [
"react-native",
Expand All @@ -22,25 +22,25 @@
"dist"
],
"dependencies": {
"@react-native/dev-middleware": "0.77.0-main",
"@react-native/metro-babel-transformer": "0.77.0-main",
"@react-native/dev-middleware": "0.78.2",
"@react-native/metro-babel-transformer": "0.78.2",
"chalk": "^4.0.0",
"debug": "^2.2.0",
"invariant": "^2.2.4",
"metro": "^0.81.0",
"metro-config": "^0.81.0",
"metro-core": "^0.81.0",
"metro": "^0.81.3",
"metro-config": "^0.81.3",
"metro-core": "^0.81.3",
"readline": "^1.3.0",
"semver": "^7.1.3"
},
"devDependencies": {
"metro-resolver": "^0.81.0"
"metro-resolver": "^0.81.3"
},
"peerDependencies": {
"@react-native-community/cli-server-api": "*"
"@react-native-community/cli": "*"
},
"peerDependenciesMeta": {
"@react-native-community/cli-server-api": {
"@react-native-community/cli": {
"optional": true
}
},
Expand Down
8 changes: 8 additions & 0 deletions packages/community-cli-plugin/src/commands/start/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,14 @@ const startCommand: Command = {
name: '--no-interactive',
description: 'Disables interactive mode',
},
{
name: '--client-logs',
description:
'[Deprecated] Enable plain text JavaScript log streaming for all ' +
'connected apps. This feature is deprecated and will be removed in ' +
'future.',
default: false,
},
],
};

Expand Down
38 changes: 26 additions & 12 deletions packages/community-cli-plugin/src/commands/start/middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
* @oncall react_native
*/

import type {NextHandleFunction, Server} from 'connect';
import typeof * as CLIServerAPI from '@react-native-community/cli-server-api';
import type {Server} from 'connect';
import type {TerminalReportableEvent} from 'metro/src/lib/TerminalReporter';

const debug = require('debug')('ReactNative:CommunityCliPlugin');
Expand All @@ -30,10 +31,6 @@ type MiddlewareReturn = {
...
};

const noopNextHandle: NextHandleFunction = (req, res, next) => {
next();
};

// $FlowFixMe
const unusedStubWSServer: ws$WebSocketServer = {};
// $FlowFixMe
Expand All @@ -45,6 +42,12 @@ const communityMiddlewareFallback = {
port: number,
watchFolders: $ReadOnlyArray<string>,
}): MiddlewareReturn => ({
// FIXME: Several features will break without community middleware and
// should be migrated into core.
// e.g. used by Libraries/Core/Devtools:
// - /open-stack-frame
// - /open-url
// - /symbolicate
middleware: unusedMiddlewareStub,
websocketEndpoints: {},
messageSocketEndpoint: {
Expand All @@ -59,23 +62,34 @@ const communityMiddlewareFallback = {
reportEvent: (event: TerminalReportableEvent) => {},
},
}),
indexPageMiddleware: noopNextHandle,
};

// Attempt to use the community middleware if it exists, but fallback to
// the stubs if it doesn't.
try {
const community = require('@react-native-community/cli-server-api');
communityMiddlewareFallback.indexPageMiddleware =
community.indexPageMiddleware;
// `@react-native-community/cli` is an optional peer dependency of this
// package, and should be a dev dependency of the host project (via the
// community template's package.json).
const communityCliPath = require.resolve('@react-native-community/cli');

// `@react-native-community/cli-server-api` is a dependency of
// `@react-native-community/cli`, but is not re-exported by it, so we need
// to resolve the former through the latter.
const communityCliServerApiPath = require.resolve(
'@react-native-community/cli-server-api',
{paths: [communityCliPath]},
);
// $FlowIgnore[unsupported-syntax] dynamic import
const communityCliServerApi: CLIServerAPI = require(
communityCliServerApiPath,
);
// $FlowIgnore[unsupported-syntax] dynamic import
communityMiddlewareFallback.createDevServerMiddleware =
community.createDevServerMiddleware;
communityCliServerApi.createDevServerMiddleware;
} catch {
debug(`⚠️ Unable to find @react-native-community/cli-server-api
Starting the server without the community middleware.`);
}

export const createDevServerMiddleware =
communityMiddlewareFallback.createDevServerMiddleware;
export const indexPageMiddleware =
communityMiddlewareFallback.indexPageMiddleware;
14 changes: 8 additions & 6 deletions packages/community-cli-plugin/src/commands/start/runServer.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import isDevServerRunning from '../../utils/isDevServerRunning';
import loadMetroConfig from '../../utils/loadMetroConfig';
import * as version from '../../utils/version';
import attachKeyHandlers from './attachKeyHandlers';
import {createDevServerMiddleware, indexPageMiddleware} from './middleware';
import {createDevServerMiddleware} from './middleware';
import {createDevMiddleware} from '@react-native/dev-middleware';
import chalk from 'chalk';
import Metro from 'metro';
Expand All @@ -44,6 +44,7 @@ export type StartCommandArgs = {
config?: string,
projectRoot?: string,
interactive: boolean,
clientLogs: boolean,
};

async function runServer(
Expand Down Expand Up @@ -96,6 +97,11 @@ async function runServer(
require.resolve(plugin),
);
}
// TODO(T214991636): Remove legacy Metro log forwarding
if (!args.clientLogs) {
// $FlowIgnore[cannot-write] Assigning to readonly property
metroConfig.server.forwardClientLogs = false;
}

let reportEvent: (event: TerminalReportableEvent) => void;
const terminal = new Terminal(process.stdout);
Expand Down Expand Up @@ -146,11 +152,7 @@ async function runServer(
secure: args.https,
secureCert: args.cert,
secureKey: args.key,
unstable_extraMiddleware: [
communityMiddleware,
indexPageMiddleware,
middleware,
],
unstable_extraMiddleware: [communityMiddleware, middleware],
websocketEndpoints: {
...communityWebsocketEndpoints,
...websocketEndpoints,
Expand Down
2 changes: 1 addition & 1 deletion packages/core-cli-utils/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@react-native/core-cli-utils",
"version": "0.77.0-main",
"version": "0.78.2",
"description": "React Native CLI library for Frameworks to build on",
"license": "MIT",
"main": "./src/index.flow.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/debugger-frontend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@react-native/debugger-frontend",
"version": "0.77.0-main",
"version": "0.78.2",
"description": "Debugger frontend for React Native based on Chrome DevTools",
"keywords": [
"react-native",
Expand Down
5 changes: 3 additions & 2 deletions packages/dev-middleware/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@react-native/dev-middleware",
"version": "0.77.0-main",
"version": "0.78.2",
"description": "Dev server middleware for React Native",
"keywords": [
"react-native",
Expand All @@ -23,11 +23,12 @@
],
"dependencies": {
"@isaacs/ttlcache": "^1.4.1",
"@react-native/debugger-frontend": "0.77.0-main",
"@react-native/debugger-frontend": "0.78.2",
"chrome-launcher": "^0.15.2",
"chromium-edge-launcher": "^0.2.0",
"connect": "^3.6.5",
"debug": "^2.2.0",
"invariant": "^2.2.4",
"nullthrows": "^1.1.1",
"open": "^7.0.3",
"selfsigned": "^2.4.1",
Expand Down
11 changes: 11 additions & 0 deletions packages/dev-middleware/src/createDevMiddleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,17 @@ function createWrappedEventReporter(
`Profiling build target "${event.appId}" registered for debugging`,
);
break;
case 'fusebox_console_notice':
logger?.info(
'\n' +
'\u001B[7m' +
' \u001B[1m💡 JavaScript logs have moved!\u001B[22m They can now be ' +
'viewed in React Native DevTools. Tip: Type \u001B[1mj\u001B[22m in ' +
'the terminal to open (requires Google Chrome or Microsoft Edge).' +
'\u001B[27m' +
'\n',
);
break;
}

reporter?.logEvent(event);
Expand Down
13 changes: 13 additions & 0 deletions packages/dev-middleware/src/inspector-proxy/Device.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ const PAGES_POLLING_INTERVAL = 1000;
// more details.
const FILE_PREFIX = 'file://';

let fuseboxConsoleNoticeLogged = false;

type DebuggerConnection = {
// Debugger web socket connection
socket: WS,
Expand Down Expand Up @@ -519,6 +521,7 @@ export default class Device {
// created instead of manually checking this on every getPages result.
for (const page of this.#pages.values()) {
if (this.#pageHasCapability(page, 'nativePageReloads')) {
this.#logFuseboxConsoleNotice();
continue;
}

Expand Down Expand Up @@ -1073,4 +1076,14 @@ export default class Device {
dangerouslyGetSocket(): WS {
return this.#deviceSocket;
}

// TODO(T214991636): Remove notice
#logFuseboxConsoleNotice() {
if (fuseboxConsoleNoticeLogged) {
return;
}

this.#deviceEventReporter?.logFuseboxConsoleNotice();
fuseboxConsoleNoticeLogged = true;
}
}
Loading
Loading