Skip to content

feat: add fabric option #273

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

Merged
merged 41 commits into from
Oct 27, 2022
Merged

feat: add fabric option #273

merged 41 commits into from
Oct 27, 2022

Conversation

troZee
Copy link
Member

@troZee troZee commented Sep 6, 2022

Summary

Close #238

Screenshot 2022-09-06 at 15 25 48

Test plan

  • Turbo module with backward compat (experimental)
  • Turbo module (experimental)
  • Native module
  • Native view
  • JavaScript library

@troZee troZee requested review from satya164 and MateWW September 6, 2022 13:27
type?: 'module-legacy' | 'module-turbo' | 'module-mixed' | 'view' | 'library';
type?:
| 'module-legacy'
| 'module-new-arch'
Copy link
Member Author

Choose a reason for hiding this comment

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

@satya164 , I changed 'xxx-turbo' => 'xxx-new-arch' to avoid any confusion.
Fabric will refer to view, turbomodule will refer to module. Since the fact fabric is a new renderer, I would like to use new-arch postfix for the new arch

@troZee troZee requested a review from atlj September 6, 2022 13:34
@@ -53,7 +53,7 @@
"@release-it/conventional-changelog": "^5.0.0",
"@types/jest": "^28.1.2",
"@types/react": "~17.0.21",
"@types/react-native": "0.68.0",
"@types/react-native": <%-/* TODO: bump version of rn to 0.69.0 */ project.newArchitecture ? '"0.69.5"':'"0.68.0"'-%>,
Copy link
Member Author

Choose a reason for hiding this comment

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

Will adjust this todo after merge #271

<% if (project.turbomodule) { -%>
libreact_codegen_<%- project.name -%> \
<% if (project.newArchitecture) { -%>
libreact_codegen_<%- project.view ? project.name+'View': project.name -%> \
Copy link
Member Author

Choose a reason for hiding this comment

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

It will not be needed in RN 70

…emplate

# Conflicts:
#	packages/create-react-native-library/templates/example-legacy/example/$.bundle/config
#	packages/create-react-native-library/templates/example-legacy/example/$.ruby-version
#	packages/create-react-native-library/templates/example-legacy/example/$package.json
#	packages/create-react-native-library/templates/example-legacy/example/$yarn.lock
#	packages/create-react-native-library/templates/example-legacy/example/Gemfile
#	packages/create-react-native-library/templates/example-legacy/example/Gemfile.lock
#	packages/create-react-native-library/templates/example-legacy/example/android/app/build.gradle
#	packages/create-react-native-library/templates/example-legacy/example/android/app/debug.keystore
#	packages/create-react-native-library/templates/example-legacy/example/android/app/proguard-rules.pro
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/debug/AndroidManifest.xml
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/debug/java/com/example/{%- project.package %}/ReactNativeFlipper.java
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/AndroidManifest.xml
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/java/com/example/{%- project.package %}/MainActivity.java
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/java/com/example/{%- project.package %}/MainApplication.java
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/java/com/example/{%- project.package %}/newarchitecture/MainApplicationReactNativeHost.java
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/java/com/example/{%- project.package %}/newarchitecture/components/MainComponentsRegistry.java
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/java/com/example/{%- project.package %}/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/Android.mk
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/MainApplicationModuleProvider.cpp
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/MainApplicationModuleProvider.h
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/MainComponentsRegistry.cpp
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/MainComponentsRegistry.h
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/jni/OnLoad.cpp
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/drawable/rn_edit_text_material.xml
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/values/strings.xml
#	packages/create-react-native-library/templates/example-legacy/example/android/app/src/main/res/values/styles.xml
#	packages/create-react-native-library/templates/example-legacy/example/android/build.gradle
#	packages/create-react-native-library/templates/example-legacy/example/android/gradle.properties
#	packages/create-react-native-library/templates/example-legacy/example/android/gradle/wrapper/gradle-wrapper.jar
#	packages/create-react-native-library/templates/example-legacy/example/android/gradle/wrapper/gradle-wrapper.properties
#	packages/create-react-native-library/templates/example-legacy/example/android/gradlew
#	packages/create-react-native-library/templates/example-legacy/example/android/gradlew.bat
#	packages/create-react-native-library/templates/example-legacy/example/android/settings.gradle
#	packages/create-react-native-library/templates/example-legacy/example/index.ts
#	packages/create-react-native-library/templates/example-legacy/example/index.tsx
#	packages/create-react-native-library/templates/example-legacy/example/ios/Podfile
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example.xcodeproj/project.pbxproj
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example.xcodeproj/xcshareddata/xcschemes/{%- project.name %}Example.xcscheme
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example.xcworkspace/contents.xcworkspacedata
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example/AppDelegate.h
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example/AppDelegate.mm
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example/Images.xcassets/AppIcon.appiconset/Contents.json
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example/Images.xcassets/Contents.json
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example/Info.plist
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example/LaunchScreen.storyboard
#	packages/create-react-native-library/templates/example-legacy/example/ios/{%- project.name %}Example/main.m
#	packages/create-react-native-library/templates/example-new/example/patches/react-native+0.68.2.patch
#	packages/create-react-native-library/templates/example-new/example/patches/react-native+0.70.0.patch
@troZee troZee marked this pull request as ready for review September 8, 2022 15:39
@atlj
Copy link
Collaborator

atlj commented Sep 9, 2022

There is an issue

Issue

 ./create-react-native-library test      ✘ PIPE 5s
✔ What is the name of the npm package? … react-native-test
✔ What is the description for the package? … sdf
✔ What is the name of package author? … Burak
✔ What is the email address for the package author? … burak.guner@callstack.com
✔ What is the URL for the package author? … https://
✔ What is the URL for the repository? … https://
✔ What type of library do you want to develop? › Native fabric view with backward compat (experimental)
create-react-native-library <name>

create a react native library

Options:
  --help          Show help                                            [boolean]
  --version       Show version number                                  [boolean]
  --slug          Name of the npm package                               [string]
  --description   Description of the npm package                        [string]
  --author-name   Name of the package author                            [string]
  --author-email  Email address of the package author                   [string]
  --author-url    URL for the package author                            [string]
  --repo-url      URL for the repository                                [string]
  --languages     Languages you want to use
      [choices: "java-objc", "java-swift", "kotlin-objc", "kotlin-swift", "cpp",
                                                                           "js"]
  --type          Type of library you want to develop[choices: "module", "view"]
  --example       Type of example app                [choices: "expo", "native"]

[Error: ENOENT: no such file or directory, scandir '/Users/burakguner/kod/react-native-builder-bob/packages/create-react-native-library/templates/java-view-mixed-library'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'scandir',
  path: '/Users/burakguner/kod/react-native-builder-bob/packages/create-react-native-library/templates/java-view-mixed-library'
}

Steps to reproduce

  1. run create-react-native-library
  2. choose Native fabric view with backward compat (experimental) for What type of library do you want to develop?

Piotr Trocki added 2 commits October 24, 2022 14:35
# Conflicts:
#	packages/create-react-native-library/src/index.ts
#	packages/create-react-native-library/templates/common/$package.json
#	packages/create-react-native-library/templates/example-legacy/example/index.js
#	packages/create-react-native-library/templates/example-legacy/example/react-native.config.js
#	packages/create-react-native-library/templates/example/example/react-native.config.js
#	packages/create-react-native-library/templates/java-library-new/android/src/main/java/com/{%- project.package %}/{%- project.name %}Module.java
#	packages/create-react-native-library/templates/java-library-new/android/src/main/java/com/{%- project.package %}/{%- project.name %}Package.java
#	packages/create-react-native-library/templates/java-library-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Module.java
#	packages/create-react-native-library/templates/java-library-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.java
#	packages/create-react-native-library/templates/java-library-turbo/android/src/main/java/com/{%- project.package %}/{%- project.name %}Package.java
#	packages/create-react-native-library/templates/java-view-legacy/android/src/main/java/com/{%- project.package %}/{%- project.name %}Package.java
#	packages/create-react-native-library/templates/java-view-legacy/android/src/main/java/com/{%- project.package %}/{%- project.name %}ViewManager.java
#	packages/create-react-native-library/templates/java-view-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.java
#	packages/create-react-native-library/templates/java-view-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}ViewManager.java
#	packages/create-react-native-library/templates/java-view-library/android/src/main/java/com/{%- project.package %}/{%- project.name %}Package.java
#	packages/create-react-native-library/templates/kotlin-view-legacy/android/src/main/java/com/{%- project.package %}/{%- project.name %}Package.kt
#	packages/create-react-native-library/templates/kotlin-view-legacy/android/src/main/java/com/{%- project.package %}/{%- project.name %}ViewManager.kt
#	packages/create-react-native-library/templates/kotlin-view-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}Package.kt
#	packages/create-react-native-library/templates/kotlin-view-legacy/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}ViewManager.kt
#	packages/create-react-native-library/templates/kotlin-view-library/android/src/main/java/com/{%- project.package %}/{%- project.name %}ViewManager.kt
#	packages/create-react-native-library/templates/native-common/example/react-native.config.js
@troZee
Copy link
Member Author

troZee commented Oct 24, 2022

@satya164 @atlj @MateWW
PR is ready for testing

@troZee troZee requested review from MateWW and atlj October 24, 2022 13:57

// ...

const result = await multiply(3, 7);
```

<% } -%>
Copy link
Member

Choose a reason for hiding this comment

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

Avoid adding new lines here

- Fix eslint issues
- move hexStringColor to Utils
@troZee troZee requested a review from satya164 October 25, 2022 10:24
@satya164 satya164 merged commit c43878f into main Oct 27, 2022
@satya164 satya164 deleted the MateWW/fabric-template branch October 27, 2022 15:35
@migueldaipre
Copy link

@satya164 Any news when this will be released?

@thymikee
Copy link
Member

🔜

okwasniewski pushed a commit that referenced this pull request Nov 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

New architecture support?
6 participants