Skip to content

Conversation

@sharath2727
Copy link
Contributor

@sharath2727 sharath2727 commented Jun 19, 2024

Description

Why

Today's fabric sample app generates a lot of bootstrapping code. There is a need for abstracting most of the react native initialization management from the developer so the developer can focus on developing the app itself.

What

Introduced ReactNativeAppBuilder and ReactInstanceSettingsBuilder to abstract away RNW Functionality

Resolves #13387

Changelog

no

Microsoft Reviewers: Open in CodeFlow

{
[experimental]
DOC_STRING("This is the builder for creating ReactInstanceSettings.")
runtimeclass ReactInstanceSettingsBuilder
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this class add much value? Seems like it would quickly become basically the same as the existing ReactInstanceSettings.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I believe it does. It is more of a builder for ReactInstanceSettings. It makes it easy to setup ReactInstanceSettings. Existing ReactInstanceSettings is much more than what this builder is doing. This builder's responsibility is to help setup the settings in one go.

@sharath2727 sharath2727 marked this pull request as ready for review June 24, 2024 20:55
@sharath2727 sharath2727 requested review from a team as code owners June 24, 2024 20:55
@sharath2727 sharath2727 merged commit c56788c into main Jun 25, 2024
@sharath2727 sharath2727 deleted the user/sharath2727/reactnativeappbuilder branch June 25, 2024 18:24
@jonthysell jonthysell added the Area: Fabric Support Facebook Fabric label Jul 15, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot added the New Architecture Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric label Jul 15, 2024
Yajur-Grover pushed a commit to Yajur-Grover/react-native-windows that referenced this pull request Oct 9, 2024
* Introduce ReactNativeAppBuilder.idl

* yarn format fix

* Change files

* Address feedback

* Add a fabric check for ReactNativeAppBuilder

* yarn format
Yajur-Grover added a commit that referenced this pull request Oct 11, 2024
* Introduce ReactNativeAppBuilder (#13368)

* Introduce ReactNativeAppBuilder.idl

* yarn format fix

* Change files

* Address feedback

* Add a fabric check for ReactNativeAppBuilder

* yarn format

* Update reactnativeappbuilder (#13467)

* Build reactnativeappbuilder

* Setup reactnativewin32 app

* Fix dispatcherqueue issue

* Change files

* Cleanup

* Address feedback

* Address feedback2

* Fix pipeline error

* Fix pipeline errors

* Address feedback

* [Fabric] Fix crash when running inspect (#13592)

* [Fabric] Fix crash when running inspect

* Change files

* fix

* [Fabric] LogBox should destroy its window on instance shutdown (#13675)

* [Fabric] LogBox should destroy its window on instance shutdown

* Change files

* format

* [Fabric] Add FocusNavigationDirection and allow overriding of default command handling (#13857)

* [Fabric] Add FocusNavigationDirection and allow overriding of default command handling

* Change files

* revert packages.lock

* [Fabric] LayoutDirection and FontSizeMultiplier support (#13866)

* [Fabric] LayoutDirection and FontSizeMultiplier support

* Change files

* Missed a few places not setting LayoutDirection

* fix crash on logbox

* Fix textinput caret

* fix

* RichEdit has to be told its multiline before we can set a multiline string

* Update SampleAppFabric to use ReactNativeAppBuilder (#13382)

* Update SampleAppFabric to use ReactNativeAppBuilder

* Yarn format fix

* Address feedback to keep BUNDLE and DEBUG

* Yarn format

* Change files

* Setup the DebugBundlePath when loading from metro

* fix typo

* [Fabric] Enable ScrollView touch scrolling (#13664)

* [Fabric] Enable ScrolView touch scrolling

* Change files

* format

* typo

* [Fabric] Add Support for accessibilityActions and onAccessibilityAction (#13674)

* Add Implementation for accessibilityActions

* Add activate action

* Format

* Change files

* Use a legacy native module binding that always returns null in bridgeless mode (#13905)

* Use a legacy native module binding that always returns null in bridgeless mode

* Change files

* format

* SampleTurboModule only works as a turbomodule, so do not install it when using web debugger (#13911)

* SampleTurboModule only works as a turbomodule, so do not install it when using web debugger

* Change files

* fix

* Implement the SampleTurboModule module (#13541)

This PR provides a proper implementation of the `SampleTurboModule` module and removes the proxy code in `TurboModuleManager` which instead substituted the old `SampleTurboCxxModule` module.

- New feature (non-breaking change which adds functionality)

The APIs of `SampleTurboModule` are starting to deviate from the older `SampleTurboCxxModule`, specifically the addition of new `EventEmitter` members. So it's time we had a "real" implementation of `SampleTurboModule`.

Closes #13531

See above.

N/A

Verified tests still pass and the new module is being called.

Should this change be included in the release notes: _yes_

Implement the SampleTurboModule module

* fix previous merge

* fix bad merge

* fix more typos

* update snapshots

---------

Co-authored-by: Sharath Manchala <10109130+sharath2727@users.noreply.github.com>
Co-authored-by: Andrew Coates <30809111+acoates-ms@users.noreply.github.com>
Co-authored-by: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com>
Co-authored-by: Jon Thysell <jthysell@microsoft.com>
acoates-ms pushed a commit to acoates-ms/react-native-windows that referenced this pull request Oct 11, 2024
* Introduce ReactNativeAppBuilder.idl

* yarn format fix

* Change files

* Address feedback

* Add a fabric check for ReactNativeAppBuilder

* yarn format
acoates-ms added a commit that referenced this pull request Oct 15, 2024
* Introduce ReactNativeAppBuilder (#13368)

* Introduce ReactNativeAppBuilder.idl

* yarn format fix

* Change files

* Address feedback

* Add a fabric check for ReactNativeAppBuilder

* yarn format

* Update SampleAppFabric to use ReactNativeAppBuilder (#13382)

* Update SampleAppFabric to use ReactNativeAppBuilder

* Yarn format fix

* Address feedback to keep BUNDLE and DEBUG

* Yarn format

* Change files

* Setup the DebugBundlePath when loading from metro

* Update reactnativeappbuilder (#13467)

* Build reactnativeappbuilder

* Setup reactnativewin32 app

* Fix dispatcherqueue issue

* Change files

* Cleanup

* Address feedback

* Address feedback2

* Fix pipeline error

* Fix pipeline errors

* Address feedback

* Implement the SampleTurboModule module (#13541)

This PR provides a proper implementation of the `SampleTurboModule` module and removes the proxy code in `TurboModuleManager` which instead substituted the old `SampleTurboCxxModule` module.

- New feature (non-breaking change which adds functionality)

The APIs of `SampleTurboModule` are starting to deviate from the older `SampleTurboCxxModule`, specifically the addition of new `EventEmitter` members. So it's time we had a "real" implementation of `SampleTurboModule`.

Closes #13531

See above.

N/A

Verified tests still pass and the new module is being called.

Should this change be included in the release notes: _yes_

Implement the SampleTurboModule module

* [Fabric] Fix crash when running inspect (#13592)

* [Fabric] Fix crash when running inspect

* Change files

* fix

* [Fabric] Enable ScrollView touch scrolling (#13664)

* [Fabric] Enable ScrolView touch scrolling

* Change files

* format

* typo

* [Fabric] Add Support for accessibilityActions and onAccessibilityAction (#13674)

* Add Implementation for accessibilityActions

* Add activate action

* Format

* Change files

* [Fabric] LogBox should destroy its window on instance shutdown (#13675)

* [Fabric] LogBox should destroy its window on instance shutdown

* Change files

* format

* [Fabric] Add FocusNavigationDirection and allow overriding of default command handling (#13857)

* [Fabric] Add FocusNavigationDirection and allow overriding of default command handling

* Change files

* revert packages.lock

* [Fabric] LayoutDirection and FontSizeMultiplier support (#13866)

* [Fabric] LayoutDirection and FontSizeMultiplier support

* Change files

* Missed a few places not setting LayoutDirection

* fix crash on logbox

* Fix textinput caret

* fix

* RichEdit has to be told its multiline before we can set a multiline string

* Use a legacy native module binding that always returns null in bridgeless mode (#13905)

* Use a legacy native module binding that always returns null in bridgeless mode

* Change files

* format

* SampleTurboModule only works as a turbomodule, so do not install it when using web debugger (#13911)

* SampleTurboModule only works as a turbomodule, so do not install it when using web debugger

* Change files

* fix

* merge conflicts

* format

* fix

* lint fix

* fix

* fix

* update snapshots

---------

Co-authored-by: Sharath Manchala <10109130+sharath2727@users.noreply.github.com>
Co-authored-by: Jon Thysell <jthysell@microsoft.com>
Co-authored-by: Chiara Mooney <34109996+chiaramooney@users.noreply.github.com>
Co-authored-by: React-Native-Windows Bot <53619745+rnbot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: Fabric Support Facebook Fabric New Architecture Broad category for issues that apply to the RN "new" architecture of Turbo Modules + Fabric

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Introduce ReactNativeAppBuilder and ReactInstanceSettingsBuilder

4 participants