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

Merge up to January 2nd upstream #2013

Closed
wants to merge 765 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
765 commits
Select commit Hold shift + click to select a range
4f3094a
Kotlin to 1.8.22 (#41661)
cortinico Nov 28, 2023
25196ba
Fix several build warnings on RN Tester Android (#41660)
cortinico Nov 28, 2023
a8fc206
do not use ShadowNode::defaultSharedProps in UIManager::clone (#41667)
sammy-SC Nov 28, 2023
528f971
Backout - Schedule a Choreographer callback only if there is ongoing …
Nov 28, 2023
00e7035
CxxReactPackage: Use hungarian notation for hybridData (#41675)
RSNara Nov 28, 2023
4c1bdea
CxxReactPackage: Load So's during class loads (#41674)
RSNara Nov 28, 2023
129bd9d
Ensure C++ default tmmd can access the CxxReactPackage (#41673)
RSNara Nov 28, 2023
aa9e824
Move ActionSheet UI operation to main thread (#41666)
zhongwuzw Nov 28, 2023
40c7736
Fix incorrect wrapping of refs in Image component (#41679)
rubennorte Nov 29, 2023
9e4fa20
Extend default tmmdelegate to support many cxxreactpackages (#41680)
RSNara Nov 29, 2023
02b9447
Handle UTF8 in native exception message (#41575)
neildhar Nov 29, 2023
2ddd9cd
Adding getFabricUIManager() APIs to ReactContext (#41506)
arushikesarwani94 Nov 29, 2023
fa436b4
Explicitly default Fabric to `position: "static"` (#41481)
NickGerleman Nov 29, 2023
88a55ba
Change default back to `position: "relative"` (#41480)
NickGerleman Nov 29, 2023
44109dc
Fix warm start logging for ReactMarker (#41693)
Nov 29, 2023
56b57e2
Ship "disableScrollEventThrottleRequirement" (#41676)
NickGerleman Nov 29, 2023
667d85b
Refactor DefaultReactNativeHost to use the new way of Fabric initiali…
arushikesarwani94 Nov 29, 2023
4a35f25
Make sure that third party libraries include Fabric code (#41669)
cipolleschi Nov 29, 2023
dc95568
Remove duplicated jobs in CircleCI (#41698)
cipolleschi Nov 29, 2023
bb075d7
Fix android root view group removal during instance re-creation (#41678)
wschurman Nov 29, 2023
4ccd6e1
feat: allow OOT platforms to use custom resolver.resolveRequest (#41697)
okwasniewski Nov 29, 2023
3654089
(refactor): kotlinify layout property applicator test (#41649)
MCanhisares Nov 29, 2023
f1df4ce
Add CircleCI readme (#41706)
cipolleschi Nov 29, 2023
5476121
Stop logging CREATE_I18N_ASSETS_MODULE events (#41703)
motiz88 Nov 29, 2023
bae5238
Fix broken RN Tester custom ViewManager (#41708)
cortinico Nov 29, 2023
c0375b8
CxxReactPackage: Make initHybrid static (#41681)
RSNara Nov 29, 2023
10b3e0e
Converge iOS oldarch scrollEventThrottle behavior (#41695)
NickGerleman Nov 29, 2023
c120ccb
Small refactor of image attached callbacks logic (#41701)
rubennorte Nov 29, 2023
56291fa
Fix type definition of useMergeRefs (#41700)
rubennorte Nov 29, 2023
93be030
Revert D51224854: Refactor DefaultReactNativeHost to use the new way …
arushikesarwani94 Nov 29, 2023
c8db60c
Revert D50926218: Adding getFabricUIManager() APIs to ReactContext
arushikesarwani94 Nov 29, 2023
ee31ec9
Enable new lifecycle hooks by default everywhere (#41709)
RSNara Nov 30, 2023
05ed007
Set up gating for position: relative as default (#41711)
joevilches Nov 30, 2023
31d8a93
Fix Binding JNI type (#41657)
piaskowyk Nov 30, 2023
424ac63
Clarify threading of OnViewAttach mount items (#41704)
javache Nov 30, 2023
b41937e
Fix ReactInstanceManager leak (#41719)
javache Nov 30, 2023
cfe129c
Add JSI method for setting external memory size (#41436)
neildhar Nov 30, 2023
c98fa9c
Update hermes-parser and related packages in fbsource to 0.18.0 (#41689)
Nov 30, 2023
ede35df
Deploy 0.223.0 to fbsource (#41725)
pieterv Nov 30, 2023
7e5f15b
Remove unneeded const_cast (#41712)
NickGerleman Nov 30, 2023
89ec746
Change comment on Yoga measure modes in RN (#41732)
joevilches Dec 1, 2023
cd9b1d9
Replace $Call in babel-traverse libdef with conditional type (#41736)
SamChou19815 Dec 1, 2023
f941f93
Adding getFabricUIManager() APIs to ReactContext (#41728)
arushikesarwani94 Dec 1, 2023
847f5de
Fix typo in circleci config (#41727)
okwasniewski Dec 1, 2023
dbf0984
Schedule CatalystInstanceImpl destruction using new thread (#41720)
javache Dec 1, 2023
1a0e174
Add `NDEBUG` flag for Release builds for both architectures (#41715)
tjzel Dec 1, 2023
0e9c93c
Gradle to 8.5 (#41748)
cortinico Dec 1, 2023
a3f238a
AGP to 8.2.0 (#41747)
cortinico Dec 1, 2023
75019c8
Using UIManagerProvider instead of JSIModule in UIManagerHelper (#41738)
arushikesarwani94 Dec 1, 2023
84b0027
feat: improve e2e local testing script (#41751)
Titozzz Dec 1, 2023
288708f
react-native: Platformize android|ios textinput (#41600)
christophpurrer Dec 1, 2023
c30f2b6
Refactor DefaultReactNativeHost to use the new way of Fabric initiali…
arushikesarwani94 Dec 1, 2023
448e6b8
Deploy 0.223.2 to xplat
SamChou19815 Dec 1, 2023
01c627e
Change strict layout conformance to not use the new static changes (#…
joevilches Dec 1, 2023
5e406cc
Fixing Bridgeless Exception caused by the UIManager changes
arushikesarwani94 Dec 2, 2023
3854735
Fix typos in ReactCompoundViewGroup comments (#41729)
kkafar Dec 2, 2023
5754b4a
Add GraphNode example for Cxx TMs (#41766)
christophpurrer Dec 4, 2023
ead73de
Add a BinaryTreeNode example for Cxx TMs (#41767)
christophpurrer Dec 4, 2023
09b110f
fix: add verdaccio generated files to .gitignore (#41783)
okwasniewski Dec 4, 2023
749b8dd
Add logic to generate recursive TM members (#41768)
christophpurrer Dec 4, 2023
e5df45c
Stabilize View-backface-visibility-e2e.js (#41785)
GijsWeterings Dec 4, 2023
a481ae7
Remove flow exact object syntax {| brace pipe |} from TM example (#41…
christophpurrer Dec 4, 2023
e9b8097
Integrate binary-compatibility-validator into RN Android build system
mdvacca Dec 4, 2023
cd395b5
feat[ReactFabricPrivateInterface]: add getInternalInstanceHandleFromP…
hoxyq Dec 4, 2023
974e584
Update GenerateModuleH fixture (#41780)
christophpurrer Dec 4, 2023
b101dd0
Use C++17 namespace (#41771)
christophpurrer Dec 5, 2023
e48da2a
Insets no longer apply to statically positioned nodes (#41369)
joevilches Dec 5, 2023
33d6a59
Let containing blocks layout their absolute descendants, not parents …
joevilches Dec 5, 2023
43ab5fe
Allow the containing block to set trailing position of absolute desce…
joevilches Dec 5, 2023
a48e0d5
Use containing block to adjust absolute child position (#41490)
joevilches Dec 5, 2023
7459529
Introduce positionAbsoluteChild (#41491)
joevilches Dec 5, 2023
aa31c6c
Fix issue where start/end would not be respected in flex edge getters…
joevilches Dec 5, 2023
0cc09f2
New file for layout methods related to absolute children (#41794)
joevilches Dec 5, 2023
09451ae
Deploy 0.223.3 to xplat (#41797)
SamChou19815 Dec 5, 2023
be91968
Revert D51839509: Deploy 0.223.3 to xplat
Dec 5, 2023
363ee48
Remove extraneous log statment (#41799)
NickGerleman Dec 5, 2023
ee74b4c
Re-enabled disabled tests ReactPropForShadowNodeSpecTest and ReactPro…
cortinico Dec 5, 2023
19420b7
Use C++17 namespace for compoments (#41791)
christophpurrer Dec 5, 2023
bdcc9d0
Refresh the New Issue template (#41800)
cortinico Dec 5, 2023
852f2b1
refactor: convert `NetworkingModuleTest` to kotlin (#41792)
KrzysztofMoch Dec 5, 2023
ea309a7
Deploy 0.223.3 to xplat (#41809)
SamChou19815 Dec 5, 2023
ff77680
Remove dead unit tests related to text/layout property settings. (#41…
cortinico Dec 5, 2023
704f07b
Extract binaryCompatibilityValidator into gradle.properties file (#41…
mdvacca Dec 5, 2023
b2d4236
Flow: make more objects exact (#27790)
kassens Dec 5, 2023
e3d1e15
Use okhttp4 for buck-based Android unit tests (#41812)
rshest Dec 5, 2023
1c57e96
Test against XCode 14.3 and 15 (#41798)
NickGerleman Dec 5, 2023
73d0cf5
Introduce cxxreactpackage provider into default tmmdelegate (#41735)
RSNara Dec 6, 2023
616a907
fix: add isChildPublicInstance to ReactNativeTypes (#27788) (#41807)
hoxyq Dec 6, 2023
db609ff
Add function properties to C++ TM complex datatyes (#41810)
christophpurrer Dec 6, 2023
78c8681
feat: support isChildPublicInstance from renderer (#41806)
hoxyq Dec 6, 2023
89f75c5
Add changelog for 0.73.0 [skip ci] (#41741)
fortmarek Dec 6, 2023
eb661df
Move several libraries to static linking (#41815)
cortinico Dec 6, 2023
18f8a53
Fix lint warns and errors in ReactEditText (#41820)
mdvacca Dec 7, 2023
38d07eb
Adds "Needs: Author Feedback" if "Needs: Repro" is applied
cortinico Dec 7, 2023
186fc85
refactor: convert ReactPropForShadowNodeSetterTest to kotlin (#41774)
moskalakamil Dec 7, 2023
d8aa1a3
Bump Android Docker Image to v12 (#41828)
cortinico Dec 7, 2023
a8ca9b0
rntester-ios : Fix Bundle path (internal) (#41825)
christophpurrer Dec 7, 2023
8ef807b
feature(dev-middleware): add `enableNetworkInspector` experiment (#41…
byCedric Dec 7, 2023
8081265
Sync debugger-frontend (12a45e0) (#41840)
huntie Dec 7, 2023
6025d50
Make positionAbsoluteChild the sole place that matters when determini…
joevilches Dec 8, 2023
475036d
Make position static behave like position static (#41685)
joevilches Dec 8, 2023
e826d1c
Fix issue where percentages were off of the border box, not padding b…
joevilches Dec 8, 2023
ea3dd6b
Fix bug with align start not taking into account parent padding (#41687)
joevilches Dec 8, 2023
5b05c79
Fix bug where we used border box for size of containing block in a ce…
joevilches Dec 8, 2023
983e784
Fix issue where we were not centering absolute nodes correctly when j…
joevilches Dec 8, 2023
579ef2b
Fix issue where we were not applying flex end correctly when justifyi…
joevilches Dec 8, 2023
31005b7
Fix issues with aligning absolute nodes (#41692)
joevilches Dec 8, 2023
a78a8e1
Remove internal references of onCatalystInstanceDestroy() (#41835)
cortinico Dec 8, 2023
1e0fc76
fix: add build generated files to *ignore config (#41826)
okwasniewski Dec 8, 2023
99ad364
Convert the last Unit Tests to Kotlin (#41852)
cortinico Dec 8, 2023
5df1940
Update sort-imports lint rule to latest (#41841)
motiz88 Dec 8, 2023
82652f8
commit ReactAndroid.api (#41847)
mdvacca Dec 8, 2023
a9dd43c
Revert D51891716: Convert the last Unit Tests to Kotlin
billynyh Dec 8, 2023
6e88d67
Bump CLI to 13.0.0 (#41722)
thymikee Dec 11, 2023
8832dda
Removing Fabric check from UIManagerProvider (#41880)
arushikesarwani94 Dec 11, 2023
6a52025
Update docs link for metro.config.js in template (#41855)
huntie Dec 11, 2023
547643e
Fix init for out-of-tree platforms by passing name to CLI (#41723)
thymikee Dec 11, 2023
e4887a5
Fix dev menu not open
Dec 11, 2023
a0b76d9
Fix NSAppTransportSecurity being overwritten during pod install (#41875)
robertying Dec 11, 2023
4a565e7
Convert the last Unit Tests to Kotlin (#41889)
cortinico Dec 11, 2023
9f28616
Enhance IP address retrieval for iOS devices in Metro bundler setup (…
Morritz Dec 11, 2023
6b532c7
Revert D52033328: Convert the last Unit Tests to Kotlin
Dec 11, 2023
7d1a98c
Lint source files, sort imports, remove unused imports (#41829)
okwasniewski Dec 11, 2023
37c7f84
Revert D51610399: Removing Fabric check from UIManagerProvider
arushikesarwani94 Dec 11, 2023
3fb47c5
Add position type to LayoutMetrics (#41819)
joevilches Dec 11, 2023
ca9b6b5
Ignore the one-time NullPointerException and print error log
Dec 11, 2023
952b32b
Clean up eventTarget retaining logic in the pointer event processor (…
vincentriemer Dec 11, 2023
da3ba74
fix: paddingTop problem for multiline `TextInput` (#41772)
Spice-Z Dec 12, 2023
8bcaed9
Update profiler button to use "Toggle" string. (#41900)
szymonrybczak Dec 12, 2023
4187a8c
Throw parser error in case direct recursive types are not nullable (#…
christophpurrer Dec 12, 2023
44d6e43
Network invalidate handlers to cleanup in turbo module mode (#41775)
zhongwuzw Dec 12, 2023
cdef53d
Fabric: Fixes image blob url not work (#41881)
zhongwuzw Dec 12, 2023
86df742
Fixes ScrollView contentInsetAdjustmentBehavior assignment (#41879)
zhongwuzw Dec 12, 2023
1727ffa
<bit> and <concepts>
NickGerleman Dec 12, 2023
b6adbf7
Add InspectorFlags, conditionally disable Hermes CDP registration (#4…
huntie Dec 12, 2023
3ed4bf9
Fix last spacer constrain logic in VirtualizedList (#41846)
janicduplessis Dec 12, 2023
a115f97
Convert ReactAndroid and RN-Tester to Kotlin DSL (#41834)
cortinico Dec 12, 2023
646ff6e
Remove REACT_NATIVE_SKIP_PREFAB as unused (#41833)
cortinico Dec 12, 2023
f11608d
Remove the installArchives task (#41832)
cortinico Dec 12, 2023
2bf29a3
Resolve several Gradle build warning (#41831)
cortinico Dec 12, 2023
1c77919
Convert ReactAndroid/hermes-engine/build.gradle to Kotlin DSL (#41830)
cortinico Dec 12, 2023
d5114a4
Fix cleanAssetCatalog error (#41865)
janicduplessis Dec 12, 2023
c848bf9
support Array param for native component command in codegen (#41894)
zeyap Dec 13, 2023
f676f42
translation auto-update for i18n/fb4a.config.json on master
Dec 13, 2023
7bdba28
Add fbjni wrapper for InspectorFlags (#41913)
huntie Dec 13, 2023
4fcfde1
Omit synthetic Debugger.disable message in modern CDP backend (#41912)
huntie Dec 13, 2023
957a197
Drop WITH_INSPECTOR build flag (#41911)
huntie Dec 13, 2023
46d304a
Add 127.0.0.1 to allowlist for source map fetch
Dec 13, 2023
70a757f
Update getDefaultJSExecutorFactory to load Hermes first and fallback …
cortinico Dec 13, 2023
5217cc9
Fixed the height result of onContentSizeChange callback on iOS (#41803)
zyestin Dec 13, 2023
6f11511
Fix "Show Perf Monitor" crash in Catalyst (#41926)
Dec 13, 2023
5a600e6
Ignore RCTThirdPartyFabricComponentsProvider for npm publish (#41868)
janicduplessis Dec 13, 2023
d5b1c71
fix: reformat RCTLegacyInteropComponents (#41908)
okwasniewski Dec 13, 2023
3c4517f
Add safe guard when receive network response data too long (#41717)
zhongwuzw Dec 13, 2023
746ad37
(iOS) Fix strict prototype warning (#41805)
dehlen Dec 13, 2023
9dbecc5
remove unused methods from RCTAppearance (#41920)
philIip Dec 13, 2023
1e22fa3
Change offsetParent, offsetTop and offsetLeft to respect positioned a…
joevilches Dec 13, 2023
8183afe
Use enum classes in C++ Turbo Modules (#41923)
christophpurrer Dec 14, 2023
201d2d1
Unify SetProps for View and ShadowView in the InteropLayer (#41941)
cipolleschi Dec 14, 2023
b098297
Improve setting props of the Interop Layer (#41942)
cipolleschi Dec 14, 2023
a0efa26
deprecate @property methodQueue (#41944)
philIip Dec 14, 2023
c52af32
support Array param for native component command (#41899)
zeyap Dec 14, 2023
1fed7ab
Deploy 0.224.0 to xplat (#41949)
Dec 14, 2023
8e1c45a
Update ReactAndroid.api (#41951)
mdvacca Dec 15, 2023
5d1eac0
add RNTester example for native command Array param (#41897)
zeyap Dec 15, 2023
d45a01d
Introduce "outputDir" property of "codegenConfig" (#41782)
dmytrorykun Dec 15, 2023
ce69213
Use conditional type to flattern RN styles (#41931)
SamChou19815 Dec 15, 2023
b221265
Fix sizing and alignment issues with multi-line containers (#41916)
NickGerleman Dec 16, 2023
479b4bb
Install bundler versions depending on Ruby version (#41962)
cipolleschi Dec 16, 2023
17d2c8a
Ensure Bridge and Bridgeless register native modules using the same o…
mdvacca Dec 16, 2023
b3ba340
std::terminate belongs to <exception> header (#41917)
zcbenz Dec 17, 2023
b7eb0c8
Fix align-content of cross-stretched container (#41964)
NickGerleman Dec 17, 2023
2441fa2
Change Style::resolveColumnGap() return from Length to Style::Length
NickGerleman Dec 17, 2023
289e783
Use $REACT_NATIVE_PATH instead of relative path (#41968)
kraenhansen Dec 18, 2023
13c5cef
chore: changelog for 0.73.1 (#41970)
Titozzz Dec 18, 2023
a5ee029
Remove last useges of configFileDir CLI argument (#41936)
dmytrorykun Dec 18, 2023
32dab7a
Add the DoubleConversion dependency to third-party libraries (#41972)
dmytrorykun Dec 18, 2023
27f38f6
Make the Fabric Interop Layer automatic (#41656)
cipolleschi Dec 18, 2023
43826fa
fix(rn-tester): add missing params when running Android app from watc…
szymonrybczak Dec 18, 2023
1045b22
Removing Fabric check from UIManagerProvider (#41982)
arushikesarwani94 Dec 19, 2023
c45c13f
Replace utils.parseArgs with yargs (#41924)
dmytrorykun Dec 19, 2023
21784e2
Introduce "codegenConfig.includesGeneratedCode" property (#41655)
dmytrorykun Dec 19, 2023
90fb73e
feat: Optimise RCTKeyWindow() calls in RCTForceTouchAvailable method …
okwasniewski Dec 19, 2023
6e71851
Make CompactValue internal detail of `yoga::Style` (#41776)
NickGerleman Dec 19, 2023
87a636a
yoga::resolveValue -> Length::resolve (#41939)
NickGerleman Dec 19, 2023
52af3e4
Node::styleDefinesDimension() -> Node::hasDefiniteLength() (#41995)
NickGerleman Dec 19, 2023
9436d2d
Reorder members in `Node.h` (#41994)
NickGerleman Dec 19, 2023
bd4ddbe
Deploy 0.225.0 to xplat (#42004)
pieterv Dec 19, 2023
11d3e11
Add E2E Test for experimental_layoutConformance (#42002)
NickGerleman Dec 19, 2023
7a4950b
Set InspectorFlags in RCTAppDelegate (#41976)
huntie Dec 19, 2023
0373329
Delete unused methods in JSCHeapCapture (#41973)
mdvacca Dec 19, 2023
60b1182
clean up unused methods from NativeBugReporting (#41984)
philIip Dec 20, 2023
e730fdf
Update hermes-parser and related packages in fbsource to 0.18.2 (#42003)
Dec 20, 2023
82bc2d7
Back out "Add log message if App moves to background" (#41971)
motiz88 Dec 20, 2023
9842994
Use didReceiveMessageWithString in RCTInspectorPackagerConnection (#4…
motiz88 Dec 20, 2023
b00569c
Update CHANGELOG.md (#42011)
fortmarek Dec 20, 2023
dae4a11
Introduce "headerPrefix" codegen option (#41956)
dmytrorykun Dec 20, 2023
cfa02ee
Remove unused bundle status reporting from inspector infra (#41975)
motiz88 Dec 20, 2023
db0d178
C++ InspectorPackagerConnection (#41977)
motiz88 Dec 20, 2023
2b63b9b
C++ InspectorPackagerConnection tests (#42017)
motiz88 Dec 20, 2023
228cb80
RN: Remove Deprecated Prop Types (#42019)
yungsters Dec 21, 2023
a47d7c5
Improved RNTester deeplink support to go straight to a specific examp…
fkgozali Dec 21, 2023
f7e99e6
RNTester: inline BorderExample testIDs for simpler maintenance (#41987)
fkgozali Dec 21, 2023
08c916d
ReactNativeCoreE2E: hardcode testIDs for View tests (#42026)
fkgozali Dec 21, 2023
1f89a1c
Deploy 0.225.1 to xplat (#42027)
panagosg7 Dec 21, 2023
210a7c2
Create new inspector flag for enabling the C++ packager connection im…
motiz88 Dec 21, 2023
7eed881
Remove exclude for normalize-colors in template test setup (#42033)
huntie Dec 21, 2023
4885743
use Pressable over TouchableWithoutFeedback (#42016)
sammy-SC Dec 21, 2023
7b10609
Introduce the "platform" option to generate-codegen-artifacts.js (#42…
dmytrorykun Dec 21, 2023
07a159f
Bump minimum version of activesupport for CVE-2023-38037 (#42023)
lunaleaps Dec 21, 2023
a612053
Introduce "npx react-native codegen" command (#41925)
dmytrorykun Dec 21, 2023
06a053f
Improve codegen logging formatting (#42013)
dmytrorykun Dec 21, 2023
3b80531
Move prop diffing for Interop Layer to Adapter
cipolleschi Dec 21, 2023
72b876a
Refactor hover tracking logic to the shared C++ renderer (#41519)
vincentriemer Dec 21, 2023
ff8938c
Remove duplicate declaration of calculateLayoutInternal (#42030)
NickGerleman Dec 21, 2023
9271957
Move trailing position functions (#42031)
NickGerleman Dec 21, 2023
fa470ef
Rename prefix of binaryCompatibilityValidator properties (#42041)
mdvacca Dec 21, 2023
0be527b
Clean up stale mobileconfig reading for pointer events (#41946)
vincentriemer Dec 22, 2023
d5797ae
RNTester: fixed up ScrollViewExample test name (#42043)
fkgozali Dec 22, 2023
c54bfe4
Re-sync with internal repository (#42046)
facebook-github-bot Dec 22, 2023
192a88d
docs: bump minSdk to 23 (#42034)
dcangulo Dec 22, 2023
09ab59a
BridgelessUIManager: Make error reporting more readable (#42001)
RSNara Dec 26, 2023
55e4543
BridgelessUIManager: Refactor how constants are retrieved and cached …
RSNara Dec 26, 2023
5d520ab
RNTester iOS: internal profiling test setup (#42071)
fkgozali Dec 26, 2023
963ce9b
BridgelessUIManager: Use blocks for all functions (#41999)
RSNara Dec 27, 2023
e75f050
BridgelessUIManager: Pull already implemented methods out (#42068)
RSNara Dec 27, 2023
6555205
Refactor React to get rid of JSIModule (#42069)
arushikesarwani94 Dec 27, 2023
cd5f6aa
Tests to get rid of JSI module (#42058)
arushikesarwani94 Dec 27, 2023
c2c346c
Get rid of old APIs in FabricUIManagerProvider (#42059)
arushikesarwani94 Dec 27, 2023
ffe219c
Avoid using std::views::filter to fix issues with macosx-x86_64 toolc…
rshest Dec 27, 2023
ac9b87c
Fix comment about adding packages in android template (#41856)
janicduplessis Dec 27, 2023
c75abef
Convert the last Unit Tests to Kotlin (#42078)
cortinico Dec 27, 2023
d992abc
Move legacy tests from OSS to fbandroid/java/com/facebook/fbreact (#4…
cortinico Dec 28, 2023
b507e11
Make TurboModuleManager not implement JSIModule (#42060)
arushikesarwani94 Dec 28, 2023
e25a9b4
Fix support for --sourcemap-output path containing spaces in Xcode pr…
JorenVos Dec 28, 2023
e85d51c
Detect `ccache` and provide a default configuration (#42051)
kraenhansen Dec 28, 2023
655b12d
Unhandled promise rejection - attach non-standard Error object stack …
ospfranco Dec 28, 2023
e2fb88e
Deprecate old JSI module APIs (#42085)
arushikesarwani94 Dec 28, 2023
b5e08e8
Remove * dependencies on @react-native (#42081)
lunaleaps Dec 28, 2023
95bed60
iOS: renamed experimental new-arch-only flag to clarify its intent (#…
fkgozali Dec 29, 2023
157cb0e
Deprecate `[RCTConvert UIBarStyle:]` (#42100)
Saadnajmi Dec 31, 2023
ce54772
Delete getJSIModule() from context (#42097)
arushikesarwani94 Jan 2, 2024
af8c56a
Making UIManager not implement JSIModule (#42061)
arushikesarwani94 Jan 2, 2024
db9c9ea
Add function to customise RootView in Bridgeless (#42088)
cipolleschi Jan 2, 2024
f1a7f08
Add functions to check whether the New Arch is enabled at runtime (#4…
cipolleschi Jan 2, 2024
40233fc
Merge branch 'main' of github.com:facebook/react-native into merge-jan-2
Saadnajmi Jan 3, 2024
a20aa46
Use new notification name in RCTRootContentView
Saadnajmi Jan 5, 2024
f738dc8
Add macOS ifdefs to RNTMyNativeViewCommon
Saadnajmi Jan 5, 2024
1d1025b
Implement `getHardwareUUID` for macOS
Saadnajmi Jan 5, 2024
34f7044
Merge branch 'main' into merge-jan-2
Saadnajmi Jan 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 0 additions & 3 deletions .buckconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,3 @@

[alias]
rntester = //packages/rn-tester/android/app:app

[buildfile]
includes = //tools/build_defs/oss/preload.bzl
169 changes: 168 additions & 1 deletion .circleci/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,172 @@
# Circle CI

This directory is home to the Circle CI configuration file. 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
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.
17 changes: 13 additions & 4 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,16 @@ jobs:
command: |
apt update
apt install -y wget git curl jq
curl -sL https://deb.nodesource.com/setup_18.x | bash -
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
Expand All @@ -51,7 +60,7 @@ jobs:
value: << pipeline.git.branch >>
steps:
- run:
name: "[Main or Stable] Create input fo config to test everything"
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
Expand All @@ -69,9 +78,9 @@ 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 "Skipping!"
echo "For safety, we run all the tests!"
mkdir -p /tmp/circleci/
echo '{}' > /tmp/circleci/pipeline_config.json
echo '{ "run_all": true }' > /tmp/circleci/pipeline_config.json
else
PR_NUMBER="${CIRCLE_PULL_REQUEST##*/}"
node ./scripts/circleci/pipeline_selection.js filter-jobs
Expand Down
10 changes: 5 additions & 5 deletions .circleci/configurations/commands.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,6 @@ commands:
echo "rbenv found; Skipping installation"
fi
brew reinstall libyaml
gem install psych -- --with-libyaml-dir=$(brew --prefix libyaml)
export RUBY_CONFIGURE_OPTS=--with-libyaml-dir=$(brew --prefix libyaml)
# Install the right version of ruby
if [[ -z "$(rbenv versions | grep << parameters.ruby_version >>)" ]]; then
# ensure that `ruby-build` can see all the available versions of Ruby
Expand All @@ -61,7 +57,11 @@ commands:
# Set ruby dependencies
rbenv global << parameters.ruby_version >>
gem install bundler
if [[ << parameters.ruby_version >> == "2.6.10" ]]; then
gem install bundler -v 2.4.22
else
gem install bundler
fi
bundle check || bundle install --path vendor/bundle --clean
- save_cache:
key: *rbenv_cache_key
Expand Down
7 changes: 7 additions & 0 deletions .circleci/configurations/executors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,10 @@ executors:
resource_class: macos.x86.medium.gen2
environment:
- BUILD_FROM_SOURCE: true
reactnativeios-lts:
<<: *defaults
macos:
xcode: '14.3.1'
resource_class: macos.x86.medium.gen2
environment:
- BUILD_FROM_SOURCE: true