Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Draft] Merge up to 0.76-stable branch cut #2190

Draft
wants to merge 969 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
969 commits
Select commit Hold shift + click to select a range
bd90a07
Update debugger-frontend from 7b143e5...c98a122 (#46000)
huntie Aug 13, 2024
f9abe96
Fix RCTDevLoadingView position (#46005)
sbuggay Aug 13, 2024
7bb7a60
Back out "Fixes NSDataBigString length calculation" (#46011)
realsoelynn Aug 14, 2024
53969cb
Enable third-party podspec sources to be fetched from mirrored git re…
RailByteOEBB Aug 14, 2024
6dc01da
Do not depend on OSS SoLoader anymore (#45873)
cortinico Aug 14, 2024
0caf3e8
Move libreact_newarchdefaults.so inside libreactnative.so (#46004)
cortinico Aug 14, 2024
5b761ff
Move libmapbufferjni.so inside libreactnative.so (#46003)
cortinico Aug 14, 2024
59c1adb
Rethrow original exception in DefaultReactHostDelegate (#46016)
javache Aug 14, 2024
7308858
Collapse stack frames in new renderer error handling file (#45982)
motiz88 Aug 14, 2024
9f77287
Update changelog for 0.75.0 (#45814)
cipolleschi Aug 14, 2024
e39b916
Revert D60143747: Fix debug logging of IntBufferBatchMountItem
javache Aug 14, 2024
bd3a3e3
Remove @react-native-community/cli direct dependencies (#45927)
blakef Aug 14, 2024
94407f5
fix(iOS): displaying irregular borders on iOS Fabric (#45973)
coado Aug 14, 2024
9bc32a0
Fix minimize/restore crash (#46023)
sbuggay Aug 14, 2024
68c0720
- Change RawPropsParser logs to WARNING (#46025)
Aug 15, 2024
bc93044
Refactor: RuntimeScheduler: Make error hander configurable
RSNara Aug 15, 2024
dd7be8d
Route all js errors caught in C++ through JsErrorHandler
RSNara Aug 15, 2024
7fce717
Route fatal js errors caught in js through JsErrorHandler
RSNara Aug 15, 2024
8c26048
ReactInstance: Remove redundant try/catch in loadScript (#45617)
RSNara Aug 15, 2024
a77f268
Add missing pod dependency of jserrorhandler (#46030)
zhongwuzw Aug 15, 2024
b4a2a4e
Backport Fixes for Create Release Workflow (#46034)
cipolleschi Aug 15, 2024
7d088f8
Add changelog for 0.75.1 (#46038)
cipolleschi Aug 15, 2024
15c9961
Fix publish template url for GHA action (#46040)
blakef Aug 15, 2024
26aff66
fix(ios): removed default value (#46020)
elencho Aug 15, 2024
49fa92e
ReactViewGroup - use safer removeViewInLayout (#45980)
Aug 15, 2024
2469c67
Disable connection read timeout for Network.loadNetworkResource (Andr…
huntie Aug 15, 2024
f8aa786
Fix type of callerContext (#46039)
javache Aug 15, 2024
abc322c
fix erroneous pointerenter events firing when pointer leaves app boun…
vincentriemer Aug 15, 2024
d69dbd6
Add support for assymetrical bonder radii when using % (#45985)
jorge-cab Aug 15, 2024
6cc44d7
feat(accessibility): support large content viewer on iOS (#45903)
bacarybruno Aug 15, 2024
0a698e5
Make mix-blend-mode only blend with stacking context parent (#45867)
jorge-cab Aug 15, 2024
17017d2
Add `isolate` property (#45883)
jorge-cab Aug 15, 2024
1740a56
Render Error objects in CDT (#45990)
EdmondChuiHW Aug 16, 2024
cae9ae5
console preview for Error objects (#46010)
EdmondChuiHW Aug 16, 2024
de39ebb
Make default shadow color black (#46053)
joevilches Aug 16, 2024
d490354
Add View box shadow e2e tests (#46054)
joevilches Aug 16, 2024
7fa9bc8
Remove unnecessary circular dependency on bridgeless<->hermes (#46048)
cortinico Aug 16, 2024
e864910
Move more libraries to so-merging: rninstance, react_featureflagsjni,…
cortinico Aug 16, 2024
1d1646a
Fixes findNodeAtPoint when views were inverted (#45519)
zhongwuzw Aug 16, 2024
e39aaf5
Make sure we can create a .xcode.env.local (#46060)
cipolleschi Aug 16, 2024
80c3aea
Move libyoga.so and libturbomodulejsijni.so inside libreactnative.so …
cortinico Aug 16, 2024
6e5227b
First round of prefab cleanup (#46057)
cortinico Aug 16, 2024
7916f7e
Merge libuimanagerjni.so inside libreactnative.so (#46056)
cortinico Aug 16, 2024
db80d78
Merge all the remaining .so libraries into libreactnative.so (#46059)
cortinico Aug 16, 2024
77154c6
Eliminate exact `React.Element` types in react-native codebase
SamChou19815 Aug 16, 2024
39c338f
Eliminate a few React.Element type that will be synced to react-nativ…
SamChou19815 Aug 16, 2024
e881a11
convert TurboReactPackage to BaseReactPackage in oss (#46055)
philIip Aug 17, 2024
3e6b4fa
Fix processFilter incorrectly splitting function args (#46073)
jorge-cab Aug 17, 2024
f905f90
Support OutsetBoxShadowDrawable on Android 9+ (#46037)
NickGerleman Aug 17, 2024
d9f684b
Revamp InsetBoxShadowDrawable (#46074)
NickGerleman Aug 17, 2024
25d6a15
Deploy 0.244.0 to xplat
SamChou19815 Aug 18, 2024
d4d5ab0
Fix lint warnings (#46083)
mdvacca Aug 18, 2024
0e805a9
Make Imagesource `open` for inheritance (#46092)
cortinico Aug 19, 2024
6340662
Add C++ Turbo Module enum Event Emitter example (#46049)
christophpurrer Aug 19, 2024
7f3717e
Add changelog for 0.72.17 (#46100)
cipolleschi Aug 19, 2024
9cfd9dd
Fixes Italic text not work (#46094)
zhongwuzw Aug 19, 2024
2ac997a
Remove references to old template (#46082)
blakef Aug 19, 2024
55d3541
Finalize AssertJ migration (#46097)
cortinico Aug 19, 2024
0f3ed90
Add mix-blend-mode examples to rn-tester (#46006)
jorge-cab Aug 19, 2024
7027eac
Extra log for case where availableHeight is undefined and sizing mode…
joevilches Aug 19, 2024
1a49892
fix: linear gradient color stop fix up spec (#45969)
intergalacticspacehighway Aug 20, 2024
e8fd7a0
update comment to use BaseReactPackage instead of TurboReactPackage (…
philIip Aug 20, 2024
143437a
Update React-RCTAppDelegate.podspec syntax error for USE_HERMES=1 (#4…
rocketraman Aug 20, 2024
457f8f0
Add test for resolving a breakpoint without a reload
motiz88 Aug 20, 2024
0f4a405
Add Text example with BG and borderWidth
cipolleschi Aug 20, 2024
f4609db
Move RCTParagraphTextView drawing to contentView (#46081)
cipolleschi Aug 20, 2024
31cbc77
Add internal end to end tests for text and background color with bord…
cipolleschi Aug 20, 2024
0bb085c
Summary: Add changelog for 0.75.2 (#46111)
blakef Aug 20, 2024
f4a9795
Set REACTNATIVE_MERGED_SO for React Native 0.76 (#46114)
cortinico Aug 20, 2024
4fb518b
Migrate off of iOS 13 deprecated API statusBarFrame (#46105)
Aug 20, 2024
52888c0
fix: iOS crash occurring when navigating to a new app screen with a d…
Aug 20, 2024
efa9711
Fixes Appearance user interface style when app run from background (#…
zhongwuzw Aug 20, 2024
dee5038
Fix MessageQueueThreadImpl warnings (#46108)
mdvacca Aug 20, 2024
ed14101
Remove overriding thread priority for RN Main Thread (#46101)
mdvacca Aug 20, 2024
f6b6d00
fix(android): status bar black strip fixed (#46086)
shubhamguptadream11 Aug 20, 2024
67b4a5a
Introduce extension function for PixelUtil (#46072)
alanleedev Aug 20, 2024
5561457
Limit HermesPerfetto tracing to the top 25 and bottom 25 frames, allo…
Aug 20, 2024
2bbe8f4
Revert D61298649 (#46118)
Aug 20, 2024
d713349
Replace "elevation" in RNTester rows with box-shadow (#46076)
NickGerleman Aug 20, 2024
3cd6d18
Increase Example List Density (#46080)
NickGerleman Aug 20, 2024
ee597bf
Breaking: Always use AttributedStringBox instead of AttributedString …
NickGerleman Aug 21, 2024
a949e0d
Report early js exceptions on the js thread (#46116)
RSNara Aug 21, 2024
387560a
Make StaticViewConfigValidator permissive of extra attributes on SVC …
NickGerleman Aug 21, 2024
a7fbe81
Appearance: Migrate to ESM Named Exports (#46119)
yungsters Aug 21, 2024
693a575
Appearance: Manage Native Listener Count (Android) (#46121)
yungsters Aug 21, 2024
ed3ca07
Appearance: Dedupe `colorScheme` Validation Logic (#46120)
yungsters Aug 21, 2024
8f0f50f
Appearance: Cache `colorScheme` in JavaScript (#46122)
yungsters Aug 21, 2024
a462dfd
delete change_order_of_mounting_instructions optimisation (#46113)
sammy-SC Aug 21, 2024
5164287
Disable native source code fetching in jsinspector-modern targets (#4…
huntie Aug 21, 2024
9c16fb3
Fetch Github tags in the publish-release job (#46131)
cipolleschi Aug 21, 2024
774fe0c
fix(react-native-xcode): Use `CONFIG_CMD` if set (#46112)
krystofwoldrich Aug 21, 2024
e1a1cda
Update RNTester and HelloWorld to min iOS 15.1 (#46136)
realsoelynn Aug 21, 2024
d11c999
Bump React Native OSS build infra to min iOS 15.1 (#46137)
realsoelynn Aug 21, 2024
b93c2b2
Bump React Native CI to min iOS 15.1 (#46135)
realsoelynn Aug 21, 2024
9239ad1
Clean up RCTParagraphComponentView & RCTParagraphTextView (#46125)
zhongwuzw Aug 21, 2024
954e294
perf(virtualized-lists) removing rerender cells for every change of V…
Tom910 Aug 21, 2024
5f7538c
Add default value for newArchitectureEnabled param (#46140)
mdvacca Aug 21, 2024
81a41ec
Clean up ReactViewGroup child listeners (#46139)
Aug 21, 2024
524a3f0
Try fixing bundling outside the repo (#46148)
NickGerleman Aug 22, 2024
42dcfdd
avoid default when switching on UnitType (#46146)
philIip Aug 22, 2024
9bfbf94
Add line offset for baseline alignment of text attachments (#46172)
j-piasecki Aug 22, 2024
5bb4ef5
Fix issue where filter layer was not the same shape as the underlying…
joevilches Aug 22, 2024
5fc2bd4
Improve handling of disconnected nodes in MutationObserver (#46157)
rubennorte Aug 22, 2024
1f755de
Improve handling of disconnected nodes in IntersectionObserver (#46156)
rubennorte Aug 22, 2024
bb3c51d
RN: don't check for or add zero terminator to bundle (#45966)
Aug 22, 2024
75114e3
Fix ModalHostView's inner view not having the correct reactTag (#46176)
javache Aug 22, 2024
858ad5e
move enableLayoutAnimationsOnIOS feature flag to common infra (#46174)
sammy-SC Aug 23, 2024
4075418
Add support for assymetrical border radii when using % (#46009)
jorge-cab Aug 23, 2024
a8be335
fix (iOS): refresh control not behaving correctly if it is offscreen …
deepanshushuklad11 Aug 23, 2024
6b104bb
Fixes race condition when setup image loader (#46153)
zhongwuzw Aug 23, 2024
17613fc
remove unused method nativeFabricUIManager.cloneNode
kassens Aug 23, 2024
d7a3e48
feat(iOS): add support for missing text content types (#42788)
krozniata Aug 23, 2024
b22970e
autolinked package scripts use absolute path (#46186)
blakef Aug 23, 2024
6cab6c2
feat(iOS): line break mode cpp changes and new functions (#46130)
shubhamguptadream11 Aug 23, 2024
fe941a8
feat(iOS): line break mode prop iOS updates to consume new cpp functi…
shubhamguptadream11 Aug 23, 2024
baae360
Fix dropShadow not creating stacking context (#46143)
jorge-cab Aug 23, 2024
8d3c4fb
Fix border radius on Paper (#46187)
jorge-cab Aug 23, 2024
09e8844
Fix undefined behavior in MethodInvoker (#46188)
Aug 23, 2024
6cfe51d
Border Radius percentage should be disabled on Paper (#46179)
shwanton Aug 24, 2024
b6fc75a
Remove check for deprecated isIgnoringInteractionEvents for hotkeys (…
Aug 26, 2024
fdb77ae
Reset animatedView when detaching AnimatedProps (#46205)
javache Aug 26, 2024
b86e8ef
Appearance: Lazily Initialize `NativeAppearance` (#46123)
yungsters Aug 26, 2024
1ffe74a
Add trace markers to ReactTextView (#46214)
NickGerleman Aug 26, 2024
2a23069
fix font weight not update for mutate state (#45932)
meetdhanani17 Aug 26, 2024
d0f48c8
reduce noisy systrace sections (#46185)
sammy-SC Aug 26, 2024
74c9ef8
Remove incorrect state update during unmount in Modal (#46218)
rubennorte Aug 26, 2024
851037d
Dedupe trivial types between modules and components (#46220)
elicwhite Aug 27, 2024
b10ed0e
feat(iOS): dynamically resolve react native path in Hermes podspec (#…
okwasniewski Aug 27, 2024
8c81ffa
fix(android): make getUri and isResource available for override (#46152)
shubhamguptadream11 Aug 27, 2024
b96238d
Remove FakeYogaNode and FakeYogaConfig (#46215)
NickGerleman Aug 27, 2024
3596019
Fix handling 'auto' checks in absolute layout (#46216)
coado Aug 27, 2024
773fc8d
Remove useFuseboxInternalBranding experiment (#46230)
huntie Aug 27, 2024
46d17ef
Start looking for codegen-enabled dependencies from the project root …
dmytrorykun Aug 27, 2024
0cb97f0
feat: build codegen on postinstall (#46227)
okwasniewski Aug 27, 2024
3a77e6e
Update debugger-frontend from c98a122...7f6cfe3 (#46233)
EdmondChuiHW Aug 27, 2024
396bdd8
fix: ensure `--build-output` destination exists (#45182)
szymonrybczak Aug 27, 2024
6365df5
fix(android): resolve crash by handling colour resource IDs with "and…
shubhamguptadream11 Aug 27, 2024
dd26c3c
DebuggerSessionObserver: define global from C++ (#46044)
hoxyq Aug 27, 2024
2e545b1
DebuggerSessionObserver: JavaScript API (#46043)
hoxyq Aug 27, 2024
6d52445
use DebuggerSessionObserver in LogBox (#46045)
hoxyq Aug 27, 2024
f80e6c1
Back out "Introduce NativeDebuggerSessionObserver module" (#46042)
hoxyq Aug 27, 2024
03801f2
Move `experimental_boxShadow` and `experimental_backgroundImage` to B…
NickGerleman Aug 27, 2024
b01da5e
Get filter/boxShadow to show up with CoreFeatures::enablePropIterator…
joevilches Aug 27, 2024
54ce662
Create feature flag to fix incorrect "MountingCoordinator::hasPending…
rubennorte Aug 27, 2024
cf356bd
Remove legacy integration of createPerformanceLogger with Systrace (#…
rubennorte Aug 28, 2024
94e7a87
Remove --experimental-debugger option (#46231)
huntie Aug 28, 2024
c2d7326
Rename Dev Menu debugger item (#46182)
huntie Aug 28, 2024
3077db3
Update references to debugger frontend (#46232)
huntie Aug 28, 2024
8618eec
Make Filters implicitly set overflow hidden (#46145)
jorge-cab Aug 28, 2024
7bc9244
Upgrade pretty-format to v29 (#45732)
dprevost-LMI Aug 28, 2024
20e3f45
fix: Linear gradient border styles with BackgroundStyleApplicator (#4…
intergalacticspacehighway Aug 29, 2024
9cd6f3e
fix prettier error in CI (#46255)
alanleedev Aug 29, 2024
6fa54f9
Remove `experimental_` prefix from `boxShadow` and `filter` (#46245)
jorge-cab Aug 29, 2024
768415d
Refactoring: extract helper functions from StatusBarModule (#46224)
alanleedev Aug 29, 2024
8b2ccea
Update debugger-frontend from 7f6cfe3...32358bd (#46256)
EdmondChuiHW Aug 29, 2024
1333e0e
update compileSdk to 35 (#46235)
alanleedev Aug 29, 2024
0f66a69
rebuild autolinking cache if empty or invalid (#46241)
blakef Aug 29, 2024
0b56cca
Array's with unparsable element type's are explicitly Any vs missing …
elicwhite Aug 29, 2024
a536311
Fix NativeModuleEnumMembers type (#46222)
elicwhite Aug 29, 2024
84ec424
Remove superflous {type:string} from CodegenSchema (#46237)
elicwhite Aug 29, 2024
48c4380
ReactImageView - fix double imageSource check (#46248)
Aug 29, 2024
8501b63
Fix GH-41226 by suppressing path adjustment when not actually drawing…
knappam Aug 29, 2024
a0909ef
Move reporting of long tasks to before updating rendering (#46252)
rubennorte Aug 29, 2024
c6aa9f4
Add surfaceId to EventTarget (#46254)
rubennorte Aug 29, 2024
610212d
Fix incorrect timing for events that do not update the UI (#46253)
rubennorte Aug 29, 2024
9f3fe81
Add missing commander dependency (#46242)
blakef Aug 29, 2024
4351247
Lift Web Performance tracks in Perfetto to the top of the custom trac…
rubennorte Aug 29, 2024
acbde24
Revert D61726506 (#46266)
jorge-cab Aug 30, 2024
a2d53d5
Support simple opacity in nested text (#46267)
NickGerleman Aug 30, 2024
dbe2b38
Remove unnecessary null check from FabricEventDispatcher (#46268)
rubennorte Aug 30, 2024
0eec866
Improve naming of methods in FabricEventDispatcher (#46269)
rubennorte Aug 30, 2024
d055efd
Implement optimized event batching on Android (#46270)
rubennorte Aug 30, 2024
2176866
Add children to separate _containerView, if needed (#46189)
joevilches Aug 30, 2024
7653f76
Decouple background color from border drawing (#46190)
joevilches Aug 30, 2024
4f50aca
Decouple clipping logic from border drawing (#46191)
joevilches Aug 30, 2024
defb0bd
Add more tests for border + child interaction (#46195)
joevilches Aug 30, 2024
2cfd082
Update debugger-frontend from ae992da...d3a8d98 (#46265)
EdmondChuiHW Aug 30, 2024
5cdfec9
update metro version in react-native (#46264)
vzaidman Aug 30, 2024
7d7f94c
Deploy 0.245.0 to xplat (#46272)
SamChou19815 Aug 30, 2024
56937d6
Animated: Generalize `ReactElement` Check in `AnimatedObject` (#46273)
yungsters Aug 30, 2024
6f88a60
Fix small border radius getting capped (#46251)
jorge-cab Aug 30, 2024
b25d6c8
Fix process functions not properly dealing with newlines (#46281)
jorge-cab Aug 30, 2024
4094ce0
RN: Improve Error for Invalid `processFilter` Values (#46271)
yungsters Aug 30, 2024
f00e8ba
Update InspectorFlags to use NDEBUG flag (#46282)
huntie Aug 30, 2024
305b435
Revert D61966685: Update InspectorFlags to use NDEBUG flag
NickGerleman Aug 31, 2024
3350050
Update debugger-frontend from d3a8d98...a556d26 (#46289)
huntie Sep 2, 2024
5bbf5a4
default embedder script for open-source (#46302)
EdmondChuiHW Sep 2, 2024
ade863a
Add Android version of SafeAreaView (#46246)
alanleedev Sep 2, 2024
4ddb12c
export SafeAreaView for limited RN core use (#46249)
alanleedev Sep 3, 2024
a1668e3
Remove experimental suffix from page titles (#46296)
huntie Sep 3, 2024
b875b91
do not ignore events dispatched during view creation (#46308)
sammy-SC Sep 3, 2024
2b11131
Animated: Cleanup Types in `AnimatedTransform` (#46285)
yungsters Sep 3, 2024
c16defa
fix(TypeScript): Allow readonly arrays in transform (#46310)
tjzel Sep 3, 2024
83489de
Fix perfetto integration iOS build (#46313)
javache Sep 3, 2024
db375ab
Do not disable AllocInYoung for Hermes by default (#46314)
javache Sep 3, 2024
c722ec7
Upstream Fixes from React Native Windows Platform (#46315)
chiaramooney Sep 4, 2024
0a1ba02
Animated: Remove Validation from Production Builds (#46287)
yungsters Sep 4, 2024
dea5a6c
Enable Multiple Sheet Presentation in React Native (#46316)
Sep 4, 2024
dda3397
Animated: Make `NativeAnimatedHelper` Private (#46311)
yungsters Sep 4, 2024
eb02d5c
Deploy 0.245.1 to xplat (#46328)
SamChou19815 Sep 4, 2024
b4b0c1d
Avoid list allocation in scroll path (#46324)
javache Sep 4, 2024
320963c
RN: Enable Hermes Parser in Default Metro Config (#46318)
yungsters Sep 4, 2024
e864663
fix broken test due to error message change (#46329)
Sep 4, 2024
464a202
Replace $ObjMap in EventEmitter with mapped type (#46332)
SamChou19815 Sep 4, 2024
62ee5c9
Replace final $ObjMap in react-native with mapped type (#46335)
SamChou19815 Sep 5, 2024
f1031be
Enable Multiple Sheet Presentation in React Native (#46333)
Sep 5, 2024
2bdcbb1
Deploy 0.245.2 to xplat (#46343)
SamChou19815 Sep 5, 2024
3df0f3b
Skip transform invalidation if unchanged (#46345)
javache Sep 5, 2024
b371014
update babel and fix tests accordingly (#46295)
vzaidman Sep 5, 2024
46fc9d9
Fix DispatchUIFrameCallback invoked multiple times per frame (#46346)
javache Sep 5, 2024
f7479e6
set inset based padding to RNTester (#46354)
alanleedev Sep 5, 2024
5fe7660
Set inset based margins on LogBox (#46338)
alanleedev Sep 6, 2024
4c55e94
remove unnecessary useRef (#46351)
sammy-SC Sep 6, 2024
8ebddf3
listen to onUserDrivenAnimationEnded in passive effects versions of u…
sammy-SC Sep 6, 2024
5e77784
Cleanup the useDebouncedEffect experiment
dmytrorykun Sep 6, 2024
194b642
Fix using namespace issues in xplat
r-barnes Sep 6, 2024
31abc5d
Simplify preMountItems frame time check (#46347)
javache Sep 6, 2024
d0a5f8f
Gradle to 8.10 (#46369)
cortinico Sep 6, 2024
aca31eb
Bump AGP to 8.6.0 (#46368)
cortinico Sep 6, 2024
206d008
handle LogBox Notification overlap with nav bar (#46341)
alanleedev Sep 6, 2024
3bd3d76
handle InspectorPanel overlap with system bars (#46340)
alanleedev Sep 6, 2024
0c90cfc
Remove some Tasks overhead (#46348)
javache Sep 6, 2024
1063de3
Instrumentation for SurfaceMountingManager (#46366)
dmytrorykun Sep 6, 2024
9e35dff
Animated: Refactor `NativeAnimatedHelper` (#46312)
yungsters Sep 6, 2024
d1ebe02
Animated: Optimize Traversals in Nodes (#46286)
yungsters Sep 6, 2024
2f86769
Animated: Store Listeners w/ Map
yungsters Sep 6, 2024
1bd4a11
Add Fusebox support for saving traces to disk (#46370)
Sep 6, 2024
e629a85
fix: Bring back Cxx TurboModule autolinking via `registerCxxModuleToG…
mrousavy Sep 6, 2024
17d0345
Migrate FlatList/SectionList E2E testss from Catalyst to RNTester (#4…
shwanton Sep 6, 2024
79e4ed2
Refactor/ bugfix for ReactModalHostView (#46326)
alanleedev Sep 7, 2024
77b3a8b
Modal bugfix for statusBarTranslucent prop and Android 15 (#46359)
alanleedev Sep 7, 2024
9cc6f00
chore(iOS): bump socket rocket to 0.7.1 (#46300)
okwasniewski Sep 7, 2024
d687d38
Fix duplicate entries in HEADER_SEARCH_PATHS when running react_nativ…
dirkpostma Sep 7, 2024
d424c24
Zip slices to preserve symlinks (#46387)
cipolleschi Sep 8, 2024
3244a5e
code cleanup for depreacted OS version (#46390)
alanleedev Sep 9, 2024
97b661c
add inset based margins to RedBox (#46391)
alanleedev Sep 9, 2024
3621606
feat(iOS): expose newArchEnabled, deprecate separate methods (#46228)
okwasniewski Sep 9, 2024
148066e
Bump CLI to 15 (#46394)
cipolleschi Sep 9, 2024
7041ed2
fix(android): ensure Appearance change listener does not skip events …
vonovak Sep 9, 2024
f220bde
Remove Inspector Panel perf + network tabs under New Arch (#46307)
huntie Sep 9, 2024
d55efe8
Fix HERMES_ENABLE_DEBUGGER define for jsinspector-modern under CocoaP…
huntie Sep 9, 2024
143f1ad
Enable RN DevTools Android OSS debug builds (#46395)
robhogan Sep 9, 2024
903c914
Merge commit '143f1ad29874c1e8e9561abae263cb08f4859407' into 0.76-merge
Saadnajmi Sep 9, 2024
00f8817
Revert "feat: build codegen on postinstall (#46227)"
Saadnajmi Sep 10, 2024
a8ced94
Fix up some peer dependency warnings
Saadnajmi Sep 16, 2024
77b36cd
Sorting from `yarn install`
Saadnajmi Sep 16, 2024
93f076e
Update pbxproj hash
Saadnajmi Sep 16, 2024
1088d49
Update `generate-artifacts-executor`
Saadnajmi Sep 17, 2024
f791227
yarn lock
Saadnajmi Sep 17, 2024
50defcc
Stuff compiled
Saadnajmi Sep 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
172 changes: 2 additions & 170 deletions .circleci/README.md
Original file line number Diff line number Diff line change
@@ -1,172 +1,4 @@
# Circle CI

This directory is home to the Circle CI configuration files. Circle is our continuous integration service provider. You can see the overall status of React Native's builds at https://circleci.com/gh/facebook/react-native

You may also see an individual PR's build status by scrolling down to the Checks section in the PR.

## Purposes

We use CircleCI for mainly 3 purposes:

1. Testing changes
2. Release Nightlies
3. Release Stable Versions of React Native

When testing changes, we run all the tests on commits that lands on `main`. For commits in PR, we try to understand which kind of changes the PR is about and we try to selectively run only the relevant tests. so, for example, if a PR only touches iOS files, we are going to run only iOS tests.

A Nighly job runs every day at around 9:00 PM, GMT. They run from `main` and they publish a version of React Native using the current state of the codebase, creating a version number that follows the format: `0.<current-version+1>.0-nightly-<YYYYMMDD>-<short-commit-hash>`.
The nightly job also publish all the monorepo packages, taking care of updating the transitive dependencies of those packages.

Stable versions are released manually by the Release Crew and they run from a stable branch. Stable branches have the shape of `0.<version>-stable`.

## How It Works?

CircleCI execution is now split in two steps:
- Setup
- Testing

The setup step takes care of analyzing the changes in the PR and of deciding which jobs needs to run.

The testing flow is a set of workflows that executes the required tests.

### Setup

The code of the setup workflow lives in the root [`config.yml`](https://github.com/facebook/react-native/blob/main/.circleci/config.yml) file.
It uses the `Continuation orb` from CircleCI to start a CI flow that depends on the changes present in the PR.

If the changes are not coming from a PR (either a simple commit or if the CI is running on main) **we always run all the tests** as a cautionary measure.

The setup job has also to expose all the pipeline parameters that we would need to pass to the actual workflow. Those parameters are **automatically forwarded** to the workflows that are started as a result of the setup.

The setup job uses a JS script to carry on its logic. The [`pipeline_selection.js`](https://github.com/facebook/react-native/blob/main/scripts/circleci/pipeline_selection.js) script can be invoked with two commands:
- `filter-jobs`
- `create-configs`

The **`filter-jobs`** command takes care of creating a JSON representation of the tests we need to run based on the changes in the PR.

The **`create-configs`** command consumes the JSON representation to create a CircleCI configuration that can then executes all the required tests.

#### Creating a Configuration

To create a configuration, the `pipeline-selection` scripts collates together various pieces of `YML` files that lives in the [`Configurations` folder](https://github.com/facebook/react-native/tree/main/.circleci/configurations).

The order in which these files are appended is **important** and it always contains the following.:

1. `top_level.yml`: this file contains some high level directives for CircleCI, like the version, the list of orbs, the cache-keys, and the pipeline parameters that can be used by the workflows.
2. `executors.yml`: this file contains the list of the executors used in our jobs and their configurations.
3. `commands.yml`: this file contains all the commands that can be used by jobs to executes. Commands are reusable functions that are shared by multiple jobs.
4. `jobs.yml`: this file contains the jobs that are used by workflows to carry on some specific tasks. They are composed of sequential commands.
5. `workflows.yml`: this file contains the shared workflows that needs to (or can) be always executed, no matter which kind of changes are pushed to CI. An example of these workflows is `analysis` (which is always executed) or `nightly` (which can be executed if a specific pipeline parameter is passed to the CI).

Then, the `pipeline_selection create-configs` attach some specific test workflows, depending on the changes that are present in the PR. These change-dependent workflows live in the [`test_workflows`](https://github.com/facebook/react-native/tree/main/.circleci/configurations/test_workflows) folder.
These workflows are:
* `testAll.yml` => runs all the possible tests. This workflow is executed on main and on PRs which change set touches both iOS and Android
* `testAndroid.yml` => runs all the build steps and Android tests. This is used on changes that happens on the Android codebase and infra (`ReactAndroid` folder)
* `testIOS.yml` => runs all the build steps and iOS tests. This is used on changes that happens on the iOS codebase and infra (`React` folder)
* `testE2E.yml` => runs the E2E tests. As of today, E2E tests can be triggered if the commit message contains the `#run-e2e-tests` tag.
* `testJS.yml` => For all the changes that do not touch native/platform code, we only run JS tests.

Notice that if there are changes on files that do not represents code (for example `.md` files like this one or the `Changelog`) we don't run any CI.

## Test workflows

The test workflows for native code are composed of 2 parts:
- building React Native
- testing

Building React Native requires us to build several parts of it:
1. We need to build the Hermes JS engine
2. We need to build Android to create prebuilds
3. We need to package everything in an npm package that will mimic a React native release
4. We need to create a local maven repository

### Building Hermes Engine

#### Android
The `build_android` workflows takes care of building the Android version of Hermes and to put it properly in a local maven repository.
See the [Build Android](#build_android) section below.

#### iOS
Hermes is a very complicated item to build for iOS.
It is composed of the Hermes compiler (HermesC) and of the actual engine.

Hermes is shipped as a universal XCFramework. This means that we need to build all the architecture slices and then put them together in the XCFramework archive.
We also need to build 2 configurations: Debug and Release.

In order to be efficient and to save costs, we parallelize the process as much as possible:

1. We prepare the environment for building Hermes.
2. We build HermesC which is required by all the slices.
3. We start 8 jobs to build all the required slices in parallel:
1. `iphone` slice, Debug mode
1. `iphonesimulator` slice, Debug mode
1. `macos` slice, Debug mode
1. `catalyst` slice, Debug mode
1. `iphone` slice, Release mode
1. `iphonesimulator` slice, Release mode
1. `macos` slice, Release mode
1. `catalyst` slice, Release mode
4. We then have 2 jobs to create the Debug and Release tarballs in parallel.
1. The Debug job receives the 4 Debug slices
1. The Release job receives the 4 Release slices

The `Debug` and `Release` tarball are then uploaded as artifacts. Notice that these we use these artifacts to **test the release** of React Native.

While building Hermes, we take also care of building the dSYMs. A dSYM (Debug Symbols) is an archive that contains the Debug Symbols that users can load to de-symbolicate the Hermes Stack traces. These symbols are published when we create a React Native release.

A lot of these build steps are automated by some shell scripts that lives in the [`react-native/packages/react-native/sdks/hermes-engine/utils` folder](https://github.com/facebook/react-native/tree/main/packages/react-native/sdks/hermes-engine/utils).

### Build Android

The android build is all managed by Gradle, so building android should be as easy as calling a [`gradle` command](https://github.com/facebook/react-native/blob/main/.circleci/configurations/jobs.yml#L268-L274).

The relevant part here is that the build android generates a `maven-local` repository that is passed to the [`build_npm_package`](https://github.com/facebook/react-native/blob/main/.circleci/configurations/jobs.yml#L1182) and that we use to test the releases.

### Build NPM package

This job is the responsible to create an NPM package that is suitable to be released or tested in CI.
If we are in a release flow (for example the Nightly workflow), it also proceed with the publication.

The job can be invoked with different parameters:
- `dry-run` => it does not publish anything, but prepare the artifacts to be used for testing
- `nightly` => it creates the artifacts and publish a nightly version of React Native.
- `release` => it creates the artifacts and publish a stable version of React Native.

The build NPM package takes all the artifacts produced in the previous steps (iOS' Hermes, iOS' Hermes dSYMs, Android's `maven-local`) and creates an npm package packing all the code.

If in a release mode, it also proceed publishing the NPM package to NPM, and the artifacts to Maven central, which we use to distribute all the artifacts.

This job also uploads the `maven-local` repository and a zipped version of the npm package to CircleCI's artifacts. We use these artifacts to **test the release** of React Native.

## Testing React Native
React Native tests runs in two different scenarios:
- RNTester
- A New App

### RNTester
RNTester is our internal testing app. It is a fully working React Native app that lives in the [`react-native/packages/rn-tester` folder](https://github.com/facebook/react-native/tree/main/packages/rn-tester) of the repository.
RNTester is an app which contains code that exercise most part of the React Native frameworks.
It also has the feature of building React Native **from source**. For that reason, it does not have to wait for the NPM package to be ready, but RNTester's tests can start as soon as the `build_android` step and the step that builds Hermes for iOS are done.

Notice the Tests on RNTester for iOS consumes the Hermes engine that is built in the previous steps.

For Android, these tests creates an APK that is uploaded as an artifact in CircleCI. We use these artifacts to **test the releases** of React Native..

### A New App
The React Native repo contains a template app in the [`react-native/packages/react-native/template` folder]() that is used to spin up a new application that is preconfigured with React Native.

We have several tests that we run starting from the template, testing various configurations:
- Debug/Release
- JSC/Hermes (two different JS engine we support)
- New/Old Architecture (two different Architectures for React Native)

We want to test all the React Native changes against the template, but we can't publish a React native version on each change that is merged. Therefore, to run tests on the template we use a NPM registry proxy called [Verdaccio](https://verdaccio.org/).

When running a Template test our CI follows roughly these steps:
1. Prepare the executor
2. Start a Verdaccio server
3. Publish on Verdaccio all the monorepo [packages](https://github.com/facebook/react-native/tree/main/packages) on which React Native depends on.
4. Publish on Verdaccio the react-native NPM package that has been created in the NPM step
5. Spin up a new React native apps from the template, downloading react-native from Verdaccio.

In this way, we are sure that we can test all the changes that happen in React Native on a new React Native app.
This directory was home to the Circle CI configuration files.
In July 2024 we moved to GitHub Actions, and week this folder for backward compatibility, as we want to keep on using Circle CI for the release of React Native <= 0.74.
115 changes: 7 additions & 108 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,114 +1,13 @@
version: 2.1

# this allows you to use CircleCI's dynamic configuration feature
setup: true

orbs:
continuation: circleci/continuation@1.0.0

parameters:
# Real pipelines parameters
run_release_workflow:
default: false
type: boolean

run_nightly_workflow:
default: false
type: boolean

release_version:
default: ""
type: string

release_monorepo_packages_version:
default: ""
type: string

release_tag:
default: ""
type: string

release_dry_run:
default: false
type: boolean
workflows:
version: 2
stub:
jobs:
- circleci-stub

jobs:
choose_ci_jobs:
circleci-stub:
docker:
- image: debian:bullseye
resource_class: small
steps:
- run:
name: Install Yarn
command: |
apt update
apt install -y wget git curl jq

apt-get update
apt-get install -y ca-certificates curl gnupg
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg

NODE_MAJOR=18
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
apt-get update

apt install -y nodejs
npm install --global yarn
- checkout
- run:
name: Yarn Install
command: yarn install
- when:
condition:
or:
- equal: [ main, << pipeline.git.branch >> ]
- matches:
pattern: /0\.[0-9]+[\.[0-9]+]?-stable/
value: << pipeline.git.branch >>
steps:
- run:
name: "[Main or Stable] Create input for config to test everything"
command: |
mkdir -p /tmp/circleci/
echo '{ "run_all": true }' > /tmp/circleci/pipeline_config.json
- when:
condition:
not:
or:
- equal: [ main, << pipeline.git.branch >> ]
- matches:
pattern: /0\.[0-9]+[\.[0-9]+]?-stable/
value: << pipeline.git.branch >>
steps:
- run:
name: "[PR Branch] Filter jobs"
command: |
if [[ -z "$CIRCLE_PULL_REQUEST" ]]; then
echo "Not in a PR. Can't filter properly outside a PR. Please open a PR so that we can run the proper CI tests."
echo "For safety, we run all the tests!"
mkdir -p /tmp/circleci/
echo '{ "run_all": true }' > /tmp/circleci/pipeline_config.json
else
PR_NUMBER="${CIRCLE_PULL_REQUEST##*/}"
node ./scripts/circleci/pipeline_selection.js filter-jobs
fi
- run:
name: Create config
description: Generates a configuration on the fly, depending on the files that have been modified
command: |
node ./scripts/circleci/pipeline_selection.js create-configs
- store_artifacts:
path: .circleci/generated_config.yml
destination: generated_config.yml
- continuation/continue:
configuration_path: .circleci/generated_config.yml

# our single workflow, that triggers the setup job defined above
workflows:
always-run:
jobs:
- choose_ci_jobs:
filters:
tags:
only: /.*/
- run: echo "There is nothing here, just an empty job. Everything has been moved to GitHub Action"
Loading
Loading