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

Coauthor #2154

Closed
wants to merge 1,316 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1316 commits
Select commit Hold shift + click to select a range
7ea7904
Daily `arc lint --take KTFMT` (#42772)
Jan 31, 2024
82e9a5e
Add Github Action to mirror partner's nightly CI results (#42744)
blakef Jan 31, 2024
9c0fe73
constrain on github.actor
blakef Jan 31, 2024
6a8a28b
`CustomStyleSpan`: Move the class comment (#42700)
cubuspl42 Jan 31, 2024
ebc2831
set unified version (#42776)
lunaleaps Feb 1, 2024
044b50b
Re-enable CustomDrawOrder in RN Android (#42719)
mdvacca Feb 1, 2024
810c205
Fix "swapLeftAndRight" unsafe static_cast (#42721)
NickGerleman Feb 1, 2024
1170a68
Delete traitCast and identifier traits (#42748)
NickGerleman Feb 1, 2024
7b36233
Fix event emits during initial rendering in Fabric (#42777)
mdvacca Feb 1, 2024
c6c2304
iOS Codegen: bring back support for defining external libraries in re…
dmytrorykun Feb 1, 2024
ebb55a7
Fix Template for Bridgeless mode (#42781)
cipolleschi Feb 1, 2024
76598de
Reorganise and document release script entry points (#42774)
huntie Feb 1, 2024
02fe2f0
Fix featureflags c++ library loading on Android (#42770)
Almouro Feb 1, 2024
7c5e426
Fix publishing of React Native with the right version (#42783)
cipolleschi Feb 1, 2024
aefca27
Fixes Android compile failed. (#42787)
zhongwuzw Feb 1, 2024
3b6c522
Add `onUserLeaveHint` support to ReactActivityDelegate (#42741)
behenate Feb 1, 2024
adec8d3
Create RuntimeAgent interface to handle messages for VM (#42635)
motiz88 Feb 1, 2024
97723ef
Track domain enable/disable bit in shared state across Agents (#42746)
motiz88 Feb 1, 2024
a0b1073
Log warning when debugging an unsupported engine (#42745)
motiz88 Feb 1, 2024
107f2f9
Align ActivityIndicator JSDoc to website doc (#42789)
fabriziocucci Feb 1, 2024
78f5002
Back out "Add `onUserLeaveHint` support to ReactActivityDelegate" (#4…
cortinico Feb 1, 2024
ad52791
Drop `@generate-docs` from all components (#42794)
fabriziocucci Feb 1, 2024
07e8ae4
Convert `Button` to function component (#42795)
fabriziocucci Feb 1, 2024
35f5c3a
VirtualizedList/FlatList: Stricter typing for onViewableItemsChanged …
miallo Feb 1, 2024
12155c4
Update hermes-parser and related packages in fbsource to 0.19.0 (#42798)
Feb 2, 2024
184b295
Remove takeSnapshot from UIManager TypeScript types (#42779)
maxphillipsdev Feb 2, 2024
069c244
Revert D53330004: Update hermes-parser and related packages in fbsour…
javache Feb 2, 2024
ac43ee1
Convert `Button` to ESM (#42796)
fabriziocucci Feb 2, 2024
349d550
Fix TextInput vertical alignment issue when using lineHeight prop on …
fabOnReact Feb 2, 2024
4c6c57d
Mark classes of packages command and condif as @Nullsafe (#42724)
mdvacca Feb 2, 2024
239f9bf
Mark classes of package devSupport as @Nullsafe (#42723)
mdvacca Feb 2, 2024
4e6eba7
Mark classes of package fabric as @Nullsafe (#42725)
mdvacca Feb 2, 2024
cc34ace
Create HermesRuntimeAgent (#42747)
motiz88 Feb 2, 2024
db46288
Bridgeless: Unify legacyModuleProvider setup (#42790)
christophpurrer Feb 2, 2024
af8c82d
Fix ReactCommon.podspec import for React-logger (#42800)
christophpurrer Feb 2, 2024
bdc88c3
Allow package to be imported by tests in xplat (#42826)
Feb 2, 2024
48ec680
Run RNTR against simple product test (#42827)
Feb 2, 2024
41045a1
Refactor toJSON (#42828)
Feb 2, 2024
64debd9
Update hermes-parser and related packages in xplat to 0.19.0 (#42824)
Feb 2, 2024
7b26848
Remove public APIs for YGNodePrint and YGConfigSetPrintTreeFlag (#42688)
joevilches Feb 2, 2024
a24a93e
Move NodeToString.cpp to benchmark and remove interal usages (#42710)
joevilches Feb 2, 2024
4cd7523
delete misleading comment (#42810)
sammy-SC Feb 3, 2024
4473fe8
fix crash in ReactGroupView when subview clipping is enabled (#42811)
sammy-SC Feb 3, 2024
fafd00a
UIManagerJSInterface: Make reactTags non-nullable (#42208)
RSNara Feb 3, 2024
fbc090d
unify removeClippedSubviews prop in FlatList (#42836)
sammy-SC Feb 4, 2024
d66d651
RNTester - Legacy component example: do not convert commands to strin…
dmytrorykun Feb 5, 2024
1ce7bfd
fix(Codegen): case where no `platform` or `deployment_target` is spec…
okwasniewski Feb 5, 2024
f3977af
Do not eagerly allocate all view managers in DefaultReactNativeHost (…
javache Feb 5, 2024
fe69f71
Improve thread safety of ReactNativeFeatureFlags (#42870)
rubennorte Feb 5, 2024
57e49b5
remove gating around improved onLayout batching (#42631)
sammy-SC Feb 5, 2024
8456cca
Standalone Gradle plugin: Node.js package resolver (#42823)
robhogan Feb 5, 2024
48a19d7
Back out "Standalone Gradle plugin: Node.js package resolver"
robhogan Feb 5, 2024
e350859
fix: cannot find module `react-native-*/Libraries/Core/InitializeCore…
tido64 Feb 5, 2024
be61dcd
Minor improvements in ReactNativeFeatureFlagsAccessor (#42871)
rubennorte Feb 5, 2024
dbbec34
Use Flow in feature flags scripts (#42814)
rubennorte Feb 5, 2024
5030f4e
Move feature flag definitions to JS file instead of JSON (#42815)
rubennorte Feb 5, 2024
e035005
Reduce number of generated files for the feature flags system (#42820)
rubennorte Feb 5, 2024
fd6a6fe
Add runtime check to ensure feature flags are only overridden once (#…
rubennorte Feb 5, 2024
e4342f5
Undo @Nullsafe on ReactBuildConfig
mdvacca Feb 5, 2024
3d1eb7e
Fix nullability in DefaultTurboModuleManagerDelegate (#42850)
mdvacca Feb 6, 2024
645a69a
Mark classes of package internal as @Nullsafe (#42848)
mdvacca Feb 6, 2024
1d3da0a
Mark classes of package jstasks as @Nullsafe (#42852)
mdvacca Feb 6, 2024
a1b9ca3
Mark classes of packages packagerconnection as @Nullsafe (#42854)
mdvacca Feb 6, 2024
9911dec
Mark classes of packages reactperflogger as @Nullsafe (#42855)
mdvacca Feb 6, 2024
d0d9713
Mark classes of packages turbmodules as @Nullsafe (#42853)
mdvacca Feb 6, 2024
f4cd613
Mark classes of package uimanager/common as @Nullsafe (#42856)
mdvacca Feb 6, 2024
7c12e4f
Mark classes of package uimanager/util as @Nullsafe (#42861)
mdvacca Feb 6, 2024
942013d
Mark classes of package uimanager/layoutanimation as @Nullsafe (#42857)
mdvacca Feb 6, 2024
cb816c1
Fix lint warn (#42866)
mdvacca Feb 6, 2024
14de9aa
Mark classes of package uimanager as @Nullsafe (#42860)
mdvacca Feb 6, 2024
1ad3bbc
Deploy 0.228.0 to xplat (#42802)
Feb 6, 2024
608029a
Convert unannotated variable declaration with cast init to annotated …
gkz Feb 6, 2024
db066ac
Convert InputAccessoryView to function component (#42883)
fabriziocucci Feb 6, 2024
343a0d3
introduce native api to access RuntimeExecutor (#42758)
philIip Feb 6, 2024
1429378
Improve CDP Flow types (#42816)
huntie Feb 6, 2024
96db0fd
Add support for target capability flags (#42817)
huntie Feb 6, 2024
74ea826
Add nativeSourceCodeFetching capability flag (#42818)
huntie Feb 6, 2024
d75fc99
Replace "type" with "capabilities" in /json response (#42884)
huntie Feb 6, 2024
9ba56f6
Remove matching of Modern/Legacy page types (#42885)
huntie Feb 6, 2024
bc3fe0d
disable "Open Debugger" item when packager is disconnected (#42873)
EdmondChuiHW Feb 6, 2024
8da1da2
Add findAll base query method (#42829)
Feb 6, 2024
665c400
Allow to chain custom transformers when resolving asset sources (#42892)
rshest Feb 7, 2024
30d186c
Set concurrentRoot to true whenever Fabric is used in renderApplicati…
cortinico Feb 7, 2024
009542f
Move release testing scripts into subdirectory (#42900)
huntie Feb 7, 2024
bd6a199
Convert InputAccessoryView to ESM (#42887)
fabriziocucci Feb 7, 2024
8f4f09b
fix(dev-middleware): fix `react-native config` failing in pnpm setups…
tido64 Feb 7, 2024
6177408
Make font styling work when using specific font name on the new archi…
j-piasecki Feb 7, 2024
c1b8f37
fix: UpdatePropertiesExampleView mutate existing appProperties instea…
okwasniewski Feb 7, 2024
635732a
Fix order of Metro hotkey console messages (#42896)
EdmondChuiHW Feb 7, 2024
dc38988
Fix warning when loading RCTUIManager and A11yManager (#42733)
cipolleschi Feb 7, 2024
f0d1d92
Relocate RNTester E2E wrapper script under package (#42906)
huntie Feb 7, 2024
85257a9
Fix Reload behavior being different on Bridgeless (#42917)
cortinico Feb 7, 2024
d1e7caa
Mark override and dangerouslyReset in ReactNativeFeatureFlags as JVM …
rubennorte Feb 7, 2024
5e03813
Migrate enableBackgroundExecutor feature flag to new system (#42910)
rubennorte Feb 7, 2024
e37da1e
Update hermes-parser and related packages in fbsource to 0.19.1 (#42901)
Feb 7, 2024
4dcc1d3
Fix onStartReached not called when list content is small (#42902)
janicduplessis Feb 8, 2024
e2fa62d
Mark nullability of RNLog class (#42865)
mdvacca Feb 8, 2024
fe7b9e5
Mark classes of package utils as @Nullsafe (#42859)
mdvacca Feb 8, 2024
c7a0dff
Make Modal's `onDismiss` work on Fabric. (#42601)
cipolleschi Feb 8, 2024
3dfedbc
(iOS) Add `RCTUIStatusBarManager` and properly retrieve StatusBar sty…
okwasniewski Feb 8, 2024
f6b984d
Back out "Make font styling work when using specific font name on the…
sammy-SC Feb 8, 2024
50bd9e3
Bump Gradle to 8.6
cortinico Feb 8, 2024
12e4a57
feat: add nullable annotations to RCTBundleURLProvider (#42293)
okwasniewski Feb 8, 2024
eb61946
Fix linking of local app modules turbomodules (#42921)
cortinico Feb 8, 2024
527d193
Install CMake on Windows replying yes to the prompt (#42926)
cipolleschi Feb 8, 2024
2ca7bec
fix: [Codegen] log supported apple platforms if there are any (#42819)
okwasniewski Feb 8, 2024
b796cda
fix crash
philIip Feb 8, 2024
40bb425
Update tsconfig to not run on files inside Pods (#42909)
bartlomein Feb 9, 2024
d7dce97
introduce native api to access RuntimeExecutor (#42882)
philIip Feb 9, 2024
7afc8b8
disable "Open Debugger" menu item if the bundler is disconnected (#42…
EdmondChuiHW Feb 9, 2024
5fbdc99
remove animation from borderLayer to stop unwanted animations (#42922)
sammy-SC Feb 9, 2024
f6f4615
Make [RCTBridge currentBridge] work also inBridgeless for backward co…
cipolleschi Feb 9, 2024
cadaf26
Fix clang warning for -Winconsistent-missing-destructor-override (#42…
rozele Feb 9, 2024
3c2b2b1
Kotlin to 1.9.22 (#42927)
cortinico Feb 9, 2024
e1afa02
Support for (de)serializing config values (#42750)
joevilches Feb 10, 2024
ee21b85
Support for (de)serializing node state (#42751)
joevilches Feb 10, 2024
91fe3b4
Fully rollout FabricSharedEventPipeline (#42949)
mdvacca Feb 10, 2024
68e6a94
Fix`set-version` to also update `packages/react-native` source (#42897)
lunaleaps Feb 10, 2024
d0dd0e2
Cleanup ReactScrollView
mdvacca Feb 10, 2024
3582f43
Fix relative includes in component codegen (#42956)
RSNara Feb 10, 2024
62c15ba
fix(virtualized-lists): declare missing `react` peer dependency (#42947)
jbroma Feb 11, 2024
b5d9974
Fix Differentiator comment format (#42929)
mdvacca Feb 12, 2024
710ff5f
Rename sliceChildShadowNodeViewPairsLegacy -> sliceChildShadowNodeVie…
mdvacca Feb 12, 2024
7098d34
Mark classes of package views as @Nullsafe (#42858)
mdvacca Feb 12, 2024
dd4f15b
chore: Bump actions/checkout (#42952)
m-nakamura145 Feb 12, 2024
64bb50a
Add missing @Override annotations in FabricUIManager (#42950)
mdvacca Feb 12, 2024
54ad5b9
Fix broken build_android due to Kotlin Explicit API mode (#42960)
cortinico Feb 12, 2024
7e3e768
refactor URL construction (#42948)
EdmondChuiHW Feb 12, 2024
b25be66
Add Flow, add positive test case for monorepo publish step (#42936)
huntie Feb 12, 2024
56f483c
Update exit cases for monorepo publish script (#42937)
huntie Feb 12, 2024
49c3c34
Refactor package discovery in publish script (#42938)
huntie Feb 12, 2024
b41a33e
Move metro-config package into monorepo build, enable TS generation (…
huntie Feb 12, 2024
273a517
Use npm as source of truth for updated packages (make publish script …
huntie Feb 12, 2024
d190cca
Add retry to monorepo publish script (#42964)
huntie Feb 12, 2024
34abd79
Use set-version for nightly publishes (#42903)
lunaleaps Feb 12, 2024
2090fe5
Add support for bumping packages on main after release cut (#42958)
lunaleaps Feb 12, 2024
8cd6f39
Migrate UIManagerListener to kotlin
mdvacca Feb 12, 2024
282127d
Fix lints in FabricUIManager (#42970)
mdvacca Feb 12, 2024
8a94bf0
Fix CircleCI template tests by excluding dry-run build types
lunaleaps Feb 13, 2024
f32950a
Update nullability for usages of handleTouchEvent (#42961)
mdvacca Feb 13, 2024
0575033
Do not invoke envinfo on windows
cortinico Feb 13, 2024
ce3ce11
Remove RCTAppSetupPrepareApp overload and InspectorFlags call (#42642)
huntie Feb 13, 2024
280f373
Update InspectorFlags to source from ReactNativeFeatureFlags (#42665)
huntie Feb 13, 2024
d243cd9
Add Flow and document template init script, simplify args (#42898)
huntie Feb 13, 2024
4d07aae
RNTester: add legacy style event to MyNativeViewNativeComponent (#42809)
dmytrorykun Feb 13, 2024
6974697
Use paperTopLevelNameDeprecated in generated EventEmitters if defined…
dmytrorykun Feb 13, 2024
922fe91
Cleanup BUCK artifacts (#42990)
cortinico Feb 13, 2024
f9a5b30
Fix autolinking for local app Fabric components (#42962)
cortinico Feb 13, 2024
46d7f8a
Generate code to allow for linking custom Module that conforms to som…
cipolleschi Feb 13, 2024
8a12cfd
Fix UB in SessionState init
motiz88 Feb 13, 2024
b366b4b
Back out "Fix autolinking for local app Fabric components"
cortinico Feb 13, 2024
415bb71
RuntimeTarget refactor - Create RuntimeTarget, RuntimeTargetDelegate
motiz88 Feb 13, 2024
19012ca
RuntimeTarget refactor - ensure safe destruction of Instance Agents a…
motiz88 Feb 13, 2024
59c5edf
resolve getInitialNotification with userInfo dict instead of whole no…
philIip Feb 13, 2024
2e3508d
Add cxxModule to RN-Tester's codegenConfig
cortinico Feb 13, 2024
94bfde4
Update RNGP to handle cxxModule in codegenConfig
cortinico Feb 13, 2024
4236538
Fix dismissal on the Old Architecture
cipolleschi Feb 13, 2024
1e49f93
Fix autolinking for local app Fabric components
cortinico Feb 13, 2024
23a6644
Fix nightly publish
lunaleaps Feb 13, 2024
ced4994
Migrate flag enablePropIteratorSetter to new system (#42432)
rubennorte Feb 13, 2024
0378941
RuntimeTarget refactor - RuntimeAgent --> RuntimeAgentDelegate
motiz88 Feb 13, 2024
6c2f088
Back out "Migrate flag enablePropIteratorSetter to new system"
NickGerleman Feb 14, 2024
f63efaf
Move CSSTokenizer to "react/renderer/css" (#42832)
NickGerleman Feb 14, 2024
7e47df0
Add CSSValueVariant and parseCSSValue()
NickGerleman Feb 14, 2024
a8f239d
Add <ratio> support to CSSValueVariant and parseCSSValue() (#42879)
NickGerleman Feb 14, 2024
c37fc74
Add CSSProp and CSSPropDefinition (#42913)
NickGerleman Feb 14, 2024
2cc0d03
Flesh out CSSPropDefinition
NickGerleman Feb 14, 2024
383b907
Add test for `parseCSSProp` for prop without keyword specialization
NickGerleman Feb 14, 2024
516c4cc
Fix CSSParser constexpr-iness
NickGerleman Feb 14, 2024
f2d0965
CSSDeclaredStyle
NickGerleman Feb 14, 2024
c9a9e5d
Back out "RuntimeTarget refactor - RuntimeAgent --> RuntimeAgentDeleg…
NickGerleman Feb 14, 2024
3b2c4a1
Partial Back out "[react-native] Move CSSTokenizer to "react/renderer…
NickGerleman Feb 14, 2024
cc2a73a
Revert initialization of event emits during initial rendering in Fabric
mdvacca Feb 14, 2024
6a4d011
Backport addUIBlock and prependUIBlock to Fabric for Android
cortinico Feb 14, 2024
a68ae2e
Rename and document monorepo publish script (#42989)
huntie Feb 14, 2024
b97f3e7
Move Web performance APIs to private directory (#42769)
rubennorte Feb 14, 2024
04eadf6
RELAND [RN][CDP] [3/n] RuntimeTarget refactor - RuntimeAgent --> Runt…
motiz88 Feb 14, 2024
48f1f2d
RuntimeTarget refactor - Store weak refs to agents in RuntimeTarget
motiz88 Feb 14, 2024
3272b05
update react renderers with unified feature flags
sammy-SC Feb 14, 2024
496724f
Remove URI encoding
EdmondChuiHW Feb 14, 2024
b3a7a13
RuntimeTarget refactor - Add RuntimeExecutor to RuntimeTarget
motiz88 Feb 14, 2024
d4468fb
RuntimeTarget refactor - Add `this`-scoped async executors to all Tar…
motiz88 Feb 14, 2024
2661222
RuntimeTarget refactor - introduce WeakList for Target→Agent refs
motiz88 Feb 14, 2024
ca141d9
refactor: remove source usages from getInspectorData
hoxyq Feb 14, 2024
3020747
Add missing react_render_core -> runtimeexecutor CMake dep (#43028)
motiz88 Feb 14, 2024
2740491
resolve getInitialNotification for local notifications with notificat…
philIip Feb 14, 2024
75e6137
store initial notification in static instead of property
philIip Feb 14, 2024
cc147ce
add example for capturing initial notification in push notification m…
philIip Feb 14, 2024
032208d
Update tests for URL assertions
EdmondChuiHW Feb 14, 2024
7b00a92
Add CDP-JSI integration tests (#43027)
motiz88 Feb 14, 2024
b8ad917
fix nightlies dont exit early (#43035)
lunaleaps Feb 14, 2024
1c4ed12
Fix Win build (#43025)
Feb 14, 2024
1bdbd9b
Add 0.73.4 changelog
lunaleaps Feb 15, 2024
45b1aef
introduce experimental props endDraggingSensitivityMultiplier and end…
Feb 15, 2024
315be82
build backwards compat API for runtime pointer (#43013)
philIip Feb 15, 2024
16276ce
build backwards compat API for runtime pointer (#43012)
philIip Feb 15, 2024
0f134fd
Remove __self and __source location from elements (#28265)
sebmarkbage Feb 15, 2024
59d46e8
Recreate jsi::Runtime during reload operation in JsiIntegrationTest
motiz88 Feb 15, 2024
a3998f8
Generate the RCTModulesConformingToProtocolsProvider only for react-n…
cipolleschi Feb 15, 2024
5a5c9eb
Remove ReactViewManagerWrapper
javache Feb 15, 2024
53e3f36
Fix incorrect cast in RemoveDeleteTree (#43018)
javache Feb 15, 2024
ab5e2e8
Fix forwarding touches to components in the Interop Layer
cipolleschi Feb 15, 2024
ca98044
remove feature flag enableOnDemandReactChoreographer (#43044)
sammy-SC Feb 15, 2024
afc61ab
Fix test-e2e-local when building artifacts locally (#43043)
huntie Feb 15, 2024
24f7bd7
Remove .npmrc write from setupVerdaccio util (#42941)
huntie Feb 15, 2024
2091400
fix: PerfMonitor option not showing on iOS (Bridgeless) (#42891)
okwasniewski Feb 15, 2024
d6a440e
Remove process.exit calls from publish-npm and throw errors instead (…
lunaleaps Feb 15, 2024
c5f48ac
feat: make __gitignore file work for OOT platforms (#42963)
okwasniewski Feb 15, 2024
1570062
Enable FabricPendingEventQueue by default in RN OSS (#43029)
mdvacca Feb 15, 2024
e4135e9
Update test-e2e-local to use source monorepo packages for RNTestProje…
huntie Feb 15, 2024
fb44659
Rename E2E template init script, relocate Verdaccio config + storage …
huntie Feb 15, 2024
a80674f
Relocate run-ci-e2e-tests script, add Flow (#43053)
huntie Feb 15, 2024
80ec096
Create shared consts module for scripts
huntie Feb 16, 2024
eca78c3
Add hermes commit to github action cache (#43067)
cipolleschi Feb 16, 2024
267ea26
Convert RCTConvert to `mm` in preparation for DisplayP3 changes
cipolleschi Feb 16, 2024
2697b9a
Back out "Add cxxModule to RN-Tester's codegenConfig" (#43051)
cortinico Feb 16, 2024
906985b
Back out "Update RNGP to handle cxxModule in codegenConfig" (#43050)
cortinico Feb 16, 2024
f61f87c
Make the `addUIBlock`'s Dictionary works correctly (#43060)
cipolleschi Feb 16, 2024
5164e83
Fix the compiler flags for libraries (#43071)
cipolleschi Feb 16, 2024
98ea5ea
Refactor set-version to use new getPackages util (#43072)
huntie Feb 16, 2024
e34e7d7
Lift execution context management out of Runtime (#43063)
motiz88 Feb 16, 2024
828ad04
Assign auto-incrementing execution context IDs (#43064)
motiz88 Feb 16, 2024
da03d7b
Implement Runtime.addBinding (global bindings only) (#43065)
motiz88 Feb 16, 2024
713ded1
Tweak documentation for soundName property (#43004)
Feb 16, 2024
1bd4576
Update docs on PushNotificationIOS (#43038)
Feb 16, 2024
fdf4ec3
Remove unused handler on PushNotificationIOS.removeEventListener (#43…
Feb 16, 2024
8ff05b5
Remove release-branch-cutoff from yarn bump-all-updated-packages (#43…
lunaleaps Feb 16, 2024
475a156
Make React-jsiinspector depends on hermes-engine to fix Dynamic Frame…
cipolleschi Feb 18, 2024
cb307b9
add synchronisation to Animated when used with setNativeProps (#43083)
sammy-SC Feb 19, 2024
55c5cd6
Remove unneded character (#43075)
cipolleschi Feb 19, 2024
d655fee
Resolving case sensitivity issue in header file import (#42786)
zhongwuzw Feb 19, 2024
3a1e769
Reject Runtime.evaluate messages with the wrong contextId
motiz88 Feb 19, 2024
89d3312
Remove test_windows from CircleCI (#43090)
cortinico Feb 19, 2024
5bec42f
Convert Touchable to ESM (#42889)
fabriziocucci Feb 19, 2024
918b75f
Fix typo in unit test (#43091)
cortinico Feb 19, 2024
1863805
Support limiting CDP bindings to specific contexts (#43089)
motiz88 Feb 19, 2024
046f664
Port Hermes integration tests to TYPED_TEST
motiz88 Feb 19, 2024
28da7f9
Share re-defined defineReadOnlyGlobal(...) (#42801)
christophpurrer Feb 19, 2024
01d704d
cxx module autolinking without codegen (#43054)
philIip Feb 20, 2024
e699558
Save exported state across RuntimeAgent instances (#43098)
motiz88 Feb 20, 2024
c02e83c
Add test for Hermes breakpoint persistence
motiz88 Feb 20, 2024
10edb9f
Add build script to check that codegen run properly in the project (#…
cipolleschi Feb 20, 2024
69977d0
De-duplicate the logic for counting attachments (#42596)
cubuspl42 Feb 20, 2024
1b50438
Fix import in bump-all-updated-packages, add Flow (#43106)
huntie Feb 20, 2024
cffb69a
Fix path in trigger-react-native-release (#43107)
huntie Feb 20, 2024
a4d6be8
Update set-version to reuse set-rn-version (#43109)
huntie Feb 20, 2024
de5619e
Make codegenNativeComponent show warning and not error (#43070)
dmytrorykun Feb 20, 2024
c99d96b
Bump CLI to 13.6.0 (#43093)
szymonrybczak Feb 20, 2024
8cbd08b
Merge commit 'c99d96b7a1a4dc905ce642966633b4d3c78bd3c9' into main
Saadnajmi Aug 3, 2024
3ef162a
test
Saadnajmi Aug 7, 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
  •  
  •  
  •  
20 changes: 0 additions & 20 deletions .buckconfig

This file was deleted.

1 change: 0 additions & 1 deletion .buckjavaargs

This file was deleted.

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
12 changes: 6 additions & 6 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 Expand Up @@ -167,7 +167,7 @@ commands:
steps:
- run:
name: "Run Tests: << parameters.platform >> End-to-End Tests"
command: node ./scripts/run-ci-e2e-tests.js --<< parameters.platform >> --retries << parameters.retries >>
command: node ./scripts/e2e/run-ci-e2e-tests.js --<< parameters.platform >> --retries << parameters.retries >>

report_bundle_size:
parameters:
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
Loading
Loading