diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 99b1d3ea9b..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: 🐛 Bug Report -description: Report a reproducible bug or regression in React Native Skia -labels: ["bug"] -body: - - type: markdown - attributes: - value: | - Please provide all the information requested. Issues that do not follow this format are likely to stall. - - - type: textarea - id: description - attributes: - label: Description - description: Briefly describe the issue and the expected versus actual behavior. - validations: - required: true - - - type: input - id: skia_version - attributes: - label: React Native Skia Version - description: Specify the version of react-native-skia where the issue occurs. - validations: - required: true - - - type: input - id: react_native_version - attributes: - label: React Native Version - description: Specify the version of React Native used. - validations: - required: true - - - type: checkboxes - id: new_architecture - attributes: - label: Using New Architecture - description: Check this box if the new architecture is enabled. - options: - - label: Enabled - required: false - - - type: textarea - id: reproduction - attributes: - label: Steps to Reproduce - description: Provide a detailed list of steps that reproduce the issue. - validations: - required: true - - - type: textarea - id: extra - attributes: - label: Snack, Code Example, Screenshot, or Link to Repository - description: | - Please provide a Snack (https://snack.expo.io/), a link to a repository on GitHub, or a minimal code example that reproduces the problem. - You may provide a screenshot of the application if you think it is relevant to your bug report. - Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve. - A reproducer is mandatory. Issues without reproducers are more likely to stall and may be closed. - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index cf09d6259b..0000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: true -contact_links: - - name: 🤔 Questions and Help - url: https://github.com/Shopify/react-native-skia/discussions - about: Looking for help with React Native Skia? - - name: 🚀 Discussions and Proposals - url: https://github.com/Shopify/react-native-skia/discussions/categories/ideas - about: Discuss the future of React Native Skia. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/documentation_issue.yml b/.github/ISSUE_TEMPLATE/documentation_issue.yml deleted file mode 100644 index ddb8bcba63..0000000000 --- a/.github/ISSUE_TEMPLATE/documentation_issue.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: 📖 Documentation issue -description: Report an issue with React Native Skia documentation -labels: ["documentation"] -body: - - type: textarea - id: description - attributes: - label: Description - validations: - required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index 4a0a958d6d..0000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: 🆕 Feature Request -description: React Native Skia feature request -labels: ["enhancement"] -body: - - type: textarea - id: description - attributes: - label: Description - validations: - required: true \ No newline at end of file diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml deleted file mode 100644 index 219ddedc10..0000000000 --- a/.github/actions/setup/action.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Setup -description: Setup Node.js and install dependencies - -inputs: - github_token: - description: 'GitHub Token' - required: false - download_skia: - description: 'Download Skia Binary Artifacts' - required: false - default: 'true' - graphite: - description: 'Use Graphite Skia Build' - required: false - default: 'false' - -runs: - using: composite - steps: - - name: Setup Node.js - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3.9.1 - with: - node-version-file: .nvmrc - cache: yarn - cache-dependency-path: yarn.lock - registry-url: 'https://registry.npmjs.org' - - - name: Upgrade npm - run: npm install -g npm@latest - shell: bash - - - name: Install dependencies - run: yarn install --immutable - shell: bash - env: - SKIP_SKIA_DOWNLOAD: ${{ inputs.download_skia == 'false' && '1' || '' }} - - - name: Copy Skia headers (standard build) - if: inputs.graphite != 'true' - working-directory: packages/skia - run: yarn copy-skia-headers - shell: bash - - - name: Install Skia Graphite - if: inputs.graphite == 'true' - working-directory: packages/skia - run: | - rm -rf libs - yarn install-skia-graphite - shell: bash diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml deleted file mode 100644 index c75e875a00..0000000000 --- a/.github/dependabot.yaml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: - - package-ecosystem: github-actions - directory: "/" - schedule: - interval: weekly diff --git a/.github/workflows/build-dawn.yml b/.github/workflows/build-dawn.yml deleted file mode 100644 index fd05ad5eb1..0000000000 --- a/.github/workflows/build-dawn.yml +++ /dev/null @@ -1,275 +0,0 @@ -name: Build Dawn - -on: workflow_dispatch - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - DAWN_BRANCH: chromium/7770 # Configure the Dawn branch to checkout - -jobs: - prepare-release: - runs-on: ubuntu-latest - outputs: - dawn_branch: ${{ steps.dawn_meta.outputs.branch }} - dawn_branch_slug: ${{ steps.dawn_meta.outputs.branch_slug }} - tag_name: ${{ steps.release_meta.outputs.tag_name }} - release_name: ${{ steps.release_meta.outputs.release_name }} - steps: - - name: Checkout repository - uses: actions/checkout@v6.0.2 - - - name: Determine Dawn branch metadata - id: dawn_meta - run: | - set -eo pipefail - branch="${DAWN_BRANCH}" - # Convert slashes to hyphens for tag-safe slug - slug=${branch//\//-} - echo "branch=$branch" >> "$GITHUB_OUTPUT" - echo "branch_slug=$slug" >> "$GITHUB_OUTPUT" - env: - DAWN_BRANCH: ${{ env.DAWN_BRANCH }} - - - name: Compute release metadata - id: release_meta - run: | - tag="dawn-${DAWN_BRANCH_SLUG}" - echo "tag_name=$tag" >> "$GITHUB_OUTPUT" - echo "release_name=Dawn ${DAWN_BRANCH}" >> "$GITHUB_OUTPUT" - env: - DAWN_BRANCH: ${{ steps.dawn_meta.outputs.branch }} - DAWN_BRANCH_SLUG: ${{ steps.dawn_meta.outputs.branch_slug }} - - - name: Create GitHub release - id: create_release - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.release_meta.outputs.tag_name }} - name: ${{ steps.release_meta.outputs.release_name }} - body: "Dawn prebuilt binaries for version ${{ steps.dawn_meta.outputs.branch }}" - draft: false - prerelease: true - generate_release_notes: false - - mobile-android: - needs: prepare-release - strategy: - fail-fast: false - matrix: - include: - # Android builds - - arch: arm64-v8a - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_arm64-v8a - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - arch: armeabi-v7a - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_armeabi-v7a - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - arch: x86 - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=x86 -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_x86 - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - arch: x86_64 - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=x86_64 -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_x86_64 - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - name: Build-android-${{ matrix.arch }} - runs-on: ubuntu-latest - steps: - - name: Checkout main repository - uses: actions/checkout@v6.0.2 - - - name: Checkout Dawn repository - run: | - git clone --depth 1 --branch ${{ env.DAWN_BRANCH }} https://dawn.googlesource.com/dawn externals/dawn - - - name: Setup Android NDK - id: setup-ndk - uses: nttld/setup-ndk@v1 - with: - ndk-version: r27d - - - name: Set ANDROID_NDK - run: echo "ANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV - - - name: Build android ${{ matrix.arch }} - run: | - cmake -S externals/dawn -B ${{ matrix.output_dir }} -G Ninja \ - -DDAWN_MOBILE_BUILD=android \ - -C externals/dawn/.github/workflows/dawn-ci.cmake \ - -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain_file }} \ - ${{ matrix.cmake_args }} \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=OFF \ - -DDAWN_BUILD_MONOLITHIC_LIBRARY=SHARED \ - -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON \ - -DCMAKE_EXE_LINKER_FLAGS="-llog" \ - -DCMAKE_SHARED_LINKER_FLAGS="-llog -Wl,-z,max-page-size=16384" - ninja -C ${{ matrix.output_dir }} - - name: Strip Android binaries - run: | - ${{ matrix.strip_tool }} ${{ matrix.output_dir }}/${{ matrix.library_path }} - - - name: Upload build artifacts - uses: actions/upload-artifact@v7 - with: - name: build-android-${{ matrix.arch }} - path: ${{ matrix.output_dir }}/${{ matrix.library_path }} - - - name: Install headers (from arm64-v8a build only) - if: matrix.arch == 'arm64-v8a' - run: | - cmake --install ${{ matrix.output_dir }} --prefix dawn-headers - - - name: Upload headers (from arm64-v8a build only) - if: matrix.arch == 'arm64-v8a' - uses: actions/upload-artifact@v7 - with: - name: dawn-headers - path: dawn-headers/ - - mobile-apple: - needs: prepare-release - strategy: - fail-fast: false - matrix: - include: - # Apple builds - - platform: ios - arch: arm64 - cmake_args: -DPLATFORM=OS64 -DDEPLOYMENT_TARGET=14.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/ios_arm64 - library_path: src/dawn/native/libwebgpu_dawn.a - - platform: ios - arch: sim_arm64 - cmake_args: -DPLATFORM=SIMULATORARM64 -DDEPLOYMENT_TARGET=14.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/ios_sim_arm64 - library_path: src/dawn/native/libwebgpu_dawn.a - - platform: ios - arch: sim_x86_64 - cmake_args: -DPLATFORM=SIMULATOR64 -DDEPLOYMENT_TARGET=14.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/ios_sim_x86_64 - library_path: src/dawn/native/libwebgpu_dawn.a - - platform: macos - arch: universal - cmake_args: -DPLATFORM=MAC_UNIVERSAL -DDEPLOYMENT_TARGET=11.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/macos_universal - library_path: src/dawn/native/libwebgpu_dawn.a - - name: Build-${{ matrix.platform }}-${{ matrix.arch }} - runs-on: macos-latest-large - steps: - - name: Checkout main repository - uses: actions/checkout@v6.0.2 - - - name: Checkout Dawn repository - run: | - git clone --depth 1 --branch ${{ env.DAWN_BRANCH }} https://dawn.googlesource.com/dawn externals/dawn -# submodules: true - - - name: Setup Xcode - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - - name: Download Apple toolchain - run: | - mkdir -p externals/dawn/build-tools - # Download the ios-cmake toolchain file - curl -L https://raw.githubusercontent.com/leetal/ios-cmake/6fa909e133b92343db2d099e0478448c05ffec1a/ios.toolchain.cmake -o externals/dawn/build-tools/apple.toolchain.cmake - - - name: Build ${{ matrix.platform }} ${{ matrix.arch }} - run: | - cmake -S externals/dawn -B ${{ matrix.output_dir }} -G Ninja \ - -DDAWN_MOBILE_BUILD=apple \ - -C externals/dawn/.github/workflows/dawn-ci.cmake \ - -DCMAKE_TOOLCHAIN_FILE=build-tools/apple.toolchain.cmake \ - ${{ matrix.cmake_args }} \ - -DCMAKE_BUILD_TYPE=Release - ninja -C ${{ matrix.output_dir }} - - name: Upload build artifacts - uses: actions/upload-artifact@v7 - with: - name: build-${{ matrix.platform }}-${{ matrix.arch }} - path: ${{ matrix.output_dir }}/${{ matrix.library_path }} - - package-mobile: - name: Package Mobile Artifacts - runs-on: macos-latest - needs: [prepare-release, mobile-android, mobile-apple] - steps: - - name: Checkout main repository - uses: actions/checkout@v6.0.2 - - - name: Download all build artifacts - uses: actions/download-artifact@v8 - with: - pattern: build-* - path: artifacts - - - name: Download headers - uses: actions/download-artifact@v8 - with: - name: dawn-headers - path: dawn-headers - - - name: Create iOS Simulator fat binary - run: | - mkdir -p libs/apple/iphonesimulator - lipo -create \ - artifacts/build-ios-sim_x86_64/libwebgpu_dawn.a \ - artifacts/build-ios-sim_arm64/libwebgpu_dawn.a \ - -output libs/apple/iphonesimulator/libwebgpu_dawn.a - - - name: Create XCFramework - run: | - xcodebuild -create-xcframework \ - -library libs/apple/iphonesimulator/libwebgpu_dawn.a \ - -library artifacts/build-ios-arm64/libwebgpu_dawn.a \ - -library artifacts/build-macos-universal/libwebgpu_dawn.a \ - -output dawn-apple.xcframework - - - name: Package Android libraries - run: | - mkdir -p dawn-android/arm64-v8a - mkdir -p dawn-android/armeabi-v7a - mkdir -p dawn-android/x86 - mkdir -p dawn-android/x86_64 - cp artifacts/build-android-arm64-v8a/libwebgpu_dawn.so dawn-android/arm64-v8a/ - cp artifacts/build-android-armeabi-v7a/libwebgpu_dawn.so dawn-android/armeabi-v7a/ - cp artifacts/build-android-x86/libwebgpu_dawn.so dawn-android/x86/ - cp artifacts/build-android-x86_64/libwebgpu_dawn.so dawn-android/x86_64/ - - - name: Create archives - run: | - TAG="${{ needs.prepare-release.outputs.tag_name }}" - tar -czf dawn-android-${TAG}.tar.gz dawn-android - tar -czf dawn-apple-${TAG}.xcframework.tar.gz dawn-apple.xcframework - tar -czf dawn-headers-${TAG}.tar.gz dawn-headers - - - name: Upload to GitHub release - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ needs.prepare-release.outputs.tag_name }} - files: | - dawn-android-${{ needs.prepare-release.outputs.tag_name }}.tar.gz - dawn-apple-${{ needs.prepare-release.outputs.tag_name }}.xcframework.tar.gz - dawn-headers-${{ needs.prepare-release.outputs.tag_name }}.tar.gz - prerelease: true diff --git a/.github/workflows/build-npm.yml b/.github/workflows/build-npm.yml deleted file mode 100644 index 145d2c256e..0000000000 --- a/.github/workflows/build-npm.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Create a release -on: workflow_dispatch -jobs: - build: - runs-on: ubuntu-latest - permissions: - contents: write # to be able to publish a GitHub release - issues: write # to be able to comment on released issues - pull-requests: write # to be able to comment on released pull requests - id-token: write # to enable use of OIDC for npm provenance - env: - WORKING_DIRECTORY: ./ - concurrency: - group: npm-${{ github.ref }} - cancel-in-progress: true - steps: - - name: checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Build package and documentation - run: yarn build - - - name: Build NPM Package - working-directory: packages/skia - run: | - yarn release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - YARN_NPM_AUTH_TOKEN: '' - NPM_TOKEN: '' - NPM_CONFIG_PROVENANCE: true - - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./apps/docs/build - user_name: github-actions[bot] - user_email: 41898282+github-actions[bot]@users.noreply.github.com diff --git a/.github/workflows/build-skia-graphite.yml b/.github/workflows/build-skia-graphite.yml deleted file mode 100644 index 68fbc58bfb..0000000000 --- a/.github/workflows/build-skia-graphite.yml +++ /dev/null @@ -1,275 +0,0 @@ -name: Build SKIA Graphite -on: - workflow_dispatch: - inputs: - skia_branch: - description: 'Skia branch to build (e.g., chrome/m144). Leave empty to use default submodule branch.' - required: false - default: '' - tag_suffix: - description: 'Optional suffix to append to tag (e.g., "a" for skia-graphite-m144a)' - required: false - default: '' - dry_run: - description: 'Test build only - skip GitHub release creation and upload' - required: false - type: boolean - default: false - skip_skia_download: - description: 'Skip downloading prebuilt Skia (always true for building from source)' - required: false - type: boolean - default: true -jobs: - prepare-release: - runs-on: ubuntu-latest - outputs: - skia_branch: ${{ steps.skia_meta.outputs.branch }} - skia_branch_slug: ${{ steps.skia_meta.outputs.branch_slug }} - tag_name: ${{ steps.release_meta.outputs.tag_name }} - release_name: ${{ steps.release_meta.outputs.release_name }} - steps: - - name: Checkout repository - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - fetch-depth: 0 - - - name: Checkout custom Skia branch - if: ${{ github.event.inputs.skia_branch != '' }} - working-directory: externals/skia - run: | - echo "Checking out Skia branch: ${{ github.event.inputs.skia_branch }}" - git fetch origin ${{ github.event.inputs.skia_branch }} - git checkout FETCH_HEAD - echo "Current Skia commit: $(git rev-parse HEAD)" - - - name: Determine Skia branch - id: skia_meta - run: | - set -eo pipefail - if [ ! -d "externals/skia" ]; then - echo "::error::externals/skia not found." - exit 1 - fi - # Use input branch if provided, otherwise detect from git - if [ -n "$INPUT_SKIA_BRANCH" ]; then - branch="$INPUT_SKIA_BRANCH" - else - branch=$(git -C externals/skia branch --show-current || true) - if [ -z "$branch" ]; then - branch=$(git -C externals/skia describe --all --exact-match 2>/dev/null || true) - fi - if [ -z "$branch" ]; then - branch=$(git -C externals/skia rev-parse --short HEAD) - fi - fi - # Strip remotes/origin/chrome/ or chrome/ prefix if present - branch=${branch#remotes/origin/chrome/} - branch=${branch#chrome/} - slug=${branch//\//-} - echo "branch=$branch" >> "$GITHUB_OUTPUT" - echo "branch_slug=$slug" >> "$GITHUB_OUTPUT" - env: - INPUT_SKIA_BRANCH: ${{ github.event.inputs.skia_branch }} - - name: Compute release metadata - id: release_meta - run: | - tag="skia-graphite-${SKIA_BRANCH_SLUG}${TAG_SUFFIX}" - echo "tag_name=$tag" >> "$GITHUB_OUTPUT" - echo "release_name=Skia Graphite ${SKIA_BRANCH}${TAG_SUFFIX}" >> "$GITHUB_OUTPUT" - env: - SKIA_BRANCH: ${{ steps.skia_meta.outputs.branch }} - SKIA_BRANCH_SLUG: ${{ steps.skia_meta.outputs.branch_slug }} - TAG_SUFFIX: ${{ github.event.inputs.tag_suffix }} - - name: Create GitHub release - if: ${{ github.event.inputs.dry_run != 'true' }} - id: create_release - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.release_meta.outputs.tag_name }} - name: ${{ steps.release_meta.outputs.release_name }} - body: "Skia Graphite prebuilt binaries for version ${{ steps.skia_meta.outputs.branch }}" - draft: false - prerelease: true - generate_release_notes: false - build: - needs: prepare-release - runs-on: macos-latest-xlarge - strategy: - matrix: - include: - - target: "apple-ios" - artifact_name: "skia-graphite-apple-ios-xcframeworks" - package_root: "./packages/skia/libs/ios" - - target: "apple-macos" - artifact_name: "skia-graphite-apple-macos-xcframeworks" - package_root: "./packages/skia/libs/macos" - # Note: No apple-tvos (not supported with Graphite) - # Note: No apple-maccatalyst (not available with Graphite) - - target: "android-arm" - artifact_name: "skia-graphite-android-arm" - package_root: "./externals/skia/out/android/arm" - - target: "android-arm64" - artifact_name: "skia-graphite-android-arm-64" - package_root: "./externals/skia/out/android/arm64" - - target: "android-x86" - artifact_name: "skia-graphite-android-arm-x86" - package_root: "./externals/skia/out/android/x86" - - target: "android-x64" - artifact_name: "skia-graphite-android-arm-x64" - package_root: "./externals/skia/out/android/x64" - fail-fast: false - steps: - - name: checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Checkout custom Skia branch - if: ${{ github.event.inputs.skia_branch != '' }} - working-directory: externals/skia - run: | - echo "Checking out Skia branch: ${{ github.event.inputs.skia_branch }}" - git fetch origin ${{ github.event.inputs.skia_branch }} - git checkout FETCH_HEAD - echo "Current Skia commit: $(git rev-parse HEAD)" - - - name: Setup Android NDK - id: setup-ndk - if: startsWith(matrix.target, 'android') - uses: nttld/setup-ndk@afb4c9964b521afb97c864b7d40b11e6911bd410 # v1.5.0 - with: - ndk-version: r27d - - - name: Set ANDROID_NDK - if: startsWith(matrix.target, 'android') - run: echo "ANDROID_NDK=$ANDROID_HOME/ndk-bundle" >> $GITHUB_ENV - - - name: Setup Ninja - uses: seanmiddleditch/gha-setup-ninja@master - - - name: Setup - uses: ./.github/actions/setup - with: - download_skia: ${{ github.event.inputs.skip_skia_download == 'true' && 'false' || 'true' }} - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Update depot_tools - working-directory: ./externals/depot_tools - run: ./update_depot_tools - - - name: Apply Dawn patch - run: | - DAWN_GNI_FILE="./externals/skia/build_overrides/dawn.gni" - if [ -f "$DAWN_GNI_FILE" ]; then - echo "Applying patch to dawn.gni..." - # Remove the specified lines from the end of the file - sed -i.bak '/# PartitionAlloc is an optional dependency:/,$d' "$DAWN_GNI_FILE" - echo "Patch applied successfully." - echo "Modified dawn.gni content:" - cat "$DAWN_GNI_FILE" - else - echo "Warning: dawn.gni file not found at $DAWN_GNI_FILE" - fi - - - name: Build Skia with Graphite - ${{ matrix.target }} - working-directory: ./packages/skia - env: - ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }} - GIT_SYNC_DEPS_SKIP_EMSDK: 'true' - ZERO_AR_DATE: 1 - SK_GRAPHITE: 1 - run: yarn build-skia ${{ matrix.target }} - - - name: Package binaries - ${{ matrix.artifact_name }} - id: package - run: | - set -eo pipefail - ROOT="${{ matrix.package_root }}" - BASENAME="$(basename "$ROOT")" - PARENT="$(dirname "$ROOT")" - TAG="${DISPATCH_TAG}" - if [ -z "$TAG" ]; then - TAG="${SKIA_BRANCH_SLUG}" - fi - if [ -z "$TAG" ]; then - TAG="${GITHUB_REF_NAME:-}" - fi - if [ -z "$TAG" ]; then - TAG="${GITHUB_SHA}" - fi - ARCHIVE="${{ matrix.artifact_name }}-${TAG}.tar.gz" - mkdir -p release-assets - tar -czf "release-assets/$ARCHIVE" -C "$PARENT" "$BASENAME" - echo "asset_path=release-assets/$ARCHIVE" >> "$GITHUB_OUTPUT" - echo "asset_name=$ARCHIVE" >> "$GITHUB_OUTPUT" - shell: bash - env: - DISPATCH_TAG: ${{ needs.prepare-release.outputs.tag_name }} - SKIA_BRANCH_SLUG: ${{ needs.prepare-release.outputs.skia_branch_slug }} - - - name: Upload binaries to GitHub release - ${{ matrix.artifact_name }} - if: ${{ github.event.inputs.dry_run != 'true' }} - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ needs.prepare-release.outputs.tag_name }} - files: ${{ steps.package.outputs.asset_path }} - prerelease: true - - - name: Upload binaries as workflow artifact (dry run) - ${{ matrix.artifact_name }} - if: ${{ github.event.inputs.dry_run == 'true' }} - uses: actions/upload-artifact@v7 - with: - name: ${{ matrix.artifact_name }} - path: ${{ steps.package.outputs.asset_path }} - retention-days: 7 - - - name: Package Graphite Headers - if: matrix.target == 'apple-ios' - id: package_headers - run: | - set -eo pipefail - TAG="${DISPATCH_TAG}" - if [ -z "$TAG" ]; then - TAG="${SKIA_BRANCH_SLUG}" - fi - if [ -z "$TAG" ]; then - TAG="${GITHUB_REF_NAME:-}" - fi - if [ -z "$TAG" ]; then - TAG="${GITHUB_SHA}" - fi - ARCHIVE="skia-graphite-headers-${TAG}.tar.gz" - mkdir -p release-assets - tar -czf "release-assets/$ARCHIVE" \ - ./packages/skia/cpp/dawn/include \ - ./packages/skia/cpp/skia/src/gpu/graphite - echo "asset_path=release-assets/$ARCHIVE" >> "$GITHUB_OUTPUT" - echo "asset_name=$ARCHIVE" >> "$GITHUB_OUTPUT" - shell: bash - env: - DISPATCH_TAG: ${{ needs.prepare-release.outputs.tag_name }} - SKIA_BRANCH_SLUG: ${{ needs.prepare-release.outputs.skia_branch_slug }} - - - name: Upload Graphite Headers to GitHub release - if: ${{ matrix.target == 'apple-ios' && github.event.inputs.dry_run != 'true' }} - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ needs.prepare-release.outputs.tag_name }} - files: ${{ steps.package_headers.outputs.asset_path }} - prerelease: true - - - name: Upload Graphite Headers as workflow artifact (dry run) - if: ${{ matrix.target == 'apple-ios' && github.event.inputs.dry_run == 'true' }} - uses: actions/upload-artifact@v7 - with: - name: skia-graphite-headers - path: ${{ steps.package_headers.outputs.asset_path }} - retention-days: 7 diff --git a/.github/workflows/build-skia.yml b/.github/workflows/build-skia.yml deleted file mode 100644 index 0bac957ac8..0000000000 --- a/.github/workflows/build-skia.yml +++ /dev/null @@ -1,181 +0,0 @@ -name: Build SKIA -on: - workflow_dispatch: - inputs: - tag_suffix: - description: 'Optional suffix to append to tag (e.g., "a" for skia-m144a)' - required: false - default: '' - dry_run: - description: 'Test build only - skip GitHub release creation and upload' - required: false - type: boolean - default: false - skip_skia_download: - description: 'Skip downloading prebuilt Skia (always true for building from source)' - required: false - type: boolean - default: true -jobs: - prepare-release: - runs-on: ubuntu-latest - outputs: - skia_branch: ${{ steps.skia_meta.outputs.branch }} - skia_branch_slug: ${{ steps.skia_meta.outputs.branch_slug }} - tag_name: ${{ steps.release_meta.outputs.tag_name }} - release_name: ${{ steps.release_meta.outputs.release_name }} - steps: - - name: Checkout repository - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - fetch-depth: 0 - - name: Determine Skia branch - id: skia_meta - run: | - set -eo pipefail - if [ ! -d "externals/skia" ]; then - echo "::error::externals/skia not found." - exit 1 - fi - branch=$(git -C externals/skia branch --show-current || true) - if [ -z "$branch" ]; then - branch=$(git -C externals/skia describe --all --exact-match 2>/dev/null || true) - fi - if [ -z "$branch" ]; then - branch=$(git -C externals/skia rev-parse --short HEAD) - fi - # Strip remotes/origin/chrome/ prefix if present - branch=${branch#remotes/origin/chrome/} - slug=${branch//\//-} - echo "branch=$branch" >> "$GITHUB_OUTPUT" - echo "branch_slug=$slug" >> "$GITHUB_OUTPUT" - - name: Compute release metadata - id: release_meta - run: | - tag="skia-${SKIA_BRANCH_SLUG}${TAG_SUFFIX}" - echo "tag_name=$tag" >> "$GITHUB_OUTPUT" - echo "release_name=Skia ${SKIA_BRANCH}${TAG_SUFFIX}" >> "$GITHUB_OUTPUT" - env: - SKIA_BRANCH: ${{ steps.skia_meta.outputs.branch }} - SKIA_BRANCH_SLUG: ${{ steps.skia_meta.outputs.branch_slug }} - TAG_SUFFIX: ${{ github.event.inputs.tag_suffix }} - - name: Create GitHub release - if: ${{ github.event.inputs.dry_run != 'true' }} - id: create_release - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.release_meta.outputs.tag_name }} - name: ${{ steps.release_meta.outputs.release_name }} - body: "Skia prebuilt binaries for version ${{ steps.skia_meta.outputs.branch }}" - draft: false - prerelease: true - generate_release_notes: false - build: - needs: prepare-release - runs-on: macos-latest-xlarge - strategy: - matrix: - include: - - target: "apple-ios" - artifact_name: "skia-apple-ios-xcframeworks" - package_root: "./packages/skia/libs/ios" - - target: "apple-tvos" - artifact_name: "skia-apple-tvos-xcframeworks" - package_root: "./packages/skia/libs/tvos" - - target: "apple-macos" - artifact_name: "skia-apple-macos-xcframeworks" - package_root: "./packages/skia/libs/macos" - - target: "android-arm" - artifact_name: "skia-android-arm" - package_root: "./packages/skia/libs/android/armeabi-v7a" - - target: "android-arm64" - artifact_name: "skia-android-arm-64" - package_root: "./packages/skia/libs/android/arm64-v8a" - - target: "android-x86" - artifact_name: "skia-android-arm-x86" - package_root: "./packages/skia/libs/android/x86" - - target: "android-x64" - artifact_name: "skia-android-arm-x64" - package_root: "./packages/skia/libs/android/x86_64" - fail-fast: false - steps: - - name: checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup Android NDK - id: setup-ndk - if: startsWith(matrix.target, 'android') - uses: nttld/setup-ndk@afb4c9964b521afb97c864b7d40b11e6911bd410 # v1.5.0 - with: - ndk-version: r27c - - - name: Setup Ninja - uses: seanmiddleditch/gha-setup-ninja@master - - - name: Setup - uses: ./.github/actions/setup - with: - download_skia: ${{ github.event.inputs.skip_skia_download == 'true' && 'false' || 'true' }} - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Update depot_tools - working-directory: ./externals/depot_tools - run: ./update_depot_tools - - - name: Build Skia - ${{ matrix.target }} - working-directory: ./packages/skia - env: - ANDROID_NDK: ${{ steps.setup-ndk.outputs.ndk-path }} - GIT_SYNC_DEPS_SKIP_EMSDK: 'true' - ZERO_AR_DATE: 1 - run: yarn build-skia ${{ matrix.target }} - - - name: Package binaries - ${{ matrix.artifact_name }} - id: package - run: | - set -eo pipefail - ROOT="${{ matrix.package_root }}" - BASENAME="$(basename "$ROOT")" - PARENT="$(dirname "$ROOT")" - TAG="${DISPATCH_TAG}" - if [ -z "$TAG" ]; then - TAG="${SKIA_BRANCH_SLUG}" - fi - if [ -z "$TAG" ]; then - TAG="${GITHUB_REF_NAME:-}" - fi - if [ -z "$TAG" ]; then - TAG="${GITHUB_SHA}" - fi - ARCHIVE="${{ matrix.artifact_name }}-${TAG}.tar.gz" - mkdir -p release-assets - tar -czf "release-assets/$ARCHIVE" -C "$PARENT" "$BASENAME" - echo "asset_path=release-assets/$ARCHIVE" >> "$GITHUB_OUTPUT" - echo "asset_name=$ARCHIVE" >> "$GITHUB_OUTPUT" - shell: bash - env: - DISPATCH_TAG: ${{ needs.prepare-release.outputs.tag_name }} - SKIA_BRANCH_SLUG: ${{ needs.prepare-release.outputs.skia_branch_slug }} - - - name: Upload binaries to GitHub release - ${{ matrix.artifact_name }} - if: ${{ github.event.inputs.dry_run != 'true' }} - uses: softprops/action-gh-release@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ needs.prepare-release.outputs.tag_name }} - files: ${{ steps.package.outputs.asset_path }} - prerelease: true - - - name: Upload binaries as workflow artifact (dry run) - ${{ matrix.artifact_name }} - if: ${{ github.event.inputs.dry_run == 'true' }} - uses: actions/upload-artifact@v7 - with: - name: ${{ matrix.artifact_name }} - path: ${{ steps.package.outputs.asset_path }} - retention-days: 7 diff --git a/.github/workflows/ci-graphite.yml b/.github/workflows/ci-graphite.yml deleted file mode 100644 index bc5a0137fa..0000000000 --- a/.github/workflows/ci-graphite.yml +++ /dev/null @@ -1,231 +0,0 @@ -name: CI Graphite -on: - push: - branches: - - main - - next - pull_request: - branches: - - main - - next - merge_group: - types: - - checks_requested - -concurrency: - group: ${{ github.ref }}-graphite - cancel-in-progress: true - -jobs: - build-android-graphite: - runs-on: ubuntu-latest - env: - TURBO_CACHE_DIR: .turbo/android - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - graphite: true - - - name: Free disk space - uses: jlumbroso/free-disk-space@main - with: - tool-cache: false - android: false - dotnet: true - haskell: true - large-packages: true - docker-images: true - swap-storage: true - - - name: Cache turborepo for Android - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: ${{ env.TURBO_CACHE_DIR }} - key: ${{ runner.os }}-turborepo-android-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-turborepo-android - - - name: Install JDK - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 - with: - distribution: 'zulu' - java-version: '17' - - - name: Install NDK - uses: nttld/setup-ndk@afb4c9964b521afb97c864b7d40b11e6911bd410 # v1.5.0 - id: setup-ndk - with: - ndk-version: r27d - - - name: Set ANDROID_NDK - run: echo "ANDROID_NDK=$ANDROID_HOME/ndk-bundle" >> $GITHUB_ENV - - - name: Finalize Android SDK - run: | - /bin/bash -c "yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null" - - - name: Install Android SDK - run: | - echo "sdk.dir=$ANDROID_HOME" > $GITHUB_WORKSPACE/apps/example/android/local.properties - - - name: Cache Gradle - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: | - ~/.gradle/wrapper - ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('./apps/example/android/gradle/wrapper/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: Build example for Android - env: - JAVA_OPTS: "-XX:MaxHeapSize=6g" - run: | - yarn turbo run build:android --concurrency 1 - - - name: Cache apk - uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - env: - cache-name: cache-apk - with: - path: apps/example/android/app/build/outputs/apk/debug/app-debug.apk - key: apk-graphite-${{ github.sha }} - - - name: Upload Android APK artifact - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v6.0.0 - with: - name: android-example-apk-graphite - path: apps/example/android/app/build/outputs/apk/debug/app-debug.apk - - test-android-graphite: - needs: build-android-graphite - runs-on: ubuntu-latest - timeout-minutes: 60 - env: - TURBO_CACHE_DIR: .turbo/android - steps: - - name: checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - graphite: true - - - name: Setup Android SDK - uses: android-actions/setup-android@v4 - - - name: Install Android SDK tools - run: | - echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV - echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH - echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH - echo "$ANDROID_HOME/emulator" >> $GITHUB_PATH - - - name: Enable KVM group perms - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - - - name: Restore APK - id: cache-apk - uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 - with: - path: apps/example/android/app/build/outputs/apk/debug/app-debug.apk - key: apk-graphite-${{ github.sha }} - - - name: Start Package Manager - working-directory: apps/example/ - run: E2E=true yarn start & - - - name: Run Android Emulator Tests - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: 30 - arch: x86_64 - profile: Nexus 5X - force-avd-creation: true - emulator-options: -no-snapshot-save -no-window -gpu swangle_indirect -noaudio -no-boot-anim - disable-animations: true - script: | - # Wait for Metro bundler - sleep 10 - - # Install and launch app - adb install -r apps/example/android/app/build/outputs/apk/debug/app-debug.apk - adb shell monkey -p com.microsoft.reacttestapp 1 - - # Run tests - cd packages/skia && CI=true yarn test -i e2e/Path --testPathIgnorePatterns Paragraphs - - - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v6.0.0 - if: failure() - with: - path: packages/skia/src/__tests__/snapshots/ - name: tests-snapshots-screenshots - - - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v6.0.0 - if: failure() - with: - path: apps/docs/static/ - name: tests-docs-screenshots - - build-test-ios-graphite: - runs-on: macos-latest-xlarge - env: - TURBO_CACHE_DIR: .turbo/ios - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - graphite: true - - - name: Cache turborepo for iOS - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: ${{ env.TURBO_CACHE_DIR }} - key: ${{ runner.os }}-turborepo-ios-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-turborepo-ios- - - - name: Check turborepo cache for iOS - run: | - TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:ios --cache-dir=\"${{ env.TURBO_CACHE_DIR }}\" --dry=json)).tasks.find(t => t.task === 'build:ios').cache.status") - - if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then - echo "turbo_cache_hit=1" >> $GITHUB_ENV - fi - - - name: Install CocoaPods - working-directory: apps/example/ios - run: pod install - - - name: Start Package Manager - working-directory: apps/example - run: E2E=true yarn start & - - - name: Build example for iOS - working-directory: apps/example - run: yarn ios --simulator 'iPhone 16 Pro' - - - name: Run e2e tests - working-directory: packages/skia - run: CI=true E2E=true yarn test -i Paths diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index fb2d86dd97..0000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,392 +0,0 @@ -name: CI -on: - push: - branches: - - main - - next - pull_request: - branches: - - main - - next - merge_group: - types: - - checks_requested - -concurrency: - group: ${{ github.ref }} - cancel-in-progress: true - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - - run: pip install cpplint - - run: cpplint --linelength=230 --filter=-legal/copyright,-whitespace/indent,-whitespace/comments,-whitespace/ending_newline,-build/include_order,-runtime/references,-readability/todo,-whitespace/blank_line,-whitespace/todo,-runtime/int,-build/c++11,-whitespace/parens --exclude=package/cpp/skia --exclude=package/apple --exclude=package/android/build --exclude=package/node_modules --recursive package - - - name: Install clang-format - run: sudo apt-get update && sudo apt-get install -y clang-format-18 - - # - name: Clang Format Check - # working-directory: packages/skia - # run: | - # yarn clang-format - # if [[ `git status --porcelain` ]]; then - # echo "ERROR: clang-format would modify files. Please run 'yarn clang-format' and commit the changes." - # echo "Files that would be modified:" - # git status --porcelain - # echo "Diff of changes:" - # git diff - # exit 1 - # fi - - - name: Lint files - run: yarn lint - - - name: Typecheck files - run: yarn tsc - - test: - runs-on: macos-latest - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Test - run: yarn test - - build-library: - runs-on: ubuntu-latest - outputs: - run_id: ${{ github.run_id }} - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Build package - run: yarn build - - - name: Pack package - working-directory: packages/skia - run: yarn pack - - - name: Upload package artifact - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v6.0.0 - with: - name: package-tgz - path: packages/skia/package.tgz - - - name: Build dry run release - working-directory: packages/skia - run: | - npx semantic-release --dry-run - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - YARN_NPM_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - test-package-e2e: - needs: build-library - uses: ./.github/workflows/test-skia-package.yml - with: - skia_version: artifact:${{ needs.build-library.outputs.run_id }} - test_ios: true - test_android: true - test_web: true - - build-windows-library: - runs-on: windows-latest - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Build package - run: yarn build - - build-android: - runs-on: ubuntu-latest - env: - TURBO_CACHE_DIR: .turbo/android - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Free disk space - run: | - echo "Disk usage before cleanup:" - df -h - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf /opt/hostedtoolcache/CodeQL - sudo docker image prune -af || true - sudo apt-get clean - echo "Disk usage after cleanup:" - df -h - - - name: Cache turborepo for Android - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: ${{ env.TURBO_CACHE_DIR }} - key: ${{ runner.os }}-turborepo-android-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-turborepo-android - - - name: Install JDK - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 - with: - distribution: 'zulu' - java-version: '17' - - - name: Install NDK - uses: nttld/setup-ndk@afb4c9964b521afb97c864b7d40b11e6911bd410 # v1.5.0 - id: setup-ndk - with: - ndk-version: r27d - - - name: Set ANDROID_NDK - run: echo "ANDROID_NDK=$ANDROID_HOME/ndk-bundle" >> $GITHUB_ENV - - - name: Finalize Android SDK - run: | - /bin/bash -c "yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null" - - - name: Install Android SDK - run: | - echo "sdk.dir=$ANDROID_HOME" > $GITHUB_WORKSPACE/apps/example/android/local.properties - - - name: Cache Gradle - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: | - ~/.gradle/wrapper - ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('./apps/example/android/gradle/wrapper/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: Build example for Android - env: - JAVA_OPTS: "-XX:MaxHeapSize=6g" - run: | - yarn turbo run build:android --concurrency 1 - - - name: Cache apk - uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - env: - cache-name: cache-apk - with: - path: apps/example/android/app/build/outputs/apk/debug/app-debug.apk - key: apk-${{ github.sha }} - - - name: Upload Android APK artifact - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v6.0.0 - with: - name: android-example-apk - path: apps/example/android/app/build/outputs/apk/debug/app-debug.apk - - test-android: - needs: build-android - runs-on: ubuntu-latest - timeout-minutes: 60 - env: - TURBO_CACHE_DIR: .turbo/android - steps: - - name: checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Setup Android SDK - uses: android-actions/setup-android@v4 - - - name: Install Android SDK tools - run: | - echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV - echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH - echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH - echo "$ANDROID_HOME/emulator" >> $GITHUB_PATH - - - name: Enable KVM group perms - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - - - name: Restore APK - id: cache-apk - uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 - with: - path: apps/example/android/app/build/outputs/apk/debug/app-debug.apk - key: apk-${{ github.sha }} - - - name: Start Package Manager - working-directory: apps/example/ - run: E2E=true yarn start & - - - name: Run Android Emulator Tests - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: 30 - arch: x86_64 - profile: Nexus 5X - force-avd-creation: true - emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim - disable-animations: true - script: | - # Wait for Metro bundler - sleep 10 - - # Install and launch app - adb install -r apps/example/android/app/build/outputs/apk/debug/app-debug.apk - adb shell monkey -p com.microsoft.reacttestapp 1 - - # Run tests - cd packages/skia && CI=true yarn e2e --testPathIgnorePatterns Paragraphs - - - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v6.0.0 - if: failure() - with: - path: packages/skia/src/__tests__/snapshots/ - name: tests-snapshots-screenshots - - - uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v6.0.0 - if: failure() - with: - path: apps/docs/static/ - name: tests-docs-screenshots - - build-test-ios: - runs-on: macos-latest-xlarge - env: - TURBO_CACHE_DIR: .turbo/ios - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Cache turborepo for iOS - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: ${{ env.TURBO_CACHE_DIR }} - key: ${{ runner.os }}-turborepo-ios-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-turborepo-ios- - - - name: Check turborepo cache for iOS - run: | - TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:ios').cache.status") - - if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then - echo "turbo_cache_hit=1" >> $GITHUB_ENV - fi - - - name: Install CocoaPods - working-directory: apps/example/ios - run: pod install - - - name: Start Package Manager - working-directory: apps/example - run: E2E=true yarn start & - - - name: Build example for iOS - working-directory: apps/example - run: yarn ios --simulator 'iPhone 16 Pro' - - - name: Run e2e tests - working-directory: packages/skia - run: CI=true yarn e2e - - build-test-macos: - runs-on: macos-latest - env: - TURBO_CACHE_DIR: .turbo/macos - steps: - - name: Checkout - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Cache turborepo for macOS - uses: actions/cache@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4 - with: - path: ${{ env.TURBO_CACHE_DIR }} - key: ${{ runner.os }}-turborepo-macos-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-turborepo-macos- - - - name: Build example for macOS - run: yarn turbo run build:macos --concurrency 1 - - # build-test-macos-catalyst: - # runs-on: macos-latest - # steps: - # - name: Checkout - # uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - # with: - # submodules: recursive - - # - name: Setup - # uses: ./.github/actions/setup - # with: - # github_token: ${{ secrets.GITHUB_TOKEN }} - - # - name: Install CocoaPods and enable Catalyst - # working-directory: apps/example - # run: yarn pod:install:catalyst - - # - name: Build example for macOS Catalyst - # working-directory: apps/example/ios - # run: xcodebuild -workspace example.xcworkspace -scheme ReactTestApp -destination 'platform=macOS,arch=arm64,variant=Mac Catalyst' -configuration Debug build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml deleted file mode 100644 index ecd71ce21c..0000000000 --- a/.github/workflows/cla.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Contributor License Agreement (CLA) - -on: - pull_request_target: - types: [opened, synchronize] - issue_comment: - types: [created] - -jobs: - cla: - runs-on: ubuntu-latest - if: | - (github.event.issue.pull_request - && !github.event.issue.pull_request.merged_at - && contains(github.event.comment.body, 'signed') - ) - || (github.event.pull_request && !github.event.pull_request.merged) - steps: - - uses: Shopify/shopify-cla-action@v1 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - cla-token: ${{ secrets.CLA_TOKEN }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index df3b495096..0000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Deploy Documentation - -on: - workflow_dispatch: - branches: - - main - -jobs: - build_and_deploy_docs: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@0c366fd6a839edf440554fa01a7085ccba70ac98 # v5.0.0 - with: - submodules: recursive - - - name: Setup - uses: ./.github/actions/setup - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Build Documentation - run: | - cd apps/docs - yarn install - yarn build - - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./apps/docs/build - user_name: github-actions[bot] - user_email: 41898282+github-actions[bot]@users.noreply.github.com diff --git a/.github/workflows/test-skia-package.yml b/.github/workflows/test-skia-package.yml deleted file mode 100644 index 07ea874ff4..0000000000 --- a/.github/workflows/test-skia-package.yml +++ /dev/null @@ -1,486 +0,0 @@ -name: Test Skia Package (Reusable) - -on: - workflow_call: - inputs: - skia_version: - description: 'Skia version to test (version number, "latest", URL to .tgz, or "artifact:RUN_ID")' - required: true - type: string - test_ios: - description: 'Run iOS tests' - required: false - type: boolean - default: true - test_android: - description: 'Run Android tests' - required: false - type: boolean - default: true - simulator_device: - description: 'iOS Simulator device' - required: false - default: 'iPhone 16 Pro' - type: string - android_api_level: - description: 'Android API level' - required: false - default: '30' - type: string - android_device: - description: 'Android device profile' - required: false - default: 'Nexus 5X' - type: string - test_web: - description: 'Run Web tests' - required: false - type: boolean - default: true - -jobs: - test-skia-ios: - if: inputs.test_ios - runs-on: macos-latest-xlarge - timeout-minutes: 30 - - steps: - - name: Checkout repository - uses: actions/checkout@v6.0.2 - - - name: Setup Node.js - uses: actions/setup-node@v6.3.0 - with: - node-version: '20' - - - name: Setup Yarn - run: | - corepack enable - yarn --version - - - name: List available simulators - run: xcrun simctl list devices - - - name: Create test directory - run: | - mkdir -p /Users/runner/skia-test-app - cd /Users/runner/skia-test-app - pwd - - - name: Create Expo app with Skia template - uses: nick-fields/retry@v4 - with: - timeout_minutes: 10 - max_attempts: 3 - retry_wait_seconds: 120 - command: | - cd /Users/runner/skia-test-app - echo "Creating Expo app with Skia template..." - yarn create expo-app my-app -e with-skia - - - name: Download artifact package if specified - if: startsWith(inputs.skia_version, 'artifact:') - run: | - ARTIFACT_ID=$(echo "${{ inputs.skia_version }}" | sed 's/artifact://') - echo "Downloading artifact ID: $ARTIFACT_ID" - gh run download --repo Shopify/react-native-skia $ARTIFACT_ID -n package-tgz -D /tmp - env: - GH_TOKEN: ${{ github.token }} - - - name: Install React Native Skia - working-directory: /Users/runner/skia-test-app/my-app - run: | - VERSION="${{ inputs.skia_version }}" - if [ "$VERSION" == "latest" ]; then - echo "Installing @shopify/react-native-skia@latest..." - yarn add @shopify/react-native-skia@latest - elif [[ "$VERSION" == artifact:* ]]; then - echo "Installing @shopify/react-native-skia from downloaded artifact..." - yarn add @shopify/react-native-skia@file:/tmp/package.tgz - elif [[ "$VERSION" == http* ]]; then - echo "Installing @shopify/react-native-skia from URL: $VERSION" - yarn add @shopify/react-native-skia@"$VERSION" - else - echo "Installing @shopify/react-native-skia@$VERSION..." - yarn add @shopify/react-native-skia@"$VERSION" - fi - - - name: Show installed Skia version - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installed React Native Skia version:" - yarn list @shopify/react-native-skia --depth=0 - - - name: Install compatible Worklets version - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing react-native-worklets@^0.7.1 for Reanimated compatibility..." - yarn add react-native-worklets@^0.7.1 - - - name: Install TypeScript dependencies - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing TypeScript dependencies..." - yarn expo install typescript @types/react - - - name: Install Expo Dev Client - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing expo-dev-client..." - yarn expo install expo-dev-client - - - name: Prebuild native directories - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Generating native iOS directory..." - yarn expo prebuild --platform ios - - - name: Install iOS dependencies - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing iOS dependencies..." - cd ios - pod install --repo-update - - - name: Start Metro bundler - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Starting Metro bundler in background..." - yarn expo start --dev-client & - sleep 10 - - - name: Build and run iOS app - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Building and running iOS app on simulator: ${{ inputs.simulator_device }}..." - yarn expo run:ios --device "${{ inputs.simulator_device }}" - - - name: Wait for app to launch - run: | - echo "Waiting for app to launch and stabilize..." - sleep 30 - - - name: Capture simulator screenshot - if: always() - run: | - SIMULATOR_ID=$(xcrun simctl list devices | grep "${{ inputs.simulator_device }}" | grep -E 'Booted' | head -n 1 | cut -d '(' -f 2 | cut -d ')' -f 1) - if [ -n "$SIMULATOR_ID" ]; then - echo "Capturing screenshot from simulator ID: $SIMULATOR_ID" - xcrun simctl io $SIMULATOR_ID screenshot /Users/runner/skia-test-screenshot-ios.png - else - echo "No booted simulator found" - fi - - - name: Upload screenshot - if: always() - uses: actions/upload-artifact@v7 - with: - name: ios-simulator-screenshot-${{ github.run_id }} - path: /Users/runner/skia-test-screenshot-ios.png - if-no-files-found: ignore - - - name: Print test summary - if: always() - run: | - echo "================================================================" - echo "iOS Test Summary:" - echo "================================================================" - echo "✓ Created Expo app with Skia template" - echo "✓ Installed @shopify/react-native-skia@${{ inputs.skia_version }}" - echo "✓ Installed expo-dev-client" - echo "✓ Built and ran iOS app on ${{ inputs.simulator_device }}" - echo "================================================================" - - test-skia-android: - if: inputs.test_android - runs-on: macos-latest-large - timeout-minutes: 60 - - steps: - - name: Checkout repository - uses: actions/checkout@v6.0.2 - - - name: Setup Node.js - uses: actions/setup-node@v6.3.0 - with: - node-version: '20' - - - name: Setup Yarn - run: | - corepack enable - yarn --version - - - name: Setup Java - uses: actions/setup-java@v5 - with: - distribution: 'zulu' - java-version: '17' - - - name: Download Android system image - run: $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "system-images;android-${{ inputs.android_api_level }};default;x86_64" - - - name: Create Android emulator - run: | - echo "Creating Android emulator..." - $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd -n test_avd --device '${{ inputs.android_device }}' --package "system-images;android-${{ inputs.android_api_level }};default;x86_64" --sdcard 512M --force - - - name: Create test directory - run: | - mkdir -p /Users/runner/skia-test-app - cd /Users/runner/skia-test-app - pwd - - - name: Create Expo app with Skia template - uses: nick-fields/retry@v4 - with: - timeout_minutes: 10 - max_attempts: 3 - retry_wait_seconds: 120 - command: | - cd /Users/runner/skia-test-app - echo "Creating Expo app with Skia template..." - yarn create expo-app my-app -e with-skia - - - name: Download artifact package if specified - if: startsWith(inputs.skia_version, 'artifact:') - run: | - ARTIFACT_ID=$(echo "${{ inputs.skia_version }}" | sed 's/artifact://') - echo "Downloading artifact ID: $ARTIFACT_ID" - gh run download --repo Shopify/react-native-skia $ARTIFACT_ID -n package-tgz -D /tmp - env: - GH_TOKEN: ${{ github.token }} - - - name: Install React Native Skia - working-directory: /Users/runner/skia-test-app/my-app - run: | - VERSION="${{ inputs.skia_version }}" - if [ "$VERSION" == "latest" ]; then - echo "Installing @shopify/react-native-skia@latest..." - yarn add @shopify/react-native-skia@latest - elif [[ "$VERSION" == artifact:* ]]; then - echo "Installing @shopify/react-native-skia from downloaded artifact..." - yarn add @shopify/react-native-skia@file:/tmp/package.tgz - elif [[ "$VERSION" == http* ]]; then - echo "Installing @shopify/react-native-skia from URL: $VERSION" - yarn add @shopify/react-native-skia@"$VERSION" - else - echo "Installing @shopify/react-native-skia@$VERSION..." - yarn add @shopify/react-native-skia@"$VERSION" - fi - - - name: Show installed Skia version - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installed React Native Skia version:" - yarn list @shopify/react-native-skia --depth=0 - - - name: Install compatible Worklets version - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing react-native-worklets@^0.7.1 for Reanimated compatibility..." - yarn add react-native-worklets@^0.7.1 - - - name: Install TypeScript dependencies - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing TypeScript dependencies..." - yarn expo install typescript @types/react - - - name: Install Expo Dev Client - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing expo-dev-client..." - yarn expo install expo-dev-client - - - name: Prebuild native directories - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Generating native Android directory..." - yarn expo prebuild --platform android - - - name: Start Android emulator - run: | - echo "Starting Android emulator in background..." - $ANDROID_HOME/emulator/emulator -memory 4096 -avd test_avd -wipe-data -no-window -gpu angle_indirect -no-snapshot -noaudio -no-boot-anim & - - - name: Wait for emulator to boot - run: | - echo "Waiting for Android emulator to boot..." - adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done;' - echo "Emulator is ready" - adb devices - timeout-minutes: 10 - - - name: Start Metro bundler - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Starting Metro bundler in background..." - yarn expo start --dev-client & - sleep 10 - - - name: Build and run Android app - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Building and running Android app on emulator..." - yarn expo run:android - - - name: Wait for app to launch - run: | - echo "Waiting for app to launch and stabilize..." - sleep 120 - - - name: Capture emulator screenshot - if: always() - run: | - echo "Capturing screenshot from Android emulator..." - adb exec-out screencap -p > /Users/runner/skia-test-screenshot-android.png || echo "Failed to capture screenshot" - - - name: Upload screenshot - if: always() - uses: actions/upload-artifact@v7 - with: - name: android-emulator-screenshot-${{ github.run_id }} - path: /Users/runner/skia-test-screenshot-android.png - if-no-files-found: ignore - - - name: Print test summary - if: always() - run: | - echo "================================================================" - echo "Android Test Summary:" - echo "================================================================" - echo "✓ Created Expo app with Skia template" - echo "✓ Installed @shopify/react-native-skia@${{ inputs.skia_version }}" - echo "✓ Installed expo-dev-client" - echo "✓ Built and ran Android app on API level ${{ inputs.android_api_level }}" - echo "================================================================" - - test-skia-web: - if: inputs.test_web - runs-on: macos-latest-large - timeout-minutes: 30 - - steps: - - name: Checkout repository - uses: actions/checkout@v6.0.2 - - - name: Setup Node.js - uses: actions/setup-node@v6.3.0 - with: - node-version: '20' - - - name: Setup Yarn - run: | - corepack enable - yarn --version - - - name: Create test directory - run: | - mkdir -p /Users/runner/skia-test-app - cd /Users/runner/skia-test-app - pwd - - - name: Create Expo app with Skia template - uses: nick-fields/retry@v4 - with: - timeout_minutes: 10 - max_attempts: 3 - retry_wait_seconds: 120 - command: | - cd /Users/runner/skia-test-app - echo "Creating Expo app with Skia template..." - yarn create expo-app my-app -e with-skia - - - name: Download artifact package if specified - if: startsWith(inputs.skia_version, 'artifact:') - run: | - ARTIFACT_ID=$(echo "${{ inputs.skia_version }}" | sed 's/artifact://') - echo "Downloading artifact ID: $ARTIFACT_ID" - gh run download --repo Shopify/react-native-skia $ARTIFACT_ID -n package-tgz -D /tmp - env: - GH_TOKEN: ${{ github.token }} - - - name: Install React Native Skia - working-directory: /Users/runner/skia-test-app/my-app - run: | - VERSION="${{ inputs.skia_version }}" - if [ "$VERSION" == "latest" ]; then - echo "Installing @shopify/react-native-skia@latest..." - yarn add @shopify/react-native-skia@latest - elif [[ "$VERSION" == artifact:* ]]; then - echo "Installing @shopify/react-native-skia from downloaded artifact..." - yarn add @shopify/react-native-skia@file:/tmp/package.tgz - elif [[ "$VERSION" == http* ]]; then - echo "Installing @shopify/react-native-skia from URL: $VERSION" - yarn add @shopify/react-native-skia@"$VERSION" - else - echo "Installing @shopify/react-native-skia@$VERSION..." - yarn add @shopify/react-native-skia@"$VERSION" - fi - - - name: Show installed Skia version - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installed React Native Skia version:" - yarn list @shopify/react-native-skia --depth=0 - - - name: Install compatible Worklets version - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing react-native-worklets@^0.7.1 for Reanimated compatibility..." - yarn add react-native-worklets@^0.7.1 - - - name: Install TypeScript dependencies - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Installing TypeScript dependencies..." - yarn expo install typescript @types/react - - - name: Install repo dependencies for Playwright - run: yarn install --immutable - - - name: Install Playwright dependencies - run: | - echo "Installing Playwright..." - yarn playwright install chromium - yarn playwright install-deps chromium - - - name: Start web server - working-directory: /Users/runner/skia-test-app/my-app - run: | - echo "Starting web server in background..." - yarn expo start --web & - sleep 30 - - - name: Wait for web app to be ready - run: | - echo "Waiting for web app to be accessible..." - timeout 60 bash -c 'until curl -s http://localhost:8081 > /dev/null; do sleep 2; done' || echo "Web server may not be fully ready" - echo "Waiting additional time for app to fully render..." - sleep 30 - - - name: Take screenshot - if: always() - run: | - echo "Taking screenshot of web app..." - yarn playwright screenshot http://localhost:8081 /Users/runner/skia-test-screenshot-web.png || echo "Failed to capture screenshot" - - - name: Upload screenshot - if: always() - uses: actions/upload-artifact@v7 - with: - name: web-screenshot-${{ github.run_id }} - path: /Users/runner/skia-test-screenshot-web.png - if-no-files-found: ignore - - - name: Print test summary - if: always() - run: | - echo "================================================================" - echo "Web Test Summary:" - echo "================================================================" - echo "✓ Created Expo app with Skia template" - echo "✓ Installed @shopify/react-native-skia@${{ inputs.skia_version }}" - echo "✓ Started web server" - echo "✓ Web app accessible at http://localhost:8081" - echo "================================================================" diff --git a/.github/workflows/test-skia-release.yml b/.github/workflows/test-skia-release.yml deleted file mode 100644 index 712d1a9f36..0000000000 --- a/.github/workflows/test-skia-release.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Test Latest Skia Release on iOS and Android - -on: - workflow_dispatch: - inputs: - skia_version: - description: 'Skia version to test (version number, "latest", URL to .tgz, or "artifact:RUN_ID")' - required: false - default: 'latest' - type: string - simulator_device: - description: 'iOS Simulator device' - required: false - default: 'iPhone 16 Pro' - type: string - android_api_level: - description: 'Android API level' - required: false - default: '30' - type: string - android_device: - description: 'Android device profile' - required: false - default: 'Nexus 5X' - type: string - test_ios: - description: 'Run iOS tests' - required: false - default: true - type: boolean - test_android: - description: 'Run Android tests' - required: false - default: true - type: boolean - test_web: - description: 'Run Web tests' - required: false - default: true - type: boolean - -jobs: - test-skia: - uses: ./.github/workflows/test-skia-package.yml - with: - skia_version: ${{ inputs.skia_version }} - test_ios: ${{ inputs.test_ios }} - test_android: ${{ inputs.test_android }} - test_web: ${{ inputs.test_web }} - simulator_device: ${{ inputs.simulator_device }} - android_api_level: ${{ inputs.android_api_level }} - android_device: ${{ inputs.android_device }} diff --git a/.gitmodules b/.gitmodules index 561c25ba38..e69de29bb2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +0,0 @@ -[submodule "externals/skia"] - path = externals/skia - url = https://chromium.googlesource.com/skia/ - branch = chrome/m147 -[submodule "externals/depot_tools"] - path = externals/depot_tools - url = https://chromium.googlesource.com/chromium/tools/depot_tools.git diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore deleted file mode 100644 index eb4c5e3281..0000000000 --- a/apps/docs/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -.cache diff --git a/apps/docs/README.md b/apps/docs/README.md deleted file mode 100644 index 55d0c3ef41..0000000000 --- a/apps/docs/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Website - -This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. - -### Installation - -``` -$ yarn -``` - -### Local Development - -``` -$ yarn start -``` - -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -### Build - -``` -$ yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -### Deployment - -``` -$ GIT_USER= USE_SSH=true yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/apps/docs/babel.config.js b/apps/docs/babel.config.js deleted file mode 100644 index bfd75dbdfc..0000000000 --- a/apps/docs/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve("@docusaurus/core/lib/babel/preset")], -}; diff --git a/apps/docs/blog/authors.yml b/apps/docs/blog/authors.yml deleted file mode 100644 index ae6cc77b28..0000000000 --- a/apps/docs/blog/authors.yml +++ /dev/null @@ -1,12 +0,0 @@ -chrfalch: - name: Christian Falch - title: React Native Skia Maintainer - url: https://github.com/chrfalch - image_url: https://github.com/chrfalch.png - -wcandillon: - name: William Candillon - title: React Native Skia Maintainer - url: https://github.com/wcandillon - image_url: https://github.com/wcandillon.png - diff --git a/apps/docs/docs/animated-images.md b/apps/docs/docs/animated-images.md deleted file mode 100644 index 8ab1acaf0f..0000000000 --- a/apps/docs/docs/animated-images.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -id: animated-images -title: Animated Images -sidebar_label: Animated Images -slug: /animated-images ---- - -React Native Skia supports animated images. Supported formats are GIF and animated WebP. - -## Using Reanimated - -If you use Reanimated, we offer a `useAnimatedImageValue` hook that does everything automatically. `useAnimatedImageValue` returns a shared value that automatically updates on every frame. - -In the example below, we display and animate a GIF using Reanimated. The shared value is first null, and once the image is loaded, it will update with an `SkImage` object on every frame. - -```tsx twoslash -import React from "react"; -import { - Canvas, - Image, - useAnimatedImageValue, -} from "@shopify/react-native-skia"; - -export const AnimatedImages = () => { - // This can be an animated GIF or WebP file - const bird = useAnimatedImageValue( - require("../../assets/birdFlying.gif") - ); - return ( - - - - ); -}; - -``` - -![bird](assets/bird.gif) - -There is a second optional parameter available to control the pausing of the animation via a shared value. - -```tsx twoslash -import React from "react"; -import {Pressable} from "react-native"; -import {useSharedValue} from "react-native-reanimated"; -import { - Canvas, - Image, - useAnimatedImageValue, -} from "@shopify/react-native-skia"; - -export const AnimatedImages = () => { - const isPaused = useSharedValue(false); - // This can be an animated GIF or WebP file - const bird = useAnimatedImageValue( - require("../../assets/birdFlying.gif"), - isPaused - ); - return ( - isPaused.value = !isPaused.value}> - - - - - ); -}; - -``` - -## Manual API - -To load an image as a `SkAnimatedImage` object, we offer a `useAnimatedImage` hook: - -```tsx twoslash -import {useAnimatedImage} from "@shopify/react-native-skia"; - -// bird is an SkAnimatedImage -const bird = useAnimatedImage( - require("../../assets/birdFlying.gif") -)!; -// SkAnimatedImage offers 4 methods: decodeNextFrame(), getCurrentFrame(), currentFrameDuration(), and getFrameCount() -// getCurrentFrame() returns a regular SkImage -const image = bird.getCurrentFrame(); -// decode the next frame -bird.decodeNextFrame(); -// fetch the current frame number -const currentFrame = bird.currentFrameDuration(); -// fetch the total number of frames -const frameCount = bird.getFrameCount(); -console.log({ frameCount, currentFrame, image }); -``` diff --git a/apps/docs/docs/animations/gestures.md b/apps/docs/docs/animations/gestures.md deleted file mode 100644 index da751f2887..0000000000 --- a/apps/docs/docs/animations/gestures.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -id: gestures -title: Gestures -sidebar_label: Gestures -slug: /animations/gestures ---- - -When integrating with [reanimated](/docs/animations/animations), we recommend using [react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/). - -We've prepared a few [tutorials](/docs/tutorials#-gestures) that showcase the use of advanced gestures within the context of Skia drawings. - -```tsx twoslash -import { useWindowDimensions } from "react-native"; -import { Canvas, Circle, Fill } from "@shopify/react-native-skia"; -import { GestureDetector, Gesture } from "react-native-gesture-handler"; -import { useSharedValue, withDecay } from "react-native-reanimated"; - -export const AnimationWithTouchHandler = () => { - const { width } = useWindowDimensions(); - const leftBoundary = 0; - const rightBoundary = width; - const translateX = useSharedValue(width / 2); - - const gesture = Gesture.Pan() - .onChange((e) => { - translateX.value += e.changeX; - }) - .onEnd((e) => { - translateX.value = withDecay({ - velocity: e.velocityX, - clamp: [leftBoundary, rightBoundary], - }); - }); - - return ( - - - - - - - ); -}; -``` - -## Element Tracking -A common use-case involves activating gestures only for a specific element on the Canvas. The Gesture Handler excels in this area as it can account for all the transformations applied to an element, such as translations, scaling, and rotations. To track each element, overlay an animated view on it, ensuring that the same transformations applied to the canvas element are mirrored on the animated view. - -In the example below, each circle is tracked separately by two gesture handlers. - -```tsx twoslash -import { View } from "react-native"; -import { Canvas, Circle, Fill } from "@shopify/react-native-skia"; -import { GestureDetector, Gesture } from "react-native-gesture-handler"; -import Animated, { useSharedValue, useAnimatedStyle } from "react-native-reanimated"; - -const radius = 30; - -export const ElementTracking = () => { - // The position of the ball - const x = useSharedValue(100); - const y = useSharedValue(100); - // This style will be applied to the "invisible" animated view - // that overlays the ball - const style = useAnimatedStyle(() => ({ - position: "absolute", - top: -radius, - left: -radius, - width: radius * 2, - height: radius * 2, - transform: [{ translateX: x.value }, { translateY: y.value }], - })); - // The gesture handler for the ball - const gesture = Gesture.Pan().onChange((e) => { - x.value += e.x; - y.value += e.y; - }); - return ( - - - - - - - - - - ); -}; -``` diff --git a/apps/docs/docs/animations/hooks.md b/apps/docs/docs/animations/hooks.md deleted file mode 100644 index eb53796e6a..0000000000 --- a/apps/docs/docs/animations/hooks.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -id: hooks -title: Hooks -sidebar_label: Hooks -slug: /animations/hooks ---- - -Below are animations hooks we provide when using React Native Skia with Reanimated. -We also provide hooks for [creating textures](/docs/animations/textures) when integrating with Reanimated. - -## usePathInterpolation - -This hook interpolates between different path values based on a progress value, providing smooth transitions between the provided paths. - -Paths need to be interpolatable, meaning they must contain the same number and types of commands. If the paths have different commands or different numbers of commands, the interpolation may not behave as expected. Ensure that all paths in the `outputRange` array are structured similarly for proper interpolation. -To interpolate two completely different paths, we found the [flubber library](https://github.com/veltman/flubber) to work well with Skia ([see example](https://github.com/wcandillon/can-it-be-done-in-react-native/blob/master/season5/src/Headspace/Play.tsx#L16)). - -```tsx twoslash -import React, { useEffect } from 'react'; -import { useSharedValue, withTiming } from 'react-native-reanimated'; -import { Skia, usePathInterpolation, Canvas, Path } from '@shopify/react-native-skia'; - -const angryPath = Skia.Path.MakeFromSVGString("M 16 25 C 32 27 43 28 49 28 C 54 28 62 28 73 26 C 66 54 60 70 55 74 C 51 77 40 75 27 55 C 25 50 21 40 27 55 Z")!; -const normalPath = Skia.Path.MakeFromSVGString("M 21 31 C 31 32 39 32 43 33 C 67 35 80 36 81 38 C 84 42 74 57 66 60 C 62 61 46 59 32 50 C 24 44 20 37 21 31 Z")!; -const goodPath = Skia.Path.MakeFromSVGString("M 21 45 C 21 37 24 29 29 25 C 34 20 38 18 45 18 C 58 18 69 30 69 45 C 69 60 58 72 45 72 C 32 72 21 60 21 45 Z")!; - -const Demo = () => { - const progress = useSharedValue(0); - useEffect(() => { - progress.value = withTiming(1, { duration: 1000 }); - }, []); - - const path = usePathInterpolation(progress, [0, 0.5, 1], [angryPath, normalPath, goodPath]); - return ( - - - - ); -}; -``` - -## usePathValue - -This hooks offers an easy way to animate paths. -Behind the scene, it make sure that everything is done as efficiently as possible. -There is an optional second parameter available to set the default path value. - -```tsx twoslash -import {useSharedValue, withSpring} from "react-native-reanimated"; -import {Gesture, GestureDetector} from "react-native-gesture-handler"; -import {usePathValue, Canvas, Path, processTransform3d, Skia} from "@shopify/react-native-skia"; - -const rrct = Skia.PathBuilder.Make() - .addRRect(Skia.RRectXY(Skia.XYWHRect(0, 0, 100, 100), 10, 10)) - .build(); - -export const FrostedCard = () => { - const rotateY = useSharedValue(0); - - const gesture = Gesture.Pan().onChange((event) => { - rotateY.value -= event.changeX / 300; - }); - - const clip = usePathValue( - () => { - "worklet"; - }, - rrct, - (path) => { - "worklet"; - return path.transform( - processTransform3d([ - { translate: [50, 50] }, - { perspective: 300 }, - { rotateY: rotateY.value }, - { translate: [-50, -50] }, - ]) - ); - } - ); - return ( - - - - - - ); -}; -``` - -## useClock - -This hook returns a number indicating the time in milliseconds since the hook was activated. - -```tsx twoslash -import { Canvas, useClock, vec, Circle } from "@shopify/react-native-skia"; -import { useDerivedValue } from "react-native-reanimated"; - -export default function App() { - const t = useClock(); - - const transform = useDerivedValue(() => { - const scale = (2 / (3 - Math.cos(2 * t.value))) * 200; - return [ - { translateX: scale * Math.cos(t.value) }, - { translateY: scale * (Math.sin(2 * t.value) / 2) }, - ]; - }); - - return ( - - - - ); -} -``` - -## useRectBuffer - -Creates an array for rectangle to be animated. -Can be used by any component that takes an array of rectangles as property, like the [Atlas API](/docs/shapes/atlas). - -```tsx twoslash -import {useRectBuffer} from "@shopify/react-native-skia"; - -const width = 256; -const size = 10; -const rects = 100; -// Important to not forget the worklet directive -const rectBuffer = useRectBuffer(rects, (rect, i) => { - "worklet"; - rect.setXYWH((i * size) % width, Math.floor(i / (width / size)) * size, size, size); -}); -``` - -## useRSXformBuffer - -Creates an array for [rotate scale transforms](/docs/shapes/atlas#rsxform) to be animated. -Can be used by any component that takes an array of rotate scale transforms as property, like the [Atlas API](/docs/shapes/atlas). - -```tsx twoslash -import {useRSXformBuffer} from "@shopify/react-native-skia"; -import {useSharedValue} from "react-native-reanimated"; - -const xforms = 100; -const pos = useSharedValue({ x: 0, y: 0 }); -// Important to not forget the worklet directive -const transforms = useRSXformBuffer(xforms, (val, _i) => { - "worklet"; - const r = Math.atan2(pos.value.y, pos.value.x); - val.set(Math.cos(r), Math.sin(r), 0, 0); -}); -``` \ No newline at end of file diff --git a/apps/docs/docs/animations/reanimated3.md b/apps/docs/docs/animations/reanimated3.md deleted file mode 100644 index d26f142bfb..0000000000 --- a/apps/docs/docs/animations/reanimated3.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -id: animations -title: Animations -sidebar_label: Animations -slug: /animations/animations ---- - -React Native Skia offers integration with [Reanimated v3 and above](https://docs.swmansion.com/react-native-reanimated/), enabling the execution of animations on the UI thread. - -React Native Skia supports the direct usage of Reanimated's shared and derived values as properties. There is no need for functions like `createAnimatedComponent` or `useAnimatedProps`; simply pass the Reanimated values directly as properties. - -```tsx twoslash -import {useEffect} from "react"; -import {Canvas, Circle, Group} from "@shopify/react-native-skia"; -import { - useDerivedValue, - useSharedValue, - withRepeat, - withTiming, -} from "react-native-reanimated"; - -export const HelloWorld = () => { - const size = 256; - const r = useSharedValue(0); - const c = useDerivedValue(() => size - r.value); - useEffect(() => { - r.value = withRepeat(withTiming(size * 0.33, { duration: 1000 }), -1); - }, [r, size]); - return ( - - - - - - - - ); -}; -``` - -We offer some [Skia specific animation hooks](/docs/animations/hooks), especially for paths. - -## Colors - -For colors, React Native Skia uses a different storage format from Reanimated. -This means that [`interpolateColor`](https://docs.swmansion.com/react-native-reanimated/docs/utilities/interpolateColor/) from Reanimated won't work out of the box. -Instead you can use `interpolateColors` from React Native Skia. - -```tsx twoslash -import { - Canvas, - LinearGradient, - Fill, - // Use this function instead of interpolateColor from Reanimated - interpolateColors, - vec, -} from "@shopify/react-native-skia"; -import { useEffect } from "react"; -import { useWindowDimensions } from "react-native"; -import { - useDerivedValue, - useSharedValue, - withRepeat, - withTiming, -} from "react-native-reanimated"; - -const startColors = [ - "rgba(34, 193, 195, 0.4)", - "rgba(34,193,195,0.4)", - "rgba(63,94,251,1)", - "rgba(253,29,29,0.4)", -]; -const endColors = [ - "rgba(0,212,255,0.4)", - "rgba(253,187,45,0.4)", - "rgba(252,70,107,1)", - "rgba(252,176,69,0.4)", -]; - -export const AnimatedGradient = () => { - const { width, height } = useWindowDimensions(); - const colorsIndex = useSharedValue(0); - useEffect(() => { - colorsIndex.value = withRepeat( - withTiming(startColors.length - 1, { - duration: 4000, - }), - -1, - true - ); - }, []); - const gradientColors = useDerivedValue(() => { - return [ - interpolateColors(colorsIndex.value, [0, 1, 2, 3], startColors), - interpolateColors(colorsIndex.value, [0, 1, 2, 3], endColors), - ]; - }); - return ( - - - - - - ); -}; -``` diff --git a/apps/docs/docs/animations/textures.md b/apps/docs/docs/animations/textures.md deleted file mode 100644 index a071c37b26..0000000000 --- a/apps/docs/docs/animations/textures.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -id: textures -title: Textures -sidebar_label: Textures -slug: /animations/textures ---- - -In React Native Skia, we can use Reanimated to create textures on the UI thread directly. - -## `useTexture` - -This hook allows you to create textures from React elements. -It takes a React element and the dimensions of the texture as arguments and returns a Reanimated shared value that contains the texture. - -```tsx twoslash -import { useWindowDimensions } from "react-native"; -import { useTexture } from "@shopify/react-native-skia"; -import { Image, Rect, rect, Canvas, Fill } from "@shopify/react-native-skia"; -import React from "react"; - -const Demo = () => { - const {width, height} = useWindowDimensions(); - const texture = useTexture( - , - { width, height } - ); - return ( - - - - ) -} -``` - -## `useImageAsTexture` - -This hook allows you to upload an image to the GPU. -It accepts an image source as argument. -It will first load the image from its source and then upload it to the GPU. - -```tsx twoslash -import { useWindowDimensions } from "react-native"; -import { useImageAsTexture } from "@shopify/react-native-skia"; -import { Image, Rect, rect, Canvas, Fill } from "@shopify/react-native-skia"; -import React from "react"; - -const Demo = () => { - const {width, height} = useWindowDimensions(); - const texture = useImageAsTexture( - require("./assets/image.png") - ); - return ( - - - - ) -} -``` - -## `usePictureAsTexture` - -The hook allows you to create a texture from an `SkPicture`. -This is useful to either generate the drawing commands outside the React lifecycle or using the imperative API to build a texture. - -```tsx twoslash -import {useWindowDimensions} from "react-native"; -import { usePictureAsTexture } from "@shopify/react-native-skia"; -import { Image, Rect, rect, Canvas, Fill, Skia } from "@shopify/react-native-skia"; -import React from "react"; - -const rec = Skia.PictureRecorder(); -const canvas = rec.beginRecording(); -canvas.drawColor(Skia.Color("cyan")); -const picture = rec.finishRecordingAsPicture(); - -const Demo = () => { - const {width, height} = useWindowDimensions(); - const texture = usePictureAsTexture( - picture, - { width, height } - ); - return ( - - - - ) -} -``` - -## Under the hood - -Reanimated 2 provides a [`runOnUI`](https://docs.swmansion.com/react-native-reanimated/docs/threading/runOnUI) function that enables the execution of JavaScript code on the UI thread. This function is particularly useful for creating GPU textures that can be rendered directly onto an onscreen canvas. - -```tsx twoslash -import { useEffect } from "react"; -import { runOnUI, useSharedValue } from "react-native-reanimated"; -import type { SharedValue } from "react-native-reanimated"; -import { Skia, Canvas, Image } from "@shopify/react-native-skia"; -import type { SkImage } from "@shopify/react-native-skia"; - -const createTexture = (image: SharedValue) => { - "worklet"; - const surface = Skia.Surface.MakeOffscreen(200, 200)!; - const canvas = surface.getCanvas(); - canvas.drawColor(Skia.Color("cyan")); - surface.flush(); - image.value = surface.makeImageSnapshot(); -} - -const Demo = () => { - const image = useSharedValue(null); - useEffect(() => { - runOnUI(createTexture)(image); - }, []); - - return ( - - - - ); -}; -``` - -This example demonstrates how to create a texture, draw a cyan color onto it, and then display it using the `Image` component from `@shopify/react-native-skia`. The `runOnUI` function ensures that the texture creation and drawing operations are performed on the UI thread for optimal performance. - -Make sure that you have installed the necessary packages and configured your project to use Reanimated 2 and `@shopify/react-native-skia` before running this code. diff --git a/apps/docs/docs/assets/bird.gif b/apps/docs/docs/assets/bird.gif deleted file mode 100644 index 201cd20713..0000000000 Binary files a/apps/docs/docs/assets/bird.gif and /dev/null differ diff --git a/apps/docs/docs/assets/color-filters/matrix.png b/apps/docs/docs/assets/color-filters/matrix.png deleted file mode 100644 index 60c01899d8..0000000000 Binary files a/apps/docs/docs/assets/color-filters/matrix.png and /dev/null differ diff --git a/apps/docs/docs/assets/fitbox/hello.png b/apps/docs/docs/assets/fitbox/hello.png deleted file mode 100644 index 77cff4de8c..0000000000 Binary files a/apps/docs/docs/assets/fitbox/hello.png and /dev/null differ diff --git a/apps/docs/docs/assets/group/origin-transform.png b/apps/docs/docs/assets/group/origin-transform.png deleted file mode 100644 index a82747a588..0000000000 Binary files a/apps/docs/docs/assets/group/origin-transform.png and /dev/null differ diff --git a/apps/docs/docs/assets/group/paint-assignment.png b/apps/docs/docs/assets/group/paint-assignment.png deleted file mode 100644 index 964d5699a0..0000000000 Binary files a/apps/docs/docs/assets/group/paint-assignment.png and /dev/null differ diff --git a/apps/docs/docs/assets/group/simple-transform.png b/apps/docs/docs/assets/group/simple-transform.png deleted file mode 100644 index f1fc7c554a..0000000000 Binary files a/apps/docs/docs/assets/group/simple-transform.png and /dev/null differ diff --git a/apps/docs/docs/assets/images/contain.png b/apps/docs/docs/assets/images/contain.png deleted file mode 100644 index fdbda8df5d..0000000000 Binary files a/apps/docs/docs/assets/images/contain.png and /dev/null differ diff --git a/apps/docs/docs/assets/images/cover.png b/apps/docs/docs/assets/images/cover.png deleted file mode 100644 index f4a8ccd578..0000000000 Binary files a/apps/docs/docs/assets/images/cover.png and /dev/null differ diff --git a/apps/docs/docs/assets/images/fill.png b/apps/docs/docs/assets/images/fill.png deleted file mode 100644 index 475180f208..0000000000 Binary files a/apps/docs/docs/assets/images/fill.png and /dev/null differ diff --git a/apps/docs/docs/assets/images/fitHeight.png b/apps/docs/docs/assets/images/fitHeight.png deleted file mode 100644 index 7781d03b51..0000000000 Binary files a/apps/docs/docs/assets/images/fitHeight.png and /dev/null differ diff --git a/apps/docs/docs/assets/images/fitWidth.png b/apps/docs/docs/assets/images/fitWidth.png deleted file mode 100644 index e5fb838b32..0000000000 Binary files a/apps/docs/docs/assets/images/fitWidth.png and /dev/null differ diff --git a/apps/docs/docs/assets/images/none.png b/apps/docs/docs/assets/images/none.png deleted file mode 100644 index c7508d6cbb..0000000000 Binary files a/apps/docs/docs/assets/images/none.png and /dev/null differ diff --git a/apps/docs/docs/assets/images/scaleDown.png b/apps/docs/docs/assets/images/scaleDown.png deleted file mode 100644 index fdbda8df5d..0000000000 Binary files a/apps/docs/docs/assets/images/scaleDown.png and /dev/null differ diff --git a/apps/docs/docs/assets/mask-filters/blur-inner.png b/apps/docs/docs/assets/mask-filters/blur-inner.png deleted file mode 100644 index 02b45c3cd0..0000000000 Binary files a/apps/docs/docs/assets/mask-filters/blur-inner.png and /dev/null differ diff --git a/apps/docs/docs/assets/mask-filters/blur-normal.png b/apps/docs/docs/assets/mask-filters/blur-normal.png deleted file mode 100644 index dc5d5f4345..0000000000 Binary files a/apps/docs/docs/assets/mask-filters/blur-normal.png and /dev/null differ diff --git a/apps/docs/docs/assets/mask-filters/blur-outer.png b/apps/docs/docs/assets/mask-filters/blur-outer.png deleted file mode 100644 index 7483e95928..0000000000 Binary files a/apps/docs/docs/assets/mask-filters/blur-outer.png and /dev/null differ diff --git a/apps/docs/docs/assets/mask-filters/blur-solid.png b/apps/docs/docs/assets/mask-filters/blur-solid.png deleted file mode 100644 index df6e71b769..0000000000 Binary files a/apps/docs/docs/assets/mask-filters/blur-solid.png and /dev/null differ diff --git a/apps/docs/docs/assets/path-effects/corner.png b/apps/docs/docs/assets/path-effects/corner.png deleted file mode 100644 index 3cfac5bc6b..0000000000 Binary files a/apps/docs/docs/assets/path-effects/corner.png and /dev/null differ diff --git a/apps/docs/docs/assets/path-effects/dash.png b/apps/docs/docs/assets/path-effects/dash.png deleted file mode 100644 index 22de2e6c80..0000000000 Binary files a/apps/docs/docs/assets/path-effects/dash.png and /dev/null differ diff --git a/apps/docs/docs/assets/path-effects/discrete.png b/apps/docs/docs/assets/path-effects/discrete.png deleted file mode 100644 index 709bc9f5e8..0000000000 Binary files a/apps/docs/docs/assets/path-effects/discrete.png and /dev/null differ diff --git a/apps/docs/docs/assets/path-effects/line2d.png b/apps/docs/docs/assets/path-effects/line2d.png deleted file mode 100644 index 627017b3d1..0000000000 Binary files a/apps/docs/docs/assets/path-effects/line2d.png and /dev/null differ diff --git a/apps/docs/docs/assets/path-effects/path1d.png b/apps/docs/docs/assets/path-effects/path1d.png deleted file mode 100644 index e383708b5d..0000000000 Binary files a/apps/docs/docs/assets/path-effects/path1d.png and /dev/null differ diff --git a/apps/docs/docs/assets/path-effects/path2d.png b/apps/docs/docs/assets/path-effects/path2d.png deleted file mode 100644 index 4385ed03bf..0000000000 Binary files a/apps/docs/docs/assets/path-effects/path2d.png and /dev/null differ diff --git a/apps/docs/docs/backdrop-filters.md b/apps/docs/docs/backdrop-filters.md deleted file mode 100644 index d8ffbb9e6a..0000000000 --- a/apps/docs/docs/backdrop-filters.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: backdrops-filters -title: Backdrop Filters -sidebar_label: Backdrop Filters -slug: /backdrops-filters ---- - -In Skia, backdrop filters are equivalent to their [CSS counterpart](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter). They allow you to apply image filters such as blurring to the area behind a [clipping mask](/docs/group#clipping-operations). A backdrop filter extends the [Group component](/docs/group#clipping-operations). All properties from the [group component](/docs/group) can be applied to a backdrop filter. - -The [clipping mask](/docs/group#clipping-operations) will be used to restrict the area of the backdrop filter. - -## Backdrop Filter - -Applies an image filter to the area behind the canvas or behind a defined clipping mask. The first child of a backdrop filter is the image filter to use. All properties from the [group component](/docs/group) can be applied to a backdrop filter. - -### Example - -Apply a black and white color matrix to the clipping area: - -```tsx twoslash -import { - Canvas, - BackdropFilter, - Image, - ColorMatrix, - useImage, -} from "@shopify/react-native-skia"; - -// https://kazzkiq.github.io/svg-color-filter/ -const BLACK_AND_WHITE = [ - 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -]; - -export const Filter = () => { - const image = useImage(require("./assets/oslo.jpg")); - - return ( - - - } - /> - - ); -}; -``` - - - -## Backdrop Blur - -Creates a backdrop blur. All properties from the [group component](/docs/group) can be applied to a backdrop filter. - -| Name | Type | Description | -| :--- | :------- | :---------- | -| blur | `number` | Blur radius | - -## Example - -```tsx twoslash -import { - Canvas, - Fill, - Image, - BackdropBlur, - useImage, -} from "@shopify/react-native-skia"; - -export const Filter = () => { - const image = useImage(require("./assets/oslo.jpg")); - - return ( - - - - - - - ); -}; -``` - - diff --git a/apps/docs/docs/canvas/canvas.md b/apps/docs/docs/canvas/canvas.md deleted file mode 100644 index 4a9835ec01..0000000000 --- a/apps/docs/docs/canvas/canvas.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -id: canvas -title: Canvas -sidebar_label: Overview -slug: /canvas/overview ---- - -The Canvas component is the root of your Skia drawing. -You can treat it as a regular React Native view and assign a view style. -Behind the scenes, it is using its own React renderer. - -| Name | Type | Description | -|:-----|:---------|:-----------------| -| style? | `ViewStyle` | View style | -| ref? | `Ref` | Reference to the `SkiaView` object | -| onSize? | `SharedValue` | Reanimated value to which the canvas size will be assigned (see [canvas size](#canvas-size)) | -| androidWarmup? | `boolean` | Draw the first frame directly on the Android compositor. Use it for static icons or fully opaque drawings—animated or translucent canvases can misrender, so it remains opt-in. | - -## Canvas size - -The size of the canvas is available on both the UI and JS thread. - -### UI thread - -The `onSize` property receives a shared value, which will be updated whenever the canvas size changes. -You can see it in action in the example below. - -```tsx twoslash -import {useSharedValue, useDerivedValue} from "react-native-reanimated"; -import {Fill, Canvas, Rect} from "@shopify/react-native-skia"; - -const Demo = () => { - // size will be updated as the canvas size changes - const size = useSharedValue({ width: 0, height: 0 }); - const rect = useDerivedValue(() => { - const {width, height} = size.value; - return { x: 0, y: 0, width, height }; - }); - return ( - - - - ); -}; -``` - -### JS thread - -To get the canvas size on the JS thread, you can use `useLayoutEffect` and `measure()`. -Since this is a very common pattern, we offer a `useCanvasSize` hook you can use for convenience. - -```tsx twoslash -import {Fill, Canvas, Rect, useCanvasSize} from "@shopify/react-native-skia"; - -const Demo = () => { - const {ref, size: {width, height}} = useCanvasSize(); - return ( - - - - ); -}; -``` - -This example is equivalent to the code below: - -```tsx twoslash -import {useLayoutEffect, useState} from "react"; -import {Fill, Canvas, Rect, useCanvasRef} from "@shopify/react-native-skia"; - -const Demo = () => { - const ref = useCanvasRef(); - const [rect, setRect] = useState({ x: 0, y: 0, width: 0, height: 0 }); - useLayoutEffect(() => { - ref.current?.measure((_x, _y, width, height) => { - setRect({ x: 0, y: 0, width, height }); - }); - }, []); - return ( - - - - ); -}; -``` - - -## Getting a Canvas Snapshot - -You can save your drawings as an image by using the `makeImageSnapshotAsync` method. This method returns a promise that resolves to an [Image](/docs/images). -It executes on the UI thread, ensuring access to the same Skia context as your on-screen canvases, including [textures](https://shopify.github.io/react-native-skia/docs/animations/textures). - -If your drawing does not contain textures, you may also use the synchronous `makeImageSnapshot` method for simplicity. - -### Example - -```tsx twoslash -import {useEffect} from "react"; -import {Canvas, useCanvasRef, Circle} from "@shopify/react-native-skia"; - -export const Demo = () => { - const ref = useCanvasRef(); - useEffect(() => { - setTimeout(() => { - // you can pass an optional rectangle - // to only save part of the image - const image = ref.current?.makeImageSnapshot(); - if (image) { - // you can use image in an component - // Or save to file using encodeToBytes -> Uint8Array - const bytes = image.encodeToBytes(); - console.log({ bytes }); - } - }, 1000) - }); - return ( - - - - ); -}; -``` - -## Accessibility - -The Canvas component supports the same properties as a View component including its [accessibility properties](https://reactnative.dev/docs/accessibility#accessible). -You can make elements inside the canvas accessible as well by overlaying views on top of your canvas. -This is the same recipe used for [applying gestures on specific canvas elements](https://shopify.github.io/react-native-skia/docs/animations/gestures/#element-tracking). diff --git a/apps/docs/docs/canvas/contexts.md b/apps/docs/docs/canvas/contexts.md deleted file mode 100644 index d4c4d0b9c5..0000000000 --- a/apps/docs/docs/canvas/contexts.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -id: contexts -title: Contexts -sidebar_label: Contexts -slug: /canvas/contexts ---- - -React Native Skia is using its own React renderer. -It is currently impossible to automatically share a React context between two renderers. -This means that a React Native context won't be available from your drawing directly. -We recommend preparing the data needed for your drawing outside the `` element. -However, if you need to use a React context within your drawing, you must re-inject it. - -We found [its-fine](https://github.com/pmndrs/its-fine), also used by [react-three-fiber](https://github.com/pmndrs/react-three-fiber), to provide an elegant solution to this problem. - -## Using `its-fine` - -```tsx twoslash -import React from "react"; -import { Canvas, Fill } from "@shopify/react-native-skia"; -import {useTheme, ThemeProvider, ThemeContext} from "./docs/getting-started/Theme"; -import { useContextBridge, FiberProvider } from "its-fine"; - -const MyDrawing = () => { - const { primary } = useTheme(); - return ; -}; - -export const Layer = () => { - const ContextBridge = useContextBridge(); - return ( - - - - - - - ); -}; - -export const App = () => { - return ( - - - - - - ); -}; -``` - -Below is the context definition that was used in this example: - -```tsx twoslash -import type { ReactNode } from "react"; -import React, { useContext, createContext } from "react"; - -interface Theme { - primary: string; -} - -export const ThemeContext = createContext(null); - -export const ThemeProvider = ({ - primary, - children, -}: { - primary: string; - children: ReactNode; -}) => ( - - {children} - -); - -export const useTheme = () => { - const theme = useContext(ThemeContext); - if (theme === null) { - throw new Error("Theme provider not found"); - } - return theme; -}; -``` diff --git a/apps/docs/docs/canvas/rendering-modes.md b/apps/docs/docs/canvas/rendering-modes.md deleted file mode 100644 index cdbf376082..0000000000 --- a/apps/docs/docs/canvas/rendering-modes.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -id: rendering-modes -title: Rendering Modes -sidebar_label: Rendering Modes -slug: /canvas/rendering-modes ---- - -React Native Skia supports two rendering paradigms: **Retained Mode** and **Immediate Mode**. Understanding when to use each is key to building performant graphics applications. -The Retained Mode allows for extremely fast animation time with a virtually zero FFI-cost if the drawing list is updated at low frequency. The immediate mode allows for dynamic drawing list but has a higher FFI-cost to pay. -Since immediate mode uses the same `` element, you can seamlessly combine both rendering modes in a single scene. - - -## Retained Mode (Default) - -In retained mode, you declare your scene as a tree of React components. React Native Skia converts this tree into a display list that is extremely efficient to animate with Reanimated. -This approach is extremely fast and is best suited for user-interfaces and interactive graphics where the structure doesn't change at animation time. - -```tsx twoslash -import React, {useEffect} from "react"; -import { Canvas, Circle, Group } from "@shopify/react-native-skia"; -import { useSharedValue, withSpring, useDerivedValue } from "react-native-reanimated"; - -export const RetainedModeExample = () => { - const radius = useSharedValue(50); - useEffect(() => { - radius.value = withSpring(radius.value === 50 ? 100 : 50); - }, []); - return ( - - - - - - ); -}; -``` - -## Immediate Mode - -In immediate mode, you issue drawing commands directly to a canvas on every frame. This gives you complete control over what gets drawn and when, but requires you to manage the drawing logic yourself. - -React Native Skia provides immediate mode through the [Picture API](/docs/shapes/pictures). -This mode is extremely well-suited for scenes where the number of drawing commands changes on every animation frame. This is often the case for games, generative art, and particle systems where the scene changes unpredictably on each animation frame. - -```tsx twoslash -import { Canvas, Picture, Skia } from "@shopify/react-native-skia"; -import { useDerivedValue, useSharedValue, withRepeat, withTiming } from "react-native-reanimated"; -import { useEffect } from "react"; - -const size = 256; - -export const ImmediateModeExample = () => { - const progress = useSharedValue(0); - const recorder = Skia.PictureRecorder(); - const paint = Skia.Paint(); - - useEffect(() => { - progress.value = withRepeat(withTiming(1, { duration: 2000 }), -1, true); - }, [progress]); - - const picture = useDerivedValue(() => { - "worklet"; - const canvas = recorder.beginRecording(Skia.XYWHRect(0, 0, size, size)); - - // Variable number of circles based on progress - const count = Math.floor(progress.value * 20); - for (let i = 0; i < count; i++) { - const r = (i + 1) * 6; - paint.setColor(Skia.Color(`rgba(0, 122, 255, ${(i + 1) / 20})`)); - canvas.drawCircle(size / 2, size / 2, r, paint); - } - - return recorder.finishRecordingAsPicture(); - }); - - return ( - - - - ); -}; -``` - -## Choosing the Right Mode - -Here is a small list of use-cases and which mode would be best for that scenario. Keep in mind that since these modes use the same `` element they can be nicely composed with each other. For instance a game where the scene is dynamic on every animation frame and some game UI elements are built in Retained Mode. - -| Scenario | Recommended Mode | Why | -|:---------|:-----------------|:----| -| UI with animated properties | Retained | Zero FFI cost during animation | -| Data visualization | Retained | Structure usually fixed | -| Fixed number of sprites/tiles | Retained | With the [Atlas API](/docs/shapes/atlas), single draw call | -| Game with dynamic entities | Immediate | Entities created/destroyed | -| Procedural/generative art | Immediate | Dynamic drawing commands | diff --git a/apps/docs/docs/color-filters.md b/apps/docs/docs/color-filters.md deleted file mode 100644 index 07409e7d85..0000000000 --- a/apps/docs/docs/color-filters.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -id: color-filters -title: Color Filters -sidebar_label: Color Filters -slug: /color-filters ---- - -## Color Matrix - -Creates a color filter using the provided color matrix. -A playground to build color matrices is available [here](https://fecolormatrix.com/). - -| Name | Type | Description | -| :-------- | :------------ | :----------------------------------------- | -| matrix | `number[]` | Color Matrix (5x4) | -| children? | `ColorFilter` | Optional color filter to be applied first. | - -```tsx twoslash -import { - Canvas, - ColorMatrix, - Image, - useImage, -} from "@shopify/react-native-skia"; - -const MatrixColorFilter = () => { - const image = useImage(require("./assets/oslo.jpg")); - - return ( - - - - - - ); -}; -``` - - - -## BlendColor - -Creates a color filter with the given color and blend mode. - -| Name | Type | Description | -| :-------- | :------------ | :------------------------------------------------- | -| color | `Color` | Color | -| mode | `BlendMode` | see [blend modes](paint/properties.md#blendmode). | -| children? | `ColorFilter` | Optional color filter to be applied first. | - -```tsx twoslash -import { Canvas, BlendColor, Group, Circle } from "@shopify/react-native-skia"; - -const MatrixColorFilter = () => { - const r = 128; - return ( - - - - - - - - ); -}; -``` - - - -## Lerp - -Creates a color filter that is linearly interpolated between two other color filters. - -| Name | Type | Description | -| :------- | :------------ | :----------------------------------- | -| t | `number` | Value between 0 and 1. | -| children | `ColorFilter` | The two filters to interpolate from. | - -```tsx twoslash -import { - Canvas, - ColorMatrix, - Image, - useImage, - Lerp, -} from "@shopify/react-native-skia"; - -const MatrixColorFilter = () => { - const image = useImage(require("./assets/oslo.jpg")); - - const blackAndWhite = [ - 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, - ]; - const purple = [ - 1, -0.2, 0, 0, 0, 0, 1, 0, -0.1, 0, 0, 1.2, 1, 0.1, 0, 0, 0, 1.7, 1, 0, - ]; - return ( - - - - - - - - - ); -}; -``` - -## LinearToSRGBGamma - -Creates a color filter that converts between linear colors and sRGB colors. - -| Name | Type | Description | -| :-------- | :------------ | :----------------------------------------- | -| children? | `ColorFilter` | Optional color filter to be applied first. | - -```tsx twoslash -import { - Canvas, - BlendColor, - Group, - Circle, - LinearToSRGBGamma, -} from "@shopify/react-native-skia"; - -const MatrixColorFilter = () => { - const r = 128; - return ( - - - - - - - - - ); -}; -``` - -## SRGBToLinearGamma - -Creates a color filter that converts between sRGB colors and linear colors. - -| Name | Type | Description | -| :-------- | :------------ | :----------------------------------------- | -| children? | `ColorFilter` | Optional color filter to be applied first. | - -```tsx twoslash -import { - Canvas, - BlendColor, - Group, - Circle, - SRGBToLinearGamma, -} from "@shopify/react-native-skia"; - -const MatrixColorFilter = () => { - const r = 128; - return ( - - - - - - - - - ); -}; -``` diff --git a/apps/docs/docs/getting-started/Theme.tsx b/apps/docs/docs/getting-started/Theme.tsx deleted file mode 100644 index cccb4d6e4a..0000000000 --- a/apps/docs/docs/getting-started/Theme.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import type { ReactNode } from "react"; -import React, { useContext, createContext } from "react"; - -interface Theme { - primary: string; -} - -export const ThemeContext = createContext(null); - -export const ThemeProvider = ({ - primary, - children, -}: { - primary: string; - children: ReactNode; -}) => ( - {children} -); - -export const useTheme = () => { - const theme = useContext(ThemeContext); - if (theme === null) { - throw new Error("Theme provider not found"); - } - return theme; -}; diff --git a/apps/docs/docs/getting-started/bundle-size.md b/apps/docs/docs/getting-started/bundle-size.md deleted file mode 100644 index 7e14cc74ae..0000000000 --- a/apps/docs/docs/getting-started/bundle-size.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: bundle-size -title: Bundle Size -sidebar_label: Bundle Size -slug: /getting-started/bundle-size ---- - -Below is the app size increase to be expected when adding React Native Skia to your project. - -| Apple | Android | Web | -|----------|--------------| -------- | -| 6 MB | 4 MB | 2.9 MB\* | - -\*This figure is the size of the gzipped file served through a CDN ([learn more](web)). - -React Native Skia includes both prebuilt library files and C++ files that are compiled and linked with your app when being built - adding to the size of your app. - -For a regular arm 64-bit **Android** device, the increased download size will be around **4 MB** added after adding React Native Skia - on **Apple**, the increased download size will be around **6 MB**. - -Below is an explanation of how these numbers were found - using a bare-bones React Native app created with `npx react-native init` before and after adding React Native Skia. - -## Android - -_On *Android* you should use [App Bundles](https://developer.android.com/guide/app-bundle) to ensure that only the required files are downloaded to your user’s devices._ - -When building an APK in release mode, you will see an increase of 41.3 MB after adding React Native Skia. -This is because the library is built for different target architectures. -If we take `arm-64-bit` for instance, the `librnskia.so` library file is only around 3,8 MB. - -This implies that if you distribute your apps using [App Bundles](https://developer.android.com/guide/app-bundle), the increase in download size should be around 4 MB on Android devices when distributed (including an increase of 220 KB to the Javascript Bundle). - -### Apple - -Unlike Android, there is no standard way to find the app size increase on iOS - but by archiving and distributing our build using the Ad-Hoc distribution method, we'll find some numbers in the report "App Thinning Size.txt": - -**Base app:** 2,6 MB compressed, 7,2 MB uncompressed
-**With React Native Skia:** 5,2 MB compressed, 13 MB uncompressed - -Meaning that we’ve increased the size of our app by around 5,8 MB after adding React Native Skia. If we add the increased Javascript bundle of about 220 KB, we end up with about 6 MB of increased download size after including React Native Skia. - -### NPM Package - -The NPM download is bigger than these numbers indicate because we need to distribute Skia for all target platforms on both iOS and Android. diff --git a/apps/docs/docs/getting-started/headless.md b/apps/docs/docs/getting-started/headless.md deleted file mode 100644 index 4d921a4cfa..0000000000 --- a/apps/docs/docs/getting-started/headless.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -id: headless -title: Headless -sidebar_label: Headless -slug: /getting-started/headless ---- - -Thanks to its offscreen capabilities, React Native Skia can run on Node. -This means that you can use the Skia API to draw things that can be encoded and saved as images. -By default, drawings will be executed on the CPU but it is possible to also use [GPU Acceleration](#gpu-acceleration). - -## Hello World - -You will notice in the example below that the import URL looks different than the one used in React Native. There are two reasons for it. First, because Node programs don't rely on module bundlers such as Webpack, you will need to use the commonjs build of React Native Skia. Finally, we want to import the Skia APIs we need on Node without importing the one that rely on pure React Native APIs. - -```tsx -import { LoadSkiaWeb } from "@shopify/react-native-skia/lib/commonjs/web/LoadSkiaWeb"; -import { Circle, drawOffscreen, getSkiaExports, Group, makeOffscreenSurface } from "@shopify/react-native-skia/lib/commonjs/headless"; - -(async () => { - const width = 256; - const height = 256; - const size = 60; - const r = size * 0.33; - await LoadSkiaWeb(); - // Once that CanvasKit is loaded, you can access Skia via getSkiaExports() - // Alternatively you can do const {Skia} = require("@shopify/react-native-skia") - const {Skia} = getSkiaExports(); - using surface = makeOffscreenSurface(width, height); - using image = await drawOffscreen(surface, - - - - - ); - console.log(image.encodeToBase64()); -})(); -``` - -## GPU Acceleration - -React Native Skia relies on the [OffscreenCanvas API](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas) to support GPU-Accelerated offscreen surfaces. -This means, that to benefit from the GPU acceleration, you will need to provide a polyfill of the [OffscreenCanvas API](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas) on Node. -For example, [here](https://gist.github.com/wcandillon/a46e922910a814139758d6eda9d99ff8) is an OffScreenCanvas polyfill implementation that relies on WebGL using [headless-gl](https://github.com/stackgl/headless-gl). diff --git a/apps/docs/docs/getting-started/hello-world.md b/apps/docs/docs/getting-started/hello-world.md deleted file mode 100644 index b05dc7ee62..0000000000 --- a/apps/docs/docs/getting-started/hello-world.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -id: hello-world -title: Hello World -sidebar_label: Hello World -slug: /getting-started/hello-world ---- - -React Native Skia provides a declarative API using its own React Renderer. - -```tsx twoslash -import React from "react"; -import { Canvas, Circle, Group } from "@shopify/react-native-skia"; - -const App = () => { - const width = 256; - const height = 256; - const r = width * 0.33; - return ( - - - - - - - - ); -}; - -export default App; -``` - -### Result - -Hello World diff --git a/apps/docs/docs/getting-started/installation.md b/apps/docs/docs/getting-started/installation.md deleted file mode 100644 index ac0c08180d..0000000000 --- a/apps/docs/docs/getting-started/installation.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -id: installation -title: Installation -sidebar_label: Installation -slug: /getting-started/installation ---- - -React Native Skia brings the [Skia Graphics Library](https://skia.org/) to React Native. -Skia serves as the graphics engine for Google Chrome and Chrome OS, Android, Flutter, Mozilla Firefox, Firefox OS, and many other products. - -**Version compatibility:** -`react-native@>=0.79` and `react@>=19` are required.
-In addition you should make sure you're on at least `iOS 14` and `Android API level 21` or above.
-To use React Native Skia with video support, `Android API level 26` or above is required. - -For `react-native@<=0.78` and `react@<=18`, you need to use `@shopify/react-native-skia` version `1.12.4` or below. - -tvOS, macOS, and macOS Catalyst are also supported platforms. - -```sh -yarn add @shopify/react-native-skia -# or -npm install @shopify/react-native-skia -``` - -This package uses a `postinstall` script to copy Skia prebuilt binaries into the correct location for the native build systems. Some package managers require you to explicitly allow this script to run: - -- **Bun**: Add `@shopify/react-native-skia` to `trustedDependencies` in your `package.json`: - ```json - { - "trustedDependencies": ["@shopify/react-native-skia"] - } - ``` -- **Yarn (Berry/v2+)**: Make sure `enableScripts` is not set to `false` in `.yarnrc.yml`. -- **npm/Yarn Classic**: The postinstall script runs automatically. - -## Using Expo - -Expo provides a `with-skia` template, which you can use to create a new project. - -```bash -yarn create expo-app my-app -e with-skia -# or -npx create-expo-app my-app -e with-skia -``` - - - -### Bundle Size - -Below is the app size increase to be expected when adding React Native Skia to your project ([learn more](bundle-size)). - -| iOS | Android | Web | -| ---- | ------- | ------ | -| 6 MB | 4 MB | 2.9 MB | - -## iOS - -Run `pod install` on the `ios/` directory. - -## Android - -Currently, you will need Android NDK to be installed. -If you have Android Studio installed, make sure `$ANDROID_NDK` is available. -`ANDROID_NDK=/Users/username/Library/Android/sdk/ndk/` for instance. - -If the NDK is not installed, you can install it via Android Studio by going to the menu _File > Project Structure_ - -And then the _SDK Location_ section. It will show you the NDK path, or the option to download it if you don't have it installed. - -### Proguard - -If you're using Proguard, make sure to add the following rule at `proguard-rules.pro`: - -``` --keep class com.shopify.reactnative.skia.** { *; } -``` - -### TroubleShooting - -For error **_CMake 'X.X.X' was not found in SDK, PATH, or by cmake.dir property._** - -open _Tools > SDK Manager_, switch to the _SDK Tools_ tab. -Find `CMake` and click _Show Package Details_ and download compatiable version **'X.X.X'**, and apply to install. - -## Web - -To use this library in the browser, see [these instructions](/docs/getting-started/web). - -## TV - -Starting from version [1.9.0](https://github.com/Shopify/react-native-skia/releases/tag/v1.9.0) React Native Skia supports running on TV devices using [React Native TVOS](https://github.com/react-native-tvos/react-native-tvos). -Currently both Android TV and Apple TV are supported. - -:::info - -Not all features have been tested yet, so please [report](https://github.com/Shopify/react-native-skia/issues) any issues you encounter when using React Native Skia on TV devices. - -::: - -## Debugging - -We recommend using React Native DevTools to debug your JS code — see the [React Native docs](https://reactnative.dev/docs/debugging). Alternatively, you can debug both JS and platform code in VS Code and via native IDEs. If using VS Code, we recommend [Expo Tools](https://github.com/expo/vscode-expo), [Radon IDE](https://ide.swmansion.com/), or Microsoft's [React Native Tools](https://marketplace.visualstudio.com/items?itemName=msjsdiag.vscode-react-native#debugging-react-native-applications). - -## Testing with Jest - -React Native Skia test mocks use a web implementation that depends on loading CanvasKit. - -The very first step is to make sure that your Skia files are not being transformed by jest, for instance, we can add it the `transformIgnorePatterns` directive: -```js -"transformIgnorePatterns": [ - "node_modules/(?!(react-native|react-native.*|@react-native.*|@?react-navigation.*|@shopify/react-native-skia)/)" -] -``` - -You also need to add the following to your `jest.config.js` file: - -```js -// jest.config.js -module.exports = { - // Other values - testEnvironment: "@shopify/react-native-skia/jestEnv.js", - setupFilesAfterEnv: [ - "@shopify/react-native-skia/jestSetup.js", - ], -}; -``` - -The `jestEnv.js` will load CanvasKit for you and `jestEnv.js` mocks React Native Skia. -You can also have a look at the [example app](https://github.com/Shopify/react-native-skia/tree/main/apps/example) to see how Jest tests are enabled there. - - -## Playground - -We have example projects you can play with [here](https://github.com/Shopify/react-native-skia/tree/main/apps). -It would require you first to [build Skia locally](https://github.com/shopify/react-native-skia?tab=readme-ov-file#library-development) first. diff --git a/apps/docs/docs/getting-started/web.mdx b/apps/docs/docs/getting-started/web.mdx deleted file mode 100644 index 3c9e02dc3d..0000000000 --- a/apps/docs/docs/getting-started/web.mdx +++ /dev/null @@ -1,260 +0,0 @@ ---- -id: web -title: Web Support -sidebar_label: Web -slug: /getting-started/web ---- - -import {Snack} from '@site/src/components/Snack'; - -React Native Skia runs in the browser via [CanvasKit](https://skia.org/docs/user/modules/canvaskit/), a WebAssembly (WASM) build of Skia. -The CanvasKit WASM file, which is 2.9MB when gzipped, is loaded asynchronously. -Despite its considerable size, it offers flexibility in determining when and how Skia loads, giving you full control over the user experience. - -We support direct integration with [Expo](#expo) and [Remotion](#remotion). -Additionally, you'll find manual installation steps for any webpack projects. - -It should also be mentionned that React Native Skia can be used on projects without the need to install React Native Web. - -## Expo - -### Automatic configuration - -For new Expo Router projects, we recommend using the Expo Skia template which sets up web support automatically: - -```bash -yarn create expo-app my-app -e with-skia -# or -npx create-expo-app my-app -e with-skia -``` - -This template includes the proper configuration for web support out of the box, so you don't need to manually configure loading methods. - - - -### Manual configuration - -Use the `setup-skia-web` script to ensure that the `canvaskit.wasm` file is accessible within your Expo project's public folder. -If you're [loading CanvasKit from a CDN](#using-a-cdn), running the `setup-skia-web` script is unnecessary. - -```bash -$ npx expo install @shopify/react-native-skia -$ yarn setup-skia-web -``` - -Run `yarn setup-skia-web` each time you upgrade the `@shopify/react-native-skia` package. -Consider incorporating it into your `postinstall` script for convenience. - -After setup, choose your method to [Load Skia](#loading-skia). - -For existing projects using Expo Router, you can use [code-splitting](#using-code-splitting) or [deferred component registration](#using-deferred-component-registration). -If you wish to use deferred component registration with Expo Router, you need to create your own `main` property in `package.json`. -For instance, if you've created `index.tsx` and `index.web.tsx` in your root directory, update your `package.json` accordingly: -```patch -- "main": "expo-router/entry", -+ "main": "index", -``` - -Below is an example of `index.web.tsx`: - -```tsx -import '@expo/metro-runtime'; -import { App } from 'expo-router/build/qualified-entry'; -import { renderRootComponent } from 'expo-router/build/renderRootComponent'; - -import { LoadSkiaWeb } from '@shopify/react-native-skia/lib/module/web'; - -LoadSkiaWeb().then(async () => { - renderRootComponent(App); -}); -``` - -For the `index.tsx` file, directly invoke `renderRootComponent(App)`. - -## Remotion - -Follow these [installation steps](https://remotion.dev/skia) to use React Native Skia with Remotion. - -## Loading Skia - -Ensure Skia is fully loaded and initialized before importing the Skia module. -Two methods facilitate Skia's loading: -* `` for code-splitting, delaying the loading of Skia-importing components. -* `LoadSkiaWeb()` to defer root component registration until Skia loads. - -### Using Code-Splitting - -The `` component utilizes [code splitting](https://reactjs.org/docs/code-splitting.html) to preload Skia. -The following example demonstrates preloading Skia before rendering the `MySkiaComponent`: - -```tsx -import React from 'react'; -import { Text } from "react-native"; -import { WithSkiaWeb } from "@shopify/react-native-skia/lib/module/web"; - -export default function App() { - return ( - import("@/components/MySkiaComponent")} - fallback={Loading Skia...} - /> - ); -} -``` -:::info - -When using expo router in dev mode you cannot load components that are inside the app directory, as they will get evaluated by the router before CanvasKit is loaded. -Make sure the component to load lies outside the 'app' directory. - -::: - -### Using Deferred Component Registration - -The `LoadSkiaWeb()` function facilitates Skia's loading prior to the React app's initiation. -Below is an `index.web.js` example: - -```tsx -import { LoadSkiaWeb } from "@shopify/react-native-skia/lib/module/web"; - -LoadSkiaWeb().then(async () => { - const App = (await import("./src/App")).default; - AppRegistry.registerComponent("Example", () => App); -}); -``` - -## Using a CDN - -Below, CanvasKit loads via code-splitting from a CDN. -It is critical that the CDN-hosted CanvasKit version aligns with React Native Skia's requirements. - -```tsx -import { WithSkiaWeb } from "@shopify/react-native-skia/lib/module/web"; -import { version } from 'canvaskit-wasm/package.json'; - -export default function App() { - return ( - `https://cdn.jsdelivr.net/npm/canvaskit-wasm@${version}/bin/full/${file}` }} - getComponent={() => import("./MySkiaComponent")} - /> - ); -} -``` - -Alternatively, use deferred component registration: - -```tsx -import { LoadSkiaWeb } from "@shopify/react-native-skia/lib/module/web"; -import { version } from 'canvaskit-wasm/package.json'; - -LoadSkiaWeb({ - locateFile: (file) => `https://cdn.jsdelivr.net/npm/canvaskit-wasm@${version}/bin/full/${file}` -}).then(async () => { - const App = (await import("./src/App")).default; - AppRegistry.registerComponent("Example", () => App); -}); -``` - -## WebGL Contextes - -Web browsers limit the number of WebGL contexts to 16 per webpage. -Usually developers will see this error when they exceed this limit: - -``` -WARNING: Too many active WebGL contexts. Oldest context will be lost. -``` -If you canvas is static and doesn't contain animation values, you can use the `__destroyWebGLContextAfterRender={true}` prop on your Canvas components to destroy the WebGL context after rendering. -This even works with animated canvases but it will come with a performance cost as the context will be recreated on each render. - -```tsx twoslash -import { View } from 'react-native'; -import { Canvas, Fill } from "@shopify/react-native-skia"; - -export default function App() { - return ( - - { - // 20 Skia Canvases with __destroyWebGLContextAfterRender={true} - new Array(20).fill(0).map((_, i) => ( - - - - )) - } - - ); -} -``` - -## Unsupported Features - -The following React Native Skia APIs are currently unsupported on React Native Web. -To request these features, please submit [a feature request on GitHub](https://github.com/Shopify/react-native-skia/issues/new/choose). - -**Unsupported** - -* `PathEffectFactory.MakeSum()` -* `PathEffectFactory.MakeCompose()` -* `PathFactory.MakeFromText()` -* `ShaderFilter` - -## Manual webpack Installation - -To enable React Native Skia on Web using webpack, three key actions are required: - -- Ensure the `canvaskit.wasm` file is accessible to the build system. -- Configure the build system to resolve the `fs` and `path` node modules, achievable via the [node polyfill plugin](https://www.npmjs.com/package/node-polyfill-webpack-plugin). -- Update aliases for `react-native-reanimated` and `react-native/Libraries/Image/AssetRegistry` so webpack can do the bundle. - -Here is an example webpack v5 configuration accommodating React Native Skia: - -```tsx -import fs from "fs"; -import { sources } from "webpack"; -import NodePolyfillPlugin from "node-polyfill-webpack-plugin"; - -const newConfiguration = { - ...currentConfiguration, - plugins: [ - ...currentConfiguration.plugins, - // 1. Ensure wasm file availability - new (class CopySkiaPlugin { - apply(compiler) { - compiler.hooks.thisCompilation.tap("AddSkiaPlugin", (compilation) => { - compilation.hooks.processAssets.tapPromise( - { - name: "copy-skia", - stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL, - }, - async () => { - const src = require.resolve("canvaskit-wasm/bin/full/canvaskit.wasm"); - if (!compilation.getAsset(src)) { - compilation.emitAsset("/canvaskit.wasm", new sources.RawSource(await fs.promises.readFile(src))); - } - } - ); - }); - } - })(), - // 2. Polyfill fs and path modules - - - new NodePolyfillPlugin() - ], - alias: { - ...currentConfiguration.alias, - // 3. Suppress reanimated module warning - // This assumes Reanimated is installed, if not you can use false. - "react-native-reanimated/package.json": require.resolve( - "react-native-reanimated/package.json" - ), - "react-native-reanimated": require.resolve("react-native-reanimated"), - "react-native/Libraries/Image/AssetRegistry": false, - }, -} -``` - -Finally, proceed to [load Skia](#loading-skia). diff --git a/apps/docs/docs/group.md b/apps/docs/docs/group.md deleted file mode 100644 index aafce64ff6..0000000000 --- a/apps/docs/docs/group.md +++ /dev/null @@ -1,373 +0,0 @@ ---- -id: group -title: Group -sidebar_label: Group -slug: /group ---- - -The Group component is an essential construct in React Native Skia. -Group components can be deeply nested with one another. -It can apply the following operations to its children: - -- [Paint properties](#paint-properties) -- [Transformations](#transformations) -- [Clipping operations](#clipping-operations) -- [Layer Effects](#layer-effects) - -| Name | Type | Description | -| :---------- | :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| transform? | `Transform2d` | [Same API that's in React Native](https://reactnative.dev/docs/transforms) except for two differences: the default origin of the transformation is at the top-left corner (React Native views use the center), and all rotations are in radians. | -| origin? | `Point` | Sets the origin of the transformation. This property is not inherited by its children. | -| clip? | `RectOrRRectOrPath` | Rectangle, rounded rectangle, or Path to use to clip the children. | -| invertClip? | `boolean` | Invert the clipping region: parts outside the clipping region will be shown and, inside will be hidden. | -| layer? | `RefObject` | Draws the children as a bitmap and applies the effects provided by the paint. | -| zIndex? | `number` | Overrides the drawing order of the children. A child with a higher zIndex will be drawn on top of a child with a lower zIndex. The zIndex is local to the group. The default zIndex is 0. Negative values are supported. | - -The following three components are not being affected by the group properties. To apply paint effects on these component, you need to use [layer effects](#layer-effects). -In each component reference, we also document how to apply paint effects on them. -* [Picture](/docs/shapes/pictures#applying-effects) -* [SVG](/docs/images-svg#applying-effects) -* [Paragraph](/docs/text/paragraph#applying-effects) - -## Paint Properties - -Its children will inherit all paint attributes applied to a group. These attributes can be properties like `color` or `style` or children like ``, or `` for instance ([see painting](/docs/paint/overview)). - -```tsx twoslash -import { Canvas, Circle, Group } from "@shopify/react-native-skia"; - -export const PaintDemo = () => { - const r = 128; - return ( - - - {/* The paint is inherited by the following sibling and descendants. */} - - - - - - ); -}; -``` - -![Paint Assignment](assets/group/paint-assignment.png) - -## Transformations - -The transform property is identical to its [homonymous property in React Native](https://reactnative.dev/docs/transforms) except for one significant difference: in React Native, the origin of transformation is the center of the object, whereas it is the top-left position of the object in Skia. - -The origin property is a helper to set the origin of the transformation. This property is not inherited by its children. -All rotations are in radians. - -### Simple Transformation - -```tsx twoslash -import { Canvas, Fill, Group, RoundedRect } from "@shopify/react-native-skia"; - -const SimpleTransform = () => { - return ( - - - - - - - ); -}; -``` - -![Simple Transformation](assets/group/simple-transform.png) - -### Transformation of Origin - -```tsx twoslash -import { Canvas, Fill, Group, RoundedRect } from "@shopify/react-native-skia"; - -const SimpleTransform = () => { - return ( - - - - - - - ); -}; -``` - -![Origin Transformation](assets/group/origin-transform.png) - -## Clipping Operations - -`clip` provides a clipping region that sets what part of the children should be shown. -Parts inside the region are shown, while those outside are hidden. -When using `invertClip`, everything outside the clipping region will be shown, and parts inside the clipping region will be hidden. - -### Clip Rectangle - -```tsx twoslash -import { - Canvas, - Group, - Image, - useImage, - rect, - Fill, -} from "@shopify/react-native-skia"; - -const size = 256; -const padding = 32; - -const Clip = () => { - const image = useImage(require("./assets/oslo.jpg")); - const rct = rect(padding, padding, size - padding * 2, size - padding * 2); - - return ( - - - - - - - ); -}; -``` - - - -### Clip Rounded Rectangle - -```tsx twoslash -import { - Canvas, - Group, - Image, - useImage, - rrect, - rect, -} from "@shopify/react-native-skia"; - -const size = 256; -const padding = 32; -const r = 8; - -const Clip = () => { - const image = useImage(require("./assets/oslo.jpg")); - const roundedRect = rrect( - rect(padding, padding, size - padding * 2, size - padding * 2), - r, - r - ); - - return ( - - - - - - ); -}; -``` - - - -### Clip Path - -```tsx twoslash -import { - Canvas, - Group, - Image, - useImage, - Skia, -} from "@shopify/react-native-skia"; - -const Clip = () => { - const image = useImage(require("./assets/oslo.jpg")); - const star = Skia.Path.MakeFromSVGString( - "M 128 0 L 168 80 L 256 93 L 192 155 L 207 244 L 128 202 L 49 244 L 64 155 L 0 93 L 88 80 L 128 0 Z" - )!; - - return ( - - - - - - ); -}; -``` - - - -### Invert Clip - -```tsx twoslash -import { - Canvas, - Group, - Image, - useImage, - Skia, -} from "@shopify/react-native-skia"; - -const Clip = () => { - const image = useImage(require("./assets/oslo.jpg")); - const star = Skia.Path.MakeFromSVGString( - "M 128 0 L 168 80 L 256 93 L 192 155 L 207 244 L 128 202 L 49 244 L 64 155 L 0 93 L 88 80 L 128 0 Z" - )!; - - return ( - - - - - - ); -}; -``` - - - -## Layer Effects - -Using the `layer` property will create a bitmap drawing of the children. -You can use it to apply effects. -This is particularly useful to build effects that need to be applied to a group of elements and not one in particular. - -```tsx twoslash -import { - Canvas, - Group, - Circle, - Blur, - Paint, - ColorMatrix, -} from "@shopify/react-native-skia"; - -const Clip = () => { - return ( - - - - - - } - > - - - -
- ); -}; -``` - -Rasterize - -## Drawing Order (zIndex) - -The `zIndex` property allows you to control the drawing order of elements. It can be applied to a group or a drawing command. An element with a higher `zIndex` will be drawn on top of a sibling element with a lower `zIndex`. The default `zIndex` is 0, and negative values are supported. - -The `zIndex` is scoped to the parent [``](/docs/group). This means that the `zIndex` of an element only affects its drawing order relative to its siblings within the same group. A group's `zIndex` will determine its order among its sibling groups. - -### Example - -In the example below, the cyan circle (`zIndex={2}`) is drawn on top, followed by the magenta circle (`zIndex={1}`), and finally the yellow circle (`zIndex={0}`). - -```tsx twoslash -import { Canvas, Circle, Group, BlurMask } from "@shopify/react-native-skia"; - -export const ZIndexDemo = () => { - const r = 80; - const width = 256; - const height = 256; - return ( - - - - - - - - - ); -}; -``` - - -## Fitbox - -The `FitBox` component is based on the `Group` component and allows you to scale drawings to fit into a destination rectangle automatically. - -| Name | Type | Description | -| :--- | :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- | -| src | `SKRect` | Bounding rectangle of the drawing before scaling | -| dst | `SKRect` | Bounding rectangle of the drawing after scale | -| fit? | `Fit` | Method to make the image fit into the rectangle. Value can be `contain`, `fill`, `cover` `fitHeight`, `fitWidth`, `scaleDown`, `none` (default is `contain`) | - -### Example - -Consider the following SVG export. -Its bounding source rectangle is `0, 0, 664, 308`: - -```xml - - - -``` - -We would like to automatically scale that path to our canvas of size `256 x 256`: - -```tsx twoslash -import { Canvas, FitBox, Path, rect } from "@shopify/react-native-skia"; - -const Hello = () => { - return ( - - - - - - ); -}; -``` - - \ No newline at end of file diff --git a/apps/docs/docs/image-filters/assets/clamp-blur.png b/apps/docs/docs/image-filters/assets/clamp-blur.png deleted file mode 100644 index 90ccb002fb..0000000000 Binary files a/apps/docs/docs/image-filters/assets/clamp-blur.png and /dev/null differ diff --git a/apps/docs/docs/image-filters/assets/decal-blur.png b/apps/docs/docs/image-filters/assets/decal-blur.png deleted file mode 100644 index fad1fbd360..0000000000 Binary files a/apps/docs/docs/image-filters/assets/decal-blur.png and /dev/null differ diff --git a/apps/docs/docs/image-filters/blur.md b/apps/docs/docs/image-filters/blur.md deleted file mode 100644 index 37f44027e2..0000000000 --- a/apps/docs/docs/image-filters/blur.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -id: blur -title: Blur -sidebar_label: Blur -slug: /image-filters/blur ---- - -Creates an image filter that blurs its input by the separate X and Y sigmas. -The provided tile mode is used when the blur kernel goes outside the input image. - -| Name | Type | Description | -|:----------|:---------------------|:--------------------------------------------------------------| -| blur | `number` or `Vector` | The Gaussian sigma blur value | -| mode? | `TileMode` | `mirror`, `repeat`, `clamp`, or `decal` (default is `decal`). | -| children? | `ImageFilter` | Optional image filter to be applied first. | - -## Simple Blur - -```tsx twoslash -import { Canvas, Blur, Image, useImage } from "@shopify/react-native-skia"; - -const BlurImageFilter = () => { - const image = useImage(require("./assets/oslo.jpg")); - if (!image) { - return null; - } - return ( - - - - - - ); -}; -``` - -![Simple Blur](./assets/decal-blur.png) - -## With mode="clamp" - -![Clamp Blur](./assets/clamp-blur.png) diff --git a/apps/docs/docs/image-filters/displacement-map.md b/apps/docs/docs/image-filters/displacement-map.md deleted file mode 100644 index 95f885360b..0000000000 --- a/apps/docs/docs/image-filters/displacement-map.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -id: displacement-map -title: Displacement Map -sidebar_label: Displacement Map -slug: /image-filters/displacement-map ---- - -The displacement map image filter is identical to its [SVG counterpart](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDisplacementMap). The pixel values from the child image are used to displace the filtered image spatially. -The formula for the transformation looks like this: - -``` -P'(x,y) ← P( x + scale * (XC(x,y) - 0.5), y + scale * (YC(x,y) - 0.5)) -``` - -where `P(x,y)` is the child image, and `P'(x,y)` is the destination. `XC(x,y)` and `YC(x,y)` are the component values of the channel designated by `channelX` and `channelY`. - -| Name | Type | Description | -|:----------|:---------------|:--------------------------------------------------------------------------------------| -| channelX | `ColorChannel` | Color channel to be used along the X axis. Possible values are `r`, `g`, `b`, or `a` | -| channelY | `ColorChannel` | Color channel to be used along the Y axis. Possible values are `r`, `g`, `b`, or `a` | -| scale | `number` | Displacement scale factor to be used | -| children? | `ImageFilter` | Optional image filter to be applied first. | - -## Example - -We use a [Perlin Noise](/docs/shaders/perlin-noise) as a displacement map in the example below. - -```tsx twoslash -import { Canvas, Image, Turbulence, DisplacementMap, useImage } from "@shopify/react-native-skia"; - -const Filter = () => { - const image = useImage(require("./assets/oslo.jpg")); - if (!image) { - return null; - } - return ( - - - - - - - - ); -}; -``` - - diff --git a/apps/docs/docs/image-filters/morphology.md b/apps/docs/docs/image-filters/morphology.md deleted file mode 100644 index fb76b149e2..0000000000 --- a/apps/docs/docs/image-filters/morphology.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: morphology -title: Morphology -sidebar_label: Morphology -slug: /image-filters/morphology ---- - -The morphology image filter is identical to its [SVG counterpart](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMorphology). -It is used to erode or dilate the input image. -Its usefulness lies primarily in fattening or thinning effects. - -| Name | Type | Description | -|:----------|:---------------------|:--------------------------------------------------------------------| -| operator | `erode` or `dilate` | whether to erode (i.e., thin) or dilate (fatten). Default is dilate | -| radius | `number` or `Vector` | Radius of the effect. | -| children? | `ImageFilter` | Optional image filter to be applied first. | - -## Example - -```tsx twoslash -import {Canvas, Text, Morphology, useFont} from "@shopify/react-native-skia"; - -export const MorphologyDemo = () => { - const font = useFont(require("./SF-Pro.ttf"), 24); - return ( - - - - - - - - - - ); -}; -``` - - diff --git a/apps/docs/docs/image-filters/offset.md b/apps/docs/docs/image-filters/offset.md deleted file mode 100644 index 3d708c9242..0000000000 --- a/apps/docs/docs/image-filters/offset.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: offset -title: Offset -sidebar_label: Offset -slug: /image-filters/offset ---- - -This offset filter is identical to its [SVG counterpart](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feOffset). It allows offsetting the filtered image. - -| Name | Type | Description | -|:----------|:---------------|:-------------------------------------------| -| x | `number` | Offset along the X axis. | -| y | `number` | Offset along the Y axis. | -| children? | `ImageFilter` | Optional image filter to be applied first. | - -## Example - -```tsx twoslash -import { Canvas, Image, Offset, useImage, Fill } from "@shopify/react-native-skia"; - -const Filter = () => { - const image = useImage(require("./assets/oslo.jpg")); - if (!image) { - return null; - } - return ( - - - - - - - ); -}; -``` - - diff --git a/apps/docs/docs/image-filters/overview.md b/apps/docs/docs/image-filters/overview.md deleted file mode 100644 index e1d820c334..0000000000 --- a/apps/docs/docs/image-filters/overview.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: overview -title: Image Filters -sidebar_label: Overview -slug: /image-filters/overview ---- - -Image filters are effects that operate on all the color bits of pixels that make up an image. - -## Composing Filters - -Color Filters and Shaders can also be used as Image filters. -In the example below, we first apply a color matrix to the content and a blur image filter. - -```tsx twoslash -import { Canvas, Blur, Image, ColorMatrix, useImage } from "@shopify/react-native-skia"; - -const ComposeImageFilter = () => { - const image = useImage(require("./assets/oslo.jpg")); - if (!image) { - return null; - } - return ( - - - - - - - - ); -}; -``` - - diff --git a/apps/docs/docs/image-filters/runtime-shader.md b/apps/docs/docs/image-filters/runtime-shader.md deleted file mode 100644 index a28ab400ef..0000000000 --- a/apps/docs/docs/image-filters/runtime-shader.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -id: runtime-shader -title: Runtime Shader -sidebar_label: Runtime Shader -slug: /image-filters/runtime-shader ---- - -The `RuntimeShader` image filter allows you to write your own [Skia Shader](/docs/shaders/overview) as an image filter. -This component receives the currently filtered image as a shader uniform (or the implicit source image if no children are provided). - -:::info - -Because RuntimeShader doesn't take into account the pixel density scaling, we recommend applying a technique known as supersampling. [See below](#pixel-density). - -::: - - -| Name | Type | Description | -|:----------|:------------------|:---------------------------------| -| source | `SkRuntimeEffect` | Shader to use as an image filter | -| children? | `ImageFilter` | Optional image filter to be applied first | - - -## Example - -The example below generates a circle with a green mint color. -The circle is first drawn with the light blue color `#add8e6`, and the runtime shader switches the blue with the green channel: we get mint green `#ade6d8`. - -```tsx twoslash -import {Canvas, Text, RuntimeShader, Skia, Group, Circle} from "@shopify/react-native-skia"; - -const source = Skia.RuntimeEffect.Make(` -uniform shader image; - -half4 main(float2 xy) { - return image.eval(xy).rbga; -} -`)!; - -export const RuntimeShaderDemo = () => { - const r = 128; - return ( - - - - - - - ); -}; -``` - -Runtime Shader - -## Pixel Density - -`RuntimeShader` is not taking into account the pixel density scaling ([learn more why](https://issues.skia.org/issues/40044507)). -To keep the image filter output crisp, We upscale the filtered drawing to the [pixel density of the app](https://reactnative.dev/docs/pixelratio). Once the drawing is filtered, we scale it back to the original size. This can be seen in the example below. These operations must be performed on a Skia layer via the `layer` property. - -```tsx twoslash -import {Canvas, Text, RuntimeShader, Skia, Group, Circle, Paint, Fill, useFont} from "@shopify/react-native-skia"; -import {PixelRatio} from "react-native"; - -const pd = PixelRatio.get(); -const source = Skia.RuntimeEffect.Make(` -uniform shader image; - -half4 main(float2 xy) { - if (xy.x < 256 * ${pd}/2) { - return color; - } - return image.eval(xy).rbga; -} -`)!; - -export const RuntimeShaderDemo = () => { - const r = 128; - const font = useFont(require("./SF-Pro.ttf"), 24); - return ( - - - - - - } - transform={[{ scale: pd }]} - > - - - - - - ); -}; -``` - - - - - - - - - - -
With supersamplingWithout supersampling
-
- Runtime Shader -
-
-
- Runtime Shader -
-
diff --git a/apps/docs/docs/image-filters/shadows.md b/apps/docs/docs/image-filters/shadows.md deleted file mode 100644 index fd6c83b465..0000000000 --- a/apps/docs/docs/image-filters/shadows.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -id: shadows -title: Shadows -sidebar_label: Shadows -slug: /image-filters/shadows ---- - -The `DropShadow` image filter is equivalent to its [SVG counterpart](https://developer.mozilla.org/en-US/docs/Web/CSS/filter-function/drop-shadow()). -It creates a filter that draws a drop shadow under the input content. -A `shadowOnly` property renders the drop shadow, excluding the input content. -It can also render an inner shadow via the `inner` property. - -If you want to render inner shadows to a rounded rectangle, [box shadows](/shapes/box.md) are much faster. - -| Name | Type | Description | -|:------------|:--------------|:--------------------------------------------------------------| -| dx | `number` | The X offset of the shadow. | -| dy | `number` | The Y offset of the shadow. | -| blur | `number` | The blur radius for the shadow | -| color | `Color` | The color of the drop shadow | -| inner? | `boolean` | Shadows are drawn within the input content | -| shadowOnly? | `boolean` | If true, the result does not include the input content | -| children? | `ImageFilter` | Optional image filter to be applied first | - -## Drop Shadow - -The example below creates two drop shadows. -It is equivalent to the following CSS notation. - -```css -.paint { - filter: drop-shadow(12px 12px 25px #93b8c4) drop-shadow(-12px -12px 25px #c7f8ff); -} -``` - -```tsx twoslash -import { - Shadow, - Fill, - RoundedRect, - Canvas -} from "@shopify/react-native-skia"; - -const Neumorphism = () => { - return ( - - - - - - - - ); -}; -``` - -### Result - - - -## Inner Shadow - -```tsx twoslash -import { - Shadow, - Fill, - RoundedRect, - Canvas -} from "@shopify/react-native-skia"; - -const Neumorphism = () => { - return ( - - - - - - - - ); -}; -``` - -### Result - - diff --git a/apps/docs/docs/image-svg.md b/apps/docs/docs/image-svg.md deleted file mode 100644 index b8f5aaa984..0000000000 --- a/apps/docs/docs/image-svg.md +++ /dev/null @@ -1,362 +0,0 @@ ---- -id: image-svg -title: SVG Images -sidebar_label: SVG -slug: /images-svg ---- - -Draw an SVG (see [SVG Support](#svg-support)). - -If the root dimensions are in absolute units, the width/height properties have no effect since the initial viewport is fixed. - -| Name | Type | Description | -|:----------|:----------|:--------------------------------------------------------------| -| svg | `SVG` | SVG Image. | -| width? | `number` | Width of the destination image. This is used to resolve the initial viewport when the root SVG width is specified in relative units. | -| height? | `number` | Height of the destination image. This is used to resolve the initial viewport when the root SVG height is specified in relative units. | -| x? | `number` | Optional displayed x coordinate of the svg container. | -| y? | `number` | Optional displayed y coordinate of the svg container. | - -:::info - -The `ImageSVG` component doesn't follow the same painting rules as other components. -[see applying effects](#applying-effects). - -On Web, the Current Transformation Matrix (CTM) won't be applied to `ImageSVG` because the component relies on browser SVG rendering instead of CanvasKit. The SVG is rendered as a hidden image element and then imported as image data. This means transformations need to be prepared beforehand or applied through the `Group` component with explicit transform matrices. - -::: - -### Example - -```tsx twoslash -import { - Canvas, - ImageSVG, - useSVG -} from "@shopify/react-native-skia"; - -const ImageSVGDemo = () => { - // Alternatively, you can pass an SVG URL directly - // for instance: const svg = useSVG("https://upload.wikimedia.org/wikipedia/commons/f/fd/Ghostscript_Tiger.svg"); - const svg = useSVG(require("../../assets/tiger.svg")); - return ( - - { svg && ( - ) - } - - ); -}; -``` - -You can also use an inlined string as SVG (using `Skia.SVG.MakeFromString`): - -```tsx twoslash -import React from "react"; -import { Canvas, ImageSVG, Skia } from "@shopify/react-native-skia"; - -const svg = Skia.SVG.MakeFromString( - ` - - ` -)!; - -export const SVG = () => { - return ( - - - - ); -}; -``` - -### Text - -Both `Skia.SVG.MakeFromData` and `Skia.SVG.MakeFromString` accept an optional second parameter to provide custom font management for text rendering in SVGs. -This works similarly to the [Paragraph API](/docs/text/paragraph) where you can use the `useFonts` hook to load custom fonts: - -```tsx twoslash -import React from "react"; -import { Canvas, ImageSVG, Skia, useFonts } from "@shopify/react-native-skia"; - -const SVGWithCustomFonts = () => { - const fontMgr = useFonts({ - Roboto: [ - require("path/to/Roboto-Regular.ttf"), - require("path/to/Roboto-Bold.ttf") - ] - }); - - if (!fontMgr) { - return null; - } - - const svg = Skia.SVG.MakeFromString( - ` - Custom Font - `, - fontMgr - )!; - - return ( - - - - ); -}; -``` - -:::info - -On Web, both the `fontMgr` parameter (second parameter) and image resources (third parameter) are ignored as SVG rendering relies on the browser's native SVG renderer rather than Skia's SVG module. - -::: - -### Images - -Both `Skia.SVG.MakeFromData` and `Skia.SVG.MakeFromString` accept an optional third parameter to provide image resources for `` elements in SVGs. -This works similarly to [image loading in Skottie](/docs/skottie#with-assets). -You can reference images either through base64 data URIs or by providing a resource map: - -```tsx twoslash -import React from "react"; -import { Canvas, ImageSVG, Skia, useData } from "@shopify/react-native-skia"; - -const SVGWithImages = () => { - // Load an image asset - const logo = useData(require("path/to/image.png")); - - if (!logo) { - return null; - } - - // Option 1: Using base64 data URI (embedded) - const svgWithEmbeddedImage = Skia.SVG.MakeFromString( - ` - - ` - ); - - // Option 2: Using external reference with resource map - const svgWithExternalImage = Skia.SVG.MakeFromString( - ` - - `, - null, - { "logo.png": logo } - ); - - return ( - - - - ); -}; -``` - -When rendering your SVG with Skia, all fonts available in your app are also available to your SVG. -However, the way you can set the `font-family` attribute is as flexible as on the web. -```jsx -// ✅ This is really all that is supported: - -// ❌ This won't work. If MyFont is available, this syntax will be accepted. -// but it will never fallback to monospace - -// ❌ The single quote syntax won't work either. - -``` - -## Scaling the SVG - -As mentioned above, if the root dimensions are in absolute units, the width/height properties have no effect since the initial viewport is fixed. However you can access these values and use the fitbox function. - -### Example - -In the example below we scale the SVG to the canvas width and height. - -```tsx twoslash -import React from "react"; -import { Canvas, ImageSVG, Skia, rect, fitbox, Group } from "@shopify/react-native-skia"; - -const svg = Skia.SVG.MakeFromString( - ` - - ` -)!; - -const width = 256; -const height = 256; -const src = rect(0, 0, svg.width(), svg.height()); -const dst = rect(0, 0, width, height); - -export const SVG = () => { - return ( - - - - - - ); -}; -``` - - - -## Applying Effects - -The `ImageSVG` component doesn't follow the same painting rules as other components. -This is because behind the scene, we use the SVG module from Skia. -However you can apply effets using the `layer` property. - -### Opacity Example - -In the example below we apply an opacity effect via the `ColorMatrix` component. - -```tsx twoslash -import React from "react"; -import { Canvas, ImageSVG, Skia, rect, fitbox, useSVG, Group, Paint, OpacityMatrix, ColorMatrix } from "@shopify/react-native-skia"; - -const width = 256; -const height = 256; - -export const SVG = () => { - const tiger = useSVG(require("./tiger.svg")); - if (!tiger) { - return null; - } - const src = rect(0, 0, tiger.width(), tiger.height()); - const dst = rect(0, 0, width, height); - return ( - - } - > - - - - ); -}; -``` - - - -### Blur Example - -In the example below we apply a blur image filter to the SVG. - -```tsx twoslash -import React from "react"; -import { Canvas, ImageSVG, Skia, rect, fitbox, useSVG, Group, Paint, Blur } from "@shopify/react-native-skia"; - -const width = 256; -const height = 256; - -export const SVG = () => { - const tiger = useSVG(require("./tiger.svg")); - if (!tiger) { - return null; - } - const src = rect(0, 0, tiger.width(), tiger.height()); - const dst = rect(0, 0, width, height); - return ( - - }> - - - - ); -}; -``` - -### Result - - - -## SVG Support - -The [SVG module from Skia](https://github.com/google/skia/tree/main/modules/svg) displays SVGs as images. -We expect most SVG files to render correctly out of the box, especially if they come from Figma or Illustrator. -However, please be aware of some of the quirks below when using it. -Text elements currently won't render and any external XML elements such as XLink or CSS won't render. -If your SVG doesn't render correctly and you've considered all the items below, please file [an issue](https://github.com/Shopify/react-native-skia/issues/new). - -### CSS Styles - -CSS styles included in SVG are not supported. -A tool like SVGO can help with converting CSS style attributes to SVG attributes if possible. -You can use it online [here](https://jakearchibald.github.io/svgomg/). -For instance, it can normalize CSS style attributes that contain transformations to the proper `transform` property. - -### RGBA Colors - -The RGBA color syntax is not supported. Instead, it would help if you used the `fill-opacity` and `stroke-opacity` attributes. Consider the example below. - -```xml - -``` - -Would need to be rewritten as: - -```xml - -``` - -The `opacity` attribute also applies to both the `fill` and `stroke` attributes. - -### Non Supported Elements - -Below is the list of non-supported element. - * `` - * `` - * `` - * `` - * `` - * `` - * ` - - Example - - - - - -
- - - diff --git a/apps/example/index.js b/apps/example/index.js deleted file mode 100644 index 35de48950b..0000000000 --- a/apps/example/index.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * @format - */ -import { AppRegistry } from "react-native"; - -import App from "./src/App"; -import { name as appName } from "./app.json"; - -if (!Symbol.dispose) { - Symbol.dispose = Symbol.for("Symbol.dispose"); -} - -AppRegistry.registerComponent(appName, () => App); diff --git a/apps/example/index.web.js b/apps/example/index.web.js deleted file mode 100644 index 8dec729e3b..0000000000 --- a/apps/example/index.web.js +++ /dev/null @@ -1,23 +0,0 @@ -import { AppRegistry } from "react-native"; - -import App from "./src/App"; -import { name as appName } from "./app.json"; - -AppRegistry.registerComponent(appName, () => App); - -const rootTag = document.getElementById("root"); - -if (process.env.NODE_ENV !== "production") { - if (!rootTag) { - throw new Error( - 'Required HTML element with id "root" was not found in the document HTML.' - ); - } -} - -CanvasKitInit({ - locateFile: (file) => `https://unpkg.com/canvaskit-wasm/bin/full/${file}`, -}).then((CanvasKit) => { - window.CanvasKit = global.CanvasKit = CanvasKit; - AppRegistry.runApplication(appName, { rootTag }); -}); diff --git a/apps/example/ios/Podfile b/apps/example/ios/Podfile deleted file mode 100644 index bb69c54efb..0000000000 --- a/apps/example/ios/Podfile +++ /dev/null @@ -1,9 +0,0 @@ -ws_dir = Pathname.new(__dir__) -ws_dir = ws_dir.parent until - File.exist?("#{ws_dir}/node_modules/react-native-test-app/test_app.rb") || - ws_dir.expand_path.to_s == '/' -require "#{ws_dir}/node_modules/react-native-test-app/test_app.rb" - -workspace 'example.xcworkspace' - -use_test_app! :hermes_enabled => true, :new_arch_enabled => true diff --git a/apps/example/ios/Podfile.lock b/apps/example/ios/Podfile.lock deleted file mode 100644 index 667c7f4b03..0000000000 --- a/apps/example/ios/Podfile.lock +++ /dev/null @@ -1,3295 +0,0 @@ -PODS: - - boost (1.84.0) - - DoubleConversion (1.1.6) - - fast_float (8.0.0) - - FBLazyVector (0.83.1) - - fmt (11.0.2) - - glog (0.3.5) - - hermes-engine (0.14.0): - - hermes-engine/Pre-built (= 0.14.0) - - hermes-engine/Pre-built (0.14.0) - - RCT-Folly (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Default (= 2024.11.18.00) - - RCT-Folly/Default (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Fabric (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCTDeprecation (0.83.1) - - RCTRequired (0.83.1) - - RCTSwiftUI (0.83.1) - - RCTSwiftUIWrapper (0.83.1): - - RCTSwiftUI - - RCTTypeSafety (0.83.1): - - FBLazyVector (= 0.83.1) - - RCTRequired (= 0.83.1) - - React-Core (= 0.83.1) - - React (0.83.1): - - React-Core (= 0.83.1) - - React-Core/DevSupport (= 0.83.1) - - React-Core/RCTWebSocket (= 0.83.1) - - React-RCTActionSheet (= 0.83.1) - - React-RCTAnimation (= 0.83.1) - - React-RCTBlob (= 0.83.1) - - React-RCTImage (= 0.83.1) - - React-RCTLinking (= 0.83.1) - - React-RCTNetwork (= 0.83.1) - - React-RCTSettings (= 0.83.1) - - React-RCTText (= 0.83.1) - - React-RCTVibration (= 0.83.1) - - React-callinvoker (0.83.1) - - React-Core (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default (= 0.83.1) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/CoreModulesHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/Default (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/DevSupport (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default (= 0.83.1) - - React-Core/RCTWebSocket (= 0.83.1) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTActionSheetHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTAnimationHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTBlobHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTImageHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTLinkingHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTNetworkHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTSettingsHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTTextHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTVibrationHeaders (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTWebSocket (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default (= 0.83.1) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-CoreModules (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety (= 0.83.1) - - React-Core/CoreModulesHeaders (= 0.83.1) - - React-debug - - React-jsi (= 0.83.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-NativeModulesApple - - React-RCTBlob - - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.83.1) - - React-runtimeexecutor - - React-utils - - ReactCommon - - SocketRocket - - React-cxxreact (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.83.1) - - React-debug (= 0.83.1) - - React-jsi (= 0.83.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-logger (= 0.83.1) - - React-perflogger (= 0.83.1) - - React-runtimeexecutor - - React-timing (= 0.83.1) - - React-utils - - SocketRocket - - React-debug (0.83.1) - - React-defaultsnativemodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-domnativemodule - - React-featureflags - - React-featureflagsnativemodule - - React-idlecallbacksnativemodule - - React-intersectionobservernativemodule - - React-jsi - - React-jsiexecutor - - React-microtasksnativemodule - - React-RCTFBReactNativeSpec - - React-webperformancenativemodule - - SocketRocket - - Yoga - - React-domnativemodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Fabric - - React-Fabric/bridging - - React-FabricComponents - - React-graphics - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - React-runtimeexecutor - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-Fabric (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/animated (= 0.83.1) - - React-Fabric/animationbackend (= 0.83.1) - - React-Fabric/animations (= 0.83.1) - - React-Fabric/attributedstring (= 0.83.1) - - React-Fabric/bridging (= 0.83.1) - - React-Fabric/componentregistry (= 0.83.1) - - React-Fabric/componentregistrynative (= 0.83.1) - - React-Fabric/components (= 0.83.1) - - React-Fabric/consistency (= 0.83.1) - - React-Fabric/core (= 0.83.1) - - React-Fabric/dom (= 0.83.1) - - React-Fabric/imagemanager (= 0.83.1) - - React-Fabric/leakchecker (= 0.83.1) - - React-Fabric/mounting (= 0.83.1) - - React-Fabric/observers (= 0.83.1) - - React-Fabric/scheduler (= 0.83.1) - - React-Fabric/telemetry (= 0.83.1) - - React-Fabric/templateprocessor (= 0.83.1) - - React-Fabric/uimanager (= 0.83.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/animated (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/animationbackend (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/animations (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/attributedstring (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/bridging (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/componentregistry (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/componentregistrynative (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.83.1) - - React-Fabric/components/root (= 0.83.1) - - React-Fabric/components/scrollview (= 0.83.1) - - React-Fabric/components/view (= 0.83.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/legacyviewmanagerinterop (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/root (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/scrollview (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/view (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-renderercss - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-Fabric/consistency (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/core (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/dom (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/imagemanager (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/leakchecker (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/mounting (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/observers (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/observers/events (= 0.83.1) - - React-Fabric/observers/intersection (= 0.83.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/observers/events (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/observers/intersection (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/scheduler (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/observers/events - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-performancecdpmetrics - - React-performancetimeline - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/telemetry (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/templateprocessor (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/uimanager (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/uimanager/consistency (= 0.83.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererconsistency - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/uimanager/consistency (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererconsistency - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-FabricComponents (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-FabricComponents/components (= 0.83.1) - - React-FabricComponents/textlayoutmanager (= 0.83.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.83.1) - - React-FabricComponents/components/iostextinput (= 0.83.1) - - React-FabricComponents/components/modal (= 0.83.1) - - React-FabricComponents/components/rncore (= 0.83.1) - - React-FabricComponents/components/safeareaview (= 0.83.1) - - React-FabricComponents/components/scrollview (= 0.83.1) - - React-FabricComponents/components/switch (= 0.83.1) - - React-FabricComponents/components/text (= 0.83.1) - - React-FabricComponents/components/textinput (= 0.83.1) - - React-FabricComponents/components/unimplementedview (= 0.83.1) - - React-FabricComponents/components/virtualview (= 0.83.1) - - React-FabricComponents/components/virtualviewexperimental (= 0.83.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/inputaccessory (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/iostextinput (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/modal (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/rncore (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/safeareaview (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/scrollview (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/switch (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/text (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/textinput (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/unimplementedview (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/virtualview (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/virtualviewexperimental (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/textlayoutmanager (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricImage (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired (= 0.83.1) - - RCTTypeSafety (= 0.83.1) - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-jsiexecutor (= 0.83.1) - - React-logger - - React-rendererdebug - - React-utils - - ReactCommon - - SocketRocket - - Yoga - - React-featureflags (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-featureflagsnativemodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - ReactCommon/turbomodule/core - - SocketRocket - - React-graphics (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-jsi - - React-jsiexecutor - - React-utils - - SocketRocket - - React-hermes (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 0.83.1) - - React-jsi - - React-jsiexecutor (= 0.83.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-oscompat - - React-perflogger (= 0.83.1) - - React-runtimeexecutor - - SocketRocket - - React-idlecallbacksnativemodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - React-runtimeexecutor - - React-runtimescheduler - - ReactCommon/turbomodule/core - - SocketRocket - - React-ImageManager (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-Core/Default - - React-debug - - React-Fabric - - React-graphics - - React-rendererdebug - - React-utils - - SocketRocket - - React-intersectionobservernativemodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact - - React-Fabric - - React-Fabric/bridging - - React-graphics - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - React-runtimeexecutor - - React-runtimescheduler - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-jserrorhandler (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact - - React-debug - - React-featureflags - - React-jsi - - ReactCommon/turbomodule/bridging - - SocketRocket - - React-jsi (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-jsiexecutor (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact - - React-debug - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-perflogger - - React-runtimeexecutor - - React-utils - - SocketRocket - - React-jsinspector (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsi - - React-jsinspectorcdp - - React-jsinspectornetwork - - React-jsinspectortracing - - React-oscompat - - React-perflogger (= 0.83.1) - - React-runtimeexecutor - - React-utils - - SocketRocket - - React-jsinspectorcdp (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-jsinspectornetwork (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-jsinspectorcdp - - SocketRocket - - React-jsinspectortracing (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-jsi - - React-jsinspectornetwork - - React-oscompat - - React-timing - - SocketRocket - - React-jsitooling (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 0.83.1) - - React-debug - - React-jsi (= 0.83.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-runtimeexecutor - - React-utils - - SocketRocket - - React-jsitracing (0.83.1): - - React-jsi - - React-logger (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-Mapbuffer (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - SocketRocket - - React-microtasksnativemodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - ReactCommon/turbomodule/core - - SocketRocket - - react-native-safe-area-context (5.6.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - react-native-safe-area-context/common (= 5.6.2) - - react-native-safe-area-context/fabric (= 5.6.2) - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - react-native-safe-area-context/common (5.6.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - react-native-safe-area-context/fabric (5.6.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - react-native-safe-area-context/common - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - react-native-skia (0.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React - - React-callinvoker - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-NativeModulesApple (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-runtimeexecutor - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - React-networking (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsinspectornetwork - - React-jsinspectortracing - - React-performancetimeline - - React-timing - - SocketRocket - - React-oscompat (0.83.1) - - React-perflogger (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-performancecdpmetrics (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-jsi - - React-performancetimeline - - React-runtimeexecutor - - React-timing - - SocketRocket - - React-performancetimeline (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsinspectortracing - - React-perflogger - - React-timing - - SocketRocket - - React-RCTActionSheet (0.83.1): - - React-Core/RCTActionSheetHeaders (= 0.83.1) - - React-RCTAnimation (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTAnimationHeaders - - React-featureflags - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-RCTAppDelegate (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-CoreModules - - React-debug - - React-defaultsnativemodule - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-jsitooling - - React-NativeModulesApple - - React-RCTFabric - - React-RCTFBReactNativeSpec - - React-RCTImage - - React-RCTNetwork - - React-RCTRuntime - - React-rendererdebug - - React-RuntimeApple - - React-RuntimeCore - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon - - SocketRocket - - React-RCTBlob (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Core/RCTBlobHeaders - - React-Core/RCTWebSocket - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - React-RCTNetwork - - ReactCommon - - SocketRocket - - React-RCTFabric (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTSwiftUIWrapper - - React-Core - - React-debug - - React-Fabric - - React-FabricComponents - - React-FabricImage - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-networking - - React-performancecdpmetrics - - React-performancetimeline - - React-RCTAnimation - - React-RCTFBReactNativeSpec - - React-RCTImage - - React-RCTText - - React-rendererconsistency - - React-renderercss - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-RCTFBReactNativeSpec (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.83.1) - - ReactCommon - - SocketRocket - - React-RCTFBReactNativeSpec/components (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-NativeModulesApple - - React-rendererdebug - - React-utils - - ReactCommon - - SocketRocket - - Yoga - - React-RCTImage (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTImageHeaders - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - React-RCTNetwork - - ReactCommon - - SocketRocket - - React-RCTLinking (0.83.1): - - React-Core/RCTLinkingHeaders (= 0.83.1) - - React-jsi (= 0.83.1) - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - ReactCommon/turbomodule/core (= 0.83.1) - - React-RCTNetwork (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTNetworkHeaders - - React-debug - - React-featureflags - - React-jsi - - React-jsinspectorcdp - - React-jsinspectornetwork - - React-NativeModulesApple - - React-networking - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-RCTRuntime (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Core - - React-debug - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-jsitooling - - React-RuntimeApple - - React-RuntimeCore - - React-runtimeexecutor - - React-RuntimeHermes - - React-utils - - SocketRocket - - React-RCTSettings (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTSettingsHeaders - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-RCTText (0.83.1): - - React-Core/RCTTextHeaders (= 0.83.1) - - Yoga - - React-RCTVibration (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-Core/RCTVibrationHeaders - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-rendererconsistency (0.83.1) - - React-renderercss (0.83.1): - - React-debug - - React-utils - - React-rendererdebug (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - SocketRocket - - React-RuntimeApple (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker - - React-Core/Default - - React-CoreModules - - React-cxxreact - - React-featureflags - - React-jserrorhandler - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsitooling - - React-Mapbuffer - - React-NativeModulesApple - - React-RCTFabric - - React-RCTFBReactNativeSpec - - React-RuntimeCore - - React-runtimeexecutor - - React-RuntimeHermes - - React-runtimescheduler - - React-utils - - SocketRocket - - React-RuntimeCore (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact - - React-Fabric - - React-featureflags - - React-jserrorhandler - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsitooling - - React-performancetimeline - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - React-runtimeexecutor (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - React-featureflags - - React-jsi (= 0.83.1) - - React-utils - - SocketRocket - - React-RuntimeHermes (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-hermes - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-jsitooling - - React-jsitracing - - React-RuntimeCore - - React-runtimeexecutor - - React-utils - - SocketRocket - - React-runtimescheduler (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker - - React-cxxreact - - React-debug - - React-featureflags - - React-jsi - - React-jsinspectortracing - - React-performancetimeline - - React-rendererconsistency - - React-rendererdebug - - React-runtimeexecutor - - React-timing - - React-utils - - SocketRocket - - React-timing (0.83.1): - - React-debug - - React-utils (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - React-jsi (= 0.83.1) - - SocketRocket - - React-webperformancenativemodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact - - React-jsi - - React-jsiexecutor - - React-performancetimeline - - React-RCTFBReactNativeSpec - - React-runtimeexecutor - - ReactCommon/turbomodule/core - - SocketRocket - - ReactAppDependencyProvider (0.83.1): - - ReactCodegen - - ReactCodegen (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-FabricImage - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-NativeModulesApple - - React-RCTAppDelegate - - React-rendererdebug - - React-utils - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - ReactCommon (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - ReactCommon/turbomodule (= 0.83.1) - - SocketRocket - - ReactCommon/turbomodule (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.83.1) - - React-cxxreact (= 0.83.1) - - React-jsi (= 0.83.1) - - React-logger (= 0.83.1) - - React-perflogger (= 0.83.1) - - ReactCommon/turbomodule/bridging (= 0.83.1) - - ReactCommon/turbomodule/core (= 0.83.1) - - SocketRocket - - ReactCommon/turbomodule/bridging (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.83.1) - - React-cxxreact (= 0.83.1) - - React-jsi (= 0.83.1) - - React-logger (= 0.83.1) - - React-perflogger (= 0.83.1) - - SocketRocket - - ReactCommon/turbomodule/core (0.83.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.83.1) - - React-cxxreact (= 0.83.1) - - React-debug (= 0.83.1) - - React-featureflags (= 0.83.1) - - React-jsi (= 0.83.1) - - React-logger (= 0.83.1) - - React-perflogger (= 0.83.1) - - React-utils (= 0.83.1) - - SocketRocket - - ReactNativeHost (0.5.16): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTAppDelegate - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - ReactTestApp-DevSupport (4.4.7): - - React-Core - - React-jsi - - ReactTestApp-Resources (1.0.0-dev) - - RNGestureHandler (2.30.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - RNReanimated (4.2.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNReanimated/reanimated (= 4.2.2) - - RNWorklets - - SocketRocket - - Yoga - - RNReanimated/reanimated (4.2.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNReanimated/reanimated/apple (= 4.2.2) - - RNWorklets - - SocketRocket - - Yoga - - RNReanimated/reanimated/apple (4.2.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNWorklets - - SocketRocket - - Yoga - - RNScreens (4.20.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-RCTImage - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNScreens/common (= 4.20.0) - - SocketRocket - - Yoga - - RNScreens/common (4.20.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-RCTImage - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - RNSVG (15.14.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNSVG/common (= 15.14.0) - - SocketRocket - - Yoga - - RNSVG/common (15.14.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - RNWorklets (0.7.4): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNWorklets/worklets (= 0.7.4) - - SocketRocket - - Yoga - - RNWorklets/worklets (0.7.4): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNWorklets/worklets/apple (= 0.7.4) - - SocketRocket - - Yoga - - RNWorklets/worklets/apple (0.7.4): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - SocketRocket (0.7.1) - - Yoga (0.0.0) - -DEPENDENCIES: - - boost (from `../../../node_modules/react-native/third-party-podspecs/boost.podspec`) - - DoubleConversion (from `../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - - fast_float (from `../../../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - - FBLazyVector (from `../../../node_modules/react-native/Libraries/FBLazyVector`) - - fmt (from `../../../node_modules/react-native/third-party-podspecs/fmt.podspec`) - - glog (from `../../../node_modules/react-native/third-party-podspecs/glog.podspec`) - - hermes-engine (from `../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - - RCT-Folly (from `../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTDeprecation (from `../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - - RCTRequired (from `../../../node_modules/react-native/Libraries/Required`) - - RCTSwiftUI (from `../../../node_modules/react-native/ReactApple/RCTSwiftUI`) - - RCTSwiftUIWrapper (from `../../../node_modules/react-native/ReactApple/RCTSwiftUIWrapper`) - - RCTTypeSafety (from `../../../node_modules/react-native/Libraries/TypeSafety`) - - React (from `../../../node_modules/react-native/`) - - React-callinvoker (from `../../../node_modules/react-native/ReactCommon/callinvoker`) - - React-Core (from `../../../node_modules/react-native/`) - - React-Core/RCTWebSocket (from `../../../node_modules/react-native/`) - - React-CoreModules (from `../../../node_modules/react-native/React/CoreModules`) - - React-cxxreact (from `../../../node_modules/react-native/ReactCommon/cxxreact`) - - React-debug (from `../../../node_modules/react-native/ReactCommon/react/debug`) - - React-defaultsnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) - - React-domnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/dom`) - - React-Fabric (from `../../../node_modules/react-native/ReactCommon`) - - React-FabricComponents (from `../../../node_modules/react-native/ReactCommon`) - - React-FabricImage (from `../../../node_modules/react-native/ReactCommon`) - - React-featureflags (from `../../../node_modules/react-native/ReactCommon/react/featureflags`) - - React-featureflagsnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) - - React-graphics (from `../../../node_modules/react-native/ReactCommon/react/renderer/graphics`) - - React-hermes (from `../../../node_modules/react-native/ReactCommon/hermes`) - - React-idlecallbacksnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) - - React-ImageManager (from `../../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) - - React-intersectionobservernativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver`) - - React-jserrorhandler (from `../../../node_modules/react-native/ReactCommon/jserrorhandler`) - - React-jsi (from `../../../node_modules/react-native/ReactCommon/jsi`) - - React-jsiexecutor (from `../../../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern`) - - React-jsinspectorcdp (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern/cdp`) - - React-jsinspectornetwork (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern/network`) - - React-jsinspectortracing (from `../../../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`) - - React-jsitooling (from `../../../node_modules/react-native/ReactCommon/jsitooling`) - - React-jsitracing (from `../../../node_modules/react-native/ReactCommon/hermes/executor/`) - - React-logger (from `../../../node_modules/react-native/ReactCommon/logger`) - - React-Mapbuffer (from `../../../node_modules/react-native/ReactCommon`) - - React-microtasksnativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) - - react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`) - - "react-native-skia (from `../../../node_modules/@shopify/react-native-skia`)" - - React-NativeModulesApple (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - - React-networking (from `../../../node_modules/react-native/ReactCommon/react/networking`) - - React-oscompat (from `../../../node_modules/react-native/ReactCommon/oscompat`) - - React-perflogger (from `../../../node_modules/react-native/ReactCommon/reactperflogger`) - - React-performancecdpmetrics (from `../../../node_modules/react-native/ReactCommon/react/performance/cdpmetrics`) - - React-performancetimeline (from `../../../node_modules/react-native/ReactCommon/react/performance/timeline`) - - React-RCTActionSheet (from `../../../node_modules/react-native/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `../../../node_modules/react-native/Libraries/NativeAnimation`) - - React-RCTAppDelegate (from `../../../node_modules/react-native/Libraries/AppDelegate`) - - React-RCTBlob (from `../../../node_modules/react-native/Libraries/Blob`) - - React-RCTFabric (from `../../../node_modules/react-native/React`) - - React-RCTFBReactNativeSpec (from `../../../node_modules/react-native/React`) - - React-RCTImage (from `../../../node_modules/react-native/Libraries/Image`) - - React-RCTLinking (from `../../../node_modules/react-native/Libraries/LinkingIOS`) - - React-RCTNetwork (from `../../../node_modules/react-native/Libraries/Network`) - - React-RCTRuntime (from `../../../node_modules/react-native/React/Runtime`) - - React-RCTSettings (from `../../../node_modules/react-native/Libraries/Settings`) - - React-RCTText (from `../../../node_modules/react-native/Libraries/Text`) - - React-RCTVibration (from `../../../node_modules/react-native/Libraries/Vibration`) - - React-rendererconsistency (from `../../../node_modules/react-native/ReactCommon/react/renderer/consistency`) - - React-renderercss (from `../../../node_modules/react-native/ReactCommon/react/renderer/css`) - - React-rendererdebug (from `../../../node_modules/react-native/ReactCommon/react/renderer/debug`) - - React-RuntimeApple (from `../../../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) - - React-RuntimeCore (from `../../../node_modules/react-native/ReactCommon/react/runtime`) - - React-runtimeexecutor (from `../../../node_modules/react-native/ReactCommon/runtimeexecutor`) - - React-RuntimeHermes (from `../../../node_modules/react-native/ReactCommon/react/runtime`) - - React-runtimescheduler (from `../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - - React-timing (from `../../../node_modules/react-native/ReactCommon/react/timing`) - - React-utils (from `../../../node_modules/react-native/ReactCommon/react/utils`) - - React-webperformancenativemodule (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/webperformance`) - - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) - - ReactCodegen (from `build/generated/ios/ReactCodegen`) - - ReactCommon/turbomodule/core (from `../../../node_modules/react-native/ReactCommon`) - - "ReactNativeHost (from `../../../node_modules/@rnx-kit/react-native-host`)" - - ReactTestApp-DevSupport (from `../node_modules/react-native-test-app`) - - ReactTestApp-Resources (from `..`) - - RNGestureHandler (from `../../../node_modules/react-native-gesture-handler`) - - RNReanimated (from `../../../node_modules/react-native-reanimated`) - - RNScreens (from `../../../node_modules/react-native-screens`) - - RNSVG (from `../../../node_modules/react-native-svg`) - - RNWorklets (from `../../../node_modules/react-native-worklets`) - - SocketRocket (~> 0.7.1) - - Yoga (from `../../../node_modules/react-native/ReactCommon/yoga`) - -SPEC REPOS: - trunk: - - SocketRocket - -EXTERNAL SOURCES: - boost: - :podspec: "../../../node_modules/react-native/third-party-podspecs/boost.podspec" - DoubleConversion: - :podspec: "../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" - fast_float: - :podspec: "../../../node_modules/react-native/third-party-podspecs/fast_float.podspec" - FBLazyVector: - :path: "../../../node_modules/react-native/Libraries/FBLazyVector" - fmt: - :podspec: "../../../node_modules/react-native/third-party-podspecs/fmt.podspec" - glog: - :podspec: "../../../node_modules/react-native/third-party-podspecs/glog.podspec" - hermes-engine: - :podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-v0.14.0 - RCT-Folly: - :podspec: "../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" - RCTDeprecation: - :path: "../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" - RCTRequired: - :path: "../../../node_modules/react-native/Libraries/Required" - RCTSwiftUI: - :path: "../../../node_modules/react-native/ReactApple/RCTSwiftUI" - RCTSwiftUIWrapper: - :path: "../../../node_modules/react-native/ReactApple/RCTSwiftUIWrapper" - RCTTypeSafety: - :path: "../../../node_modules/react-native/Libraries/TypeSafety" - React: - :path: "../../../node_modules/react-native/" - React-callinvoker: - :path: "../../../node_modules/react-native/ReactCommon/callinvoker" - React-Core: - :path: "../../../node_modules/react-native/" - React-CoreModules: - :path: "../../../node_modules/react-native/React/CoreModules" - React-cxxreact: - :path: "../../../node_modules/react-native/ReactCommon/cxxreact" - React-debug: - :path: "../../../node_modules/react-native/ReactCommon/react/debug" - React-defaultsnativemodule: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/defaults" - React-domnativemodule: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/dom" - React-Fabric: - :path: "../../../node_modules/react-native/ReactCommon" - React-FabricComponents: - :path: "../../../node_modules/react-native/ReactCommon" - React-FabricImage: - :path: "../../../node_modules/react-native/ReactCommon" - React-featureflags: - :path: "../../../node_modules/react-native/ReactCommon/react/featureflags" - React-featureflagsnativemodule: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" - React-graphics: - :path: "../../../node_modules/react-native/ReactCommon/react/renderer/graphics" - React-hermes: - :path: "../../../node_modules/react-native/ReactCommon/hermes" - React-idlecallbacksnativemodule: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" - React-ImageManager: - :path: "../../../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" - React-intersectionobservernativemodule: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver" - React-jserrorhandler: - :path: "../../../node_modules/react-native/ReactCommon/jserrorhandler" - React-jsi: - :path: "../../../node_modules/react-native/ReactCommon/jsi" - React-jsiexecutor: - :path: "../../../node_modules/react-native/ReactCommon/jsiexecutor" - React-jsinspector: - :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern" - React-jsinspectorcdp: - :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern/cdp" - React-jsinspectornetwork: - :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern/network" - React-jsinspectortracing: - :path: "../../../node_modules/react-native/ReactCommon/jsinspector-modern/tracing" - React-jsitooling: - :path: "../../../node_modules/react-native/ReactCommon/jsitooling" - React-jsitracing: - :path: "../../../node_modules/react-native/ReactCommon/hermes/executor/" - React-logger: - :path: "../../../node_modules/react-native/ReactCommon/logger" - React-Mapbuffer: - :path: "../../../node_modules/react-native/ReactCommon" - React-microtasksnativemodule: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" - react-native-safe-area-context: - :path: "../../../node_modules/react-native-safe-area-context" - react-native-skia: - :path: "../../../node_modules/@shopify/react-native-skia" - React-NativeModulesApple: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" - React-networking: - :path: "../../../node_modules/react-native/ReactCommon/react/networking" - React-oscompat: - :path: "../../../node_modules/react-native/ReactCommon/oscompat" - React-perflogger: - :path: "../../../node_modules/react-native/ReactCommon/reactperflogger" - React-performancecdpmetrics: - :path: "../../../node_modules/react-native/ReactCommon/react/performance/cdpmetrics" - React-performancetimeline: - :path: "../../../node_modules/react-native/ReactCommon/react/performance/timeline" - React-RCTActionSheet: - :path: "../../../node_modules/react-native/Libraries/ActionSheetIOS" - React-RCTAnimation: - :path: "../../../node_modules/react-native/Libraries/NativeAnimation" - React-RCTAppDelegate: - :path: "../../../node_modules/react-native/Libraries/AppDelegate" - React-RCTBlob: - :path: "../../../node_modules/react-native/Libraries/Blob" - React-RCTFabric: - :path: "../../../node_modules/react-native/React" - React-RCTFBReactNativeSpec: - :path: "../../../node_modules/react-native/React" - React-RCTImage: - :path: "../../../node_modules/react-native/Libraries/Image" - React-RCTLinking: - :path: "../../../node_modules/react-native/Libraries/LinkingIOS" - React-RCTNetwork: - :path: "../../../node_modules/react-native/Libraries/Network" - React-RCTRuntime: - :path: "../../../node_modules/react-native/React/Runtime" - React-RCTSettings: - :path: "../../../node_modules/react-native/Libraries/Settings" - React-RCTText: - :path: "../../../node_modules/react-native/Libraries/Text" - React-RCTVibration: - :path: "../../../node_modules/react-native/Libraries/Vibration" - React-rendererconsistency: - :path: "../../../node_modules/react-native/ReactCommon/react/renderer/consistency" - React-renderercss: - :path: "../../../node_modules/react-native/ReactCommon/react/renderer/css" - React-rendererdebug: - :path: "../../../node_modules/react-native/ReactCommon/react/renderer/debug" - React-RuntimeApple: - :path: "../../../node_modules/react-native/ReactCommon/react/runtime/platform/ios" - React-RuntimeCore: - :path: "../../../node_modules/react-native/ReactCommon/react/runtime" - React-runtimeexecutor: - :path: "../../../node_modules/react-native/ReactCommon/runtimeexecutor" - React-RuntimeHermes: - :path: "../../../node_modules/react-native/ReactCommon/react/runtime" - React-runtimescheduler: - :path: "../../../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" - React-timing: - :path: "../../../node_modules/react-native/ReactCommon/react/timing" - React-utils: - :path: "../../../node_modules/react-native/ReactCommon/react/utils" - React-webperformancenativemodule: - :path: "../../../node_modules/react-native/ReactCommon/react/nativemodule/webperformance" - ReactAppDependencyProvider: - :path: build/generated/ios/ReactAppDependencyProvider - ReactCodegen: - :path: build/generated/ios/ReactCodegen - ReactCommon: - :path: "../../../node_modules/react-native/ReactCommon" - ReactNativeHost: - :path: "../../../node_modules/@rnx-kit/react-native-host" - ReactTestApp-DevSupport: - :path: "../node_modules/react-native-test-app" - ReactTestApp-Resources: - :path: ".." - RNGestureHandler: - :path: "../../../node_modules/react-native-gesture-handler" - RNReanimated: - :path: "../../../node_modules/react-native-reanimated" - RNScreens: - :path: "../../../node_modules/react-native-screens" - RNSVG: - :path: "../../../node_modules/react-native-svg" - RNWorklets: - :path: "../../../node_modules/react-native-worklets" - Yoga: - :path: "../../../node_modules/react-native/ReactCommon/yoga" - -SPEC CHECKSUMS: - boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 - DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb - fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 - FBLazyVector: 309703e71d3f2f1ed7dc7889d58309c9d77a95a4 - fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd - glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 - hermes-engine: ad676c360175e5b8af471b8ce1389e6cf4f9e1ee - RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 - RCTDeprecation: a41bbdd9af30bf2e5715796b313e44ec43eefff1 - RCTRequired: 7be34aabb0b77c3cefe644528df0fa0afad4e4d0 - RCTSwiftUI: a6c7271c39098bf00dbdad8f8ed997a59bbfbe44 - RCTSwiftUIWrapper: ff9098ccf7727e58218f2f8ea110349863f43438 - RCTTypeSafety: 27927d0ca04e419ed9467578b3e6297e37210b5c - React: 4bc1f928568ad4bcfd147260f907b4ea5873a03b - React-callinvoker: 87f8728235a0dc62e9dc19b3851c829d9347d015 - React-Core: 76bed73b02821e5630e7f2cb2e82432ee964695d - React-CoreModules: 752dbfdaeb096658aa0adc4a03ba6214815a08df - React-cxxreact: b6798528aa601c6db66e6adc7e2da2b059c8be74 - React-debug: 8978deb306f6f38c28b5091e52b0ac9f942b157e - React-defaultsnativemodule: 682b77ef4acfb298017be15f4f93c1d998deb174 - React-domnativemodule: 4c4b44f7eb68dbc3a2218db088bef318a7302017 - React-Fabric: b6f82a4d8498ce4475586f71ca8397a771fe292d - React-FabricComponents: c8695f4b11918a127c4560d66f7d3fdb01a17986 - React-FabricImage: d64f48830f63830e8ffaaf69fa487116856fbbf1 - React-featureflags: 2a46b229903e906d33dbaf9207ce57c59306c369 - React-featureflagsnativemodule: cba6c0814051a0934f8bcee4a436ee2a6bcc9754 - React-graphics: 3d0435051e1ab8904d065f8ffbe981a9fc202841 - React-hermes: 32fc9c231c1aa5c2fcfe851b0d19ee9269f88f4c - React-idlecallbacksnativemodule: f8ee42581795c4844d97147596bcc2d824c0f188 - React-ImageManager: e8f7377ef0585fd2df05559a17e01a03e187d5cf - React-intersectionobservernativemodule: b1bea12ca29accdd2eda60c87605a6030b894eb9 - React-jserrorhandler: 1a86df895b4eaf4e771abe8cf34cbb26d821f771 - React-jsi: adf8527fec197ad9d0480cc5b8945eb56de627f0 - React-jsiexecutor: 315fa2f879b43e3a9ca08f5f4b733472f7e4e8a4 - React-jsinspector: b4fd1933666bcb2549b566b40656c1e45e9d7632 - React-jsinspectorcdp: 80141710f2668e5b8f00417298d9b76b4abf90fa - React-jsinspectornetwork: 1d3ea717dbbec316cd8c21a0af53928a7bf74901 - React-jsinspectortracing: 4ce745374d4b2bfbd164cce9f8de8383d3d818a0 - React-jsitooling: fc4ac4c3b1f3f9f7fedf0c777c6ff3f244f568bd - React-jsitracing: bff08a6faeef4a9bd286487da191f5e5329e21a9 - React-logger: b8483fa08e0d62e430c76d864309d90576ca2f68 - React-Mapbuffer: 7b72a669e94662359dad4f42b5af005eb24b4e83 - React-microtasksnativemodule: cdc02da075f2857803ed63f24f5f72fc40e094c0 - react-native-safe-area-context: c00143b4823773bba23f2f19f85663ae89ceb460 - react-native-skia: 03e5c42eb263a22f9228d3cbfaa140fcaad08408 - React-NativeModulesApple: a2c3d2cbec893956a5b3e4060322db2984fff75b - React-networking: 3f98bd96893a294376e7e03730947a08d474c380 - React-oscompat: 80166b66da22e7af7fad94474e9997bd52d4c8c6 - React-perflogger: d6797918d2b1031e91a9d8f5e7fdd2c8728fb390 - React-performancecdpmetrics: 5570be61e2f97c4741c5d432c91570e8e5a39892 - React-performancetimeline: 5763499ae1991fc18dcf416e340ce7bc829bb298 - React-RCTActionSheet: 3bd5f5db9f983cf38d51bb9a7a198e2ebea94821 - React-RCTAnimation: 46a9978f27dc434dbeed16afa7b82619b690a9af - React-RCTAppDelegate: 62ecd60a2b2a8cae26ce6a066bfa59cfde97af01 - React-RCTBlob: 8285c859513023ee3cc8c806d9b59d4da078c4ba - React-RCTFabric: 05ed09347e938de985052f791a6a0698816d5761 - React-RCTFBReactNativeSpec: 83ba579fca9a51e774ac32578ef5dd3262edd7e2 - React-RCTImage: a5364d0f098692cfbf5bef1e8a63e7712ecb14b7 - React-RCTLinking: 34b63b0aa0e92d30f5d7aa2c255a8f95fa75ee8f - React-RCTNetwork: 1ef88b7a5310b8f915d3556b5b247def113191ed - React-RCTRuntime: ed29cf68a46782fec891e5afe1d8d758ca6ccd9b - React-RCTSettings: 2c45623d6c0f30851a123f621eb9d32298bcbb0c - React-RCTText: 0ee70f5dc18004b4d81b2c214267c6cbec058587 - React-RCTVibration: 88557e21e7cc3fe76b5b174cba28ff45c6def997 - React-rendererconsistency: d280314a3e7f0097152f89e815b4de821c2be8b9 - React-renderercss: f8cbf83d95c2c2bbf893d37fe50c73f046584411 - React-rendererdebug: 37216ddfcd38e49d1e92bf9052ea4bc9d7b932e5 - React-RuntimeApple: 1c0e7cb8e1c2c5775585afcaaa666ec151629a8d - React-RuntimeCore: 925fe2ca24cf8e6ed87586dbb92827306b93b83f - React-runtimeexecutor: 962dae024f6df760d029512a7d99e3f73d570935 - React-RuntimeHermes: 19a7c59ec1bc9908516f0bbc29b49425f6ec64ba - React-runtimescheduler: 62f21127cd97f4d8f164eee5150d3ce53dd36f66 - React-timing: 8757bf6fb96227c264f2d1609f4ba5c68217b8ce - React-utils: 8ab26781c2f5c2f7fafb2022c8ab39d39f231b80 - React-webperformancenativemodule: 7953b7fe519f76fa595111fe18ff3d5de131bfe9 - ReactAppDependencyProvider: 0eb286cc274abb059ee601b862ebddac2e681d01 - ReactCodegen: b8e56b780fffe6edd6405be0af4a1e3049a937f7 - ReactCommon: ac934cb340aee91282ecd6f273a26d24d4c55cae - ReactNativeHost: eef98ec49b55d88ad4cabf5a4378a12b42b551ee - ReactTestApp-DevSupport: ea18f446cff64b6c9a3e28788600c82ecf51bde6 - ReactTestApp-Resources: 1bd9ff10e4c24f2ad87101a32023721ae923bccf - RNGestureHandler: cd4be101cfa17ea6bbd438710caa02e286a84381 - RNReanimated: 8182ef6e805d04dce3618f1a843cb8d2f9ae23b4 - RNScreens: 714e10b6b554f7dc7ad9f78dcf36dc8e3fc73415 - RNSVG: 11354d28dd6cb71a59570b68c91ba6772a2d781d - RNWorklets: d9fe4a51421f69ce78bb415a7e0710c15fe61150 - SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: 5456bb010373068fc92221140921b09d126b116e - -PODFILE CHECKSUM: 87506345285a0371afb28b9c3e6daaa999c214f3 - -COCOAPODS: 1.16.2 diff --git a/apps/example/ios/enable-catalyst.js b/apps/example/ios/enable-catalyst.js deleted file mode 100755 index 963832296b..0000000000 --- a/apps/example/ios/enable-catalyst.js +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env node -// Script to enable Mac Catalyst support on the ReactTestApp project - -const fs = require('fs'); -const path = require('path'); - -const iosDir = __dirname; -const reactTestAppProject = path.join(iosDir, '../node_modules/.generated/ios/ReactTestApp.xcodeproj/project.pbxproj'); -const podsProject = path.join(iosDir, 'Pods/Pods.xcodeproj/project.pbxproj'); - -function enableCatalystInProject(projectPath, projectName) { - if (!fs.existsSync(projectPath)) { - console.log(`⚠️ Project not found at ${projectPath}`); - return; - } - - console.log(`Enabling Mac Catalyst support in ${projectName}...`); - - let content = fs.readFileSync(projectPath, 'utf8'); - let modified = content; - - // Replace SUPPORTS_MACCATALYST = NO with YES - modified = modified.replace(/SUPPORTS_MACCATALYST = NO/g, 'SUPPORTS_MACCATALYST = YES'); - - // If SUPPORTS_MACCATALYST doesn't exist at all, add it to all buildSettings sections - if (!content.includes('SUPPORTS_MACCATALYST')) { - // Find all buildSettings blocks and add SUPPORTS_MACCATALYST after PRODUCT_NAME - modified = modified.replace( - /(buildSettings = \{[^}]*PRODUCT_NAME = [^;]+;)/g, - '$1\n\t\t\t\tSUPPORTS_MACCATALYST = YES;' - ); - } - - // Also add SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD if not present - if (!modified.includes('SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD')) { - modified = modified.replace( - /SUPPORTS_MACCATALYST = YES;/g, - 'SUPPORTS_MACCATALYST = YES;\n\t\t\t\tSUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;' - ); - } - - if (content !== modified) { - fs.writeFileSync(projectPath, modified, 'utf8'); - console.log(` ✅ Mac Catalyst support enabled in ${projectName}`); - } else { - console.log(` ℹ️ Mac Catalyst already enabled in ${projectName}`); - } -} - -// Enable on ReactTestApp project -enableCatalystInProject(reactTestAppProject, 'ReactTestApp'); - -// Enable on Pods project -enableCatalystInProject(podsProject, 'Pods'); - -console.log('✅ Done! Mac Catalyst support is now enabled.'); diff --git a/apps/example/jest.config.mjs b/apps/example/jest.config.mjs deleted file mode 100644 index 622abae815..0000000000 --- a/apps/example/jest.config.mjs +++ /dev/null @@ -1,21 +0,0 @@ -const config = { - moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], - moduleNameMapper: { - "^.+.(css|styl|less|sass|scss|png|jpg|ttf|otf|woff|woff2)$": - "jest-transform-stub", - "^react-native$": "/../../node_modules/react-native", - }, - modulePathIgnorePatterns: ["/lib/typescript", "setup.(ts|tsx)$"], - testEnvironment: "@shopify/react-native-skia/jestEnv.js", - setupFilesAfterEnv: [ - "@shopify/react-native-skia/jestSetup.js", - "/../../node_modules/react-native-gesture-handler/jestSetup.js", - "/jestSetup.js", - ], - preset: "react-native", - transformIgnorePatterns: [ - "node_modules/(?!(@react-native|react-native|react-native.*|@?react-navigation.*)/)", - ], -}; - -export default config; diff --git a/apps/example/jestSetup.js b/apps/example/jestSetup.js deleted file mode 100644 index 1cc9f6999c..0000000000 --- a/apps/example/jestSetup.js +++ /dev/null @@ -1,58 +0,0 @@ -/* globals jest */ -const JestUtils = require("react-native-reanimated/lib/module/jestUtils"); -const MockReanimated = require("react-native-reanimated/mock"); - -JestUtils.setUpTests(); -global.__reanimatedWorkletInit = () => {}; - -jest.mock("expo-asset", () => ({ - useAssets: () => [[], undefined], -})); - -jest.mock("react-native-worklets", () => - require("react-native-worklets/lib/module/mock") -); - -jest.mock("react-native-reanimated", () => { - // The mock for `call` immediately calls the callback which is incorrect - // So we override it with a no-op - MockReanimated.default.call = () => {}; - MockReanimated.Extrapolation = { - CLAMP: "clamp", - }; - MockReanimated.useEvent = () => {}; - MockReanimated.scrollTo = () => {}; - MockReanimated.useFrameCallback = () => {}; - MockReanimated.convertToRGBA = () => {}; - MockReanimated.configureReanimatedLogger = () => {}; - MockReanimated.ReanimatedLogLevel = { - warn: 1, - error: 2, - }; - return MockReanimated; -}); - -const mockedNavigate = jest.fn(); - -jest.mock("@react-navigation/native", () => { - const actualNav = jest.requireActual("@react-navigation/native"); - return { - ...actualNav, - useNavigation: () => ({ - navigate: mockedNavigate, - }), - }; -}); - -jest.mock("react-native-gesture-handler", () => { - return { - ...jest.requireActual("react-native-gesture-handler"), - GestureDetector: jest.fn(), - }; -}); - -jest.mock("react-native-screens", () => ({ - ...jest.requireActual("react-native-screens"), - enableScreens: jest.fn(), - Screen: ({ children }) => children, -})); diff --git a/apps/example/macos/Podfile b/apps/example/macos/Podfile deleted file mode 100644 index 39bfb76d59..0000000000 --- a/apps/example/macos/Podfile +++ /dev/null @@ -1,11 +0,0 @@ -ws_dir = Pathname.new(__dir__) -ws_dir = ws_dir.parent until - File.exist?("#{ws_dir}/node_modules/react-native-test-app/macos/test_app.rb") || - ws_dir.expand_path.to_s == '/' -require "#{ws_dir}/node_modules/react-native-test-app/macos/test_app.rb" - -workspace 'example.xcworkspace' - -platform :osx, '14.0' - -use_test_app! :hermes_enabled => true, :new_arch_enabled => true diff --git a/apps/example/macos/Podfile.lock b/apps/example/macos/Podfile.lock deleted file mode 100644 index 94114ec8d5..0000000000 --- a/apps/example/macos/Podfile.lock +++ /dev/null @@ -1,3013 +0,0 @@ -PODS: - - boost (1.84.0) - - DoubleConversion (1.1.6) - - fast_float (8.0.0) - - FBLazyVector (0.81.1) - - fmt (11.0.2) - - glog (0.3.5) - - hermes-engine (0.81.5): - - hermes-engine/Pre-built (= 0.81.5) - - hermes-engine/Pre-built (0.81.5) - - RCT-Folly (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Default (= 2024.11.18.00) - - RCT-Folly/Default (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Fabric (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 8.0.0) - - fmt (= 11.0.2) - - glog - - RCTDeprecation (0.81.1) - - RCTRequired (0.81.1) - - RCTTypeSafety (0.81.1): - - FBLazyVector (= 0.81.1) - - RCTRequired (= 0.81.1) - - React-Core (= 0.81.1) - - React (0.81.1): - - React-Core (= 0.81.1) - - React-Core/DevSupport (= 0.81.1) - - React-Core/RCTWebSocket (= 0.81.1) - - React-RCTActionSheet (= 0.81.1) - - React-RCTAnimation (= 0.81.1) - - React-RCTBlob (= 0.81.1) - - React-RCTImage (= 0.81.1) - - React-RCTLinking (= 0.81.1) - - React-RCTNetwork (= 0.81.1) - - React-RCTSettings (= 0.81.1) - - React-RCTText (= 0.81.1) - - React-RCTVibration (= 0.81.1) - - React-callinvoker (0.81.1) - - React-Core (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default (= 0.81.1) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/CoreModulesHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/Default (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/DevSupport (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default (= 0.81.1) - - React-Core/RCTWebSocket (= 0.81.1) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTActionSheetHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTAnimationHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTBlobHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTImageHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTLinkingHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTNetworkHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTSettingsHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTTextHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTVibrationHeaders (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-Core/RCTWebSocket (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTDeprecation - - React-Core/Default (= 0.81.1) - - React-cxxreact - - React-featureflags - - React-hermes - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsinspectorcdp - - React-jsitooling - - React-perflogger - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-CoreModules (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety (= 0.81.1) - - React-Core/CoreModulesHeaders (= 0.81.1) - - React-jsi (= 0.81.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-NativeModulesApple - - React-RCTBlob - - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.81.1) - - React-runtimeexecutor - - ReactCommon - - SocketRocket - - React-cxxreact (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.81.1) - - React-debug (= 0.81.1) - - React-jsi (= 0.81.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-logger (= 0.81.1) - - React-perflogger (= 0.81.1) - - React-runtimeexecutor - - React-timing (= 0.81.1) - - SocketRocket - - React-debug (0.81.1) - - React-defaultsnativemodule (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-domnativemodule - - React-featureflagsnativemodule - - React-idlecallbacksnativemodule - - React-jsi - - React-jsiexecutor - - React-microtasksnativemodule - - React-RCTFBReactNativeSpec - - SocketRocket - - React-domnativemodule (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Fabric - - React-Fabric/bridging - - React-FabricComponents - - React-graphics - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - React-runtimeexecutor - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-Fabric (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/animations (= 0.81.1) - - React-Fabric/attributedstring (= 0.81.1) - - React-Fabric/bridging (= 0.81.1) - - React-Fabric/componentregistry (= 0.81.1) - - React-Fabric/componentregistrynative (= 0.81.1) - - React-Fabric/components (= 0.81.1) - - React-Fabric/consistency (= 0.81.1) - - React-Fabric/core (= 0.81.1) - - React-Fabric/dom (= 0.81.1) - - React-Fabric/imagemanager (= 0.81.1) - - React-Fabric/leakchecker (= 0.81.1) - - React-Fabric/mounting (= 0.81.1) - - React-Fabric/observers (= 0.81.1) - - React-Fabric/scheduler (= 0.81.1) - - React-Fabric/telemetry (= 0.81.1) - - React-Fabric/templateprocessor (= 0.81.1) - - React-Fabric/uimanager (= 0.81.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/animations (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/attributedstring (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/bridging (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/componentregistry (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/componentregistrynative (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.81.1) - - React-Fabric/components/root (= 0.81.1) - - React-Fabric/components/scrollview (= 0.81.1) - - React-Fabric/components/view (= 0.81.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/legacyviewmanagerinterop (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/root (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/scrollview (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/components/view (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-renderercss - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-Fabric/consistency (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/core (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/dom (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/imagemanager (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/leakchecker (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/mounting (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/observers (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/observers/events (= 0.81.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/observers/events (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/scheduler (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/observers/events - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-performancetimeline - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/telemetry (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/templateprocessor (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/uimanager (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric/uimanager/consistency (= 0.81.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererconsistency - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-Fabric/uimanager/consistency (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-rendererconsistency - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - React-FabricComponents (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-FabricComponents/components (= 0.81.1) - - React-FabricComponents/textlayoutmanager (= 0.81.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.81.1) - - React-FabricComponents/components/iostextinput (= 0.81.1) - - React-FabricComponents/components/modal (= 0.81.1) - - React-FabricComponents/components/rncore (= 0.81.1) - - React-FabricComponents/components/safeareaview (= 0.81.1) - - React-FabricComponents/components/scrollview (= 0.81.1) - - React-FabricComponents/components/switch (= 0.81.1) - - React-FabricComponents/components/text (= 0.81.1) - - React-FabricComponents/components/textinput (= 0.81.1) - - React-FabricComponents/components/unimplementedview (= 0.81.1) - - React-FabricComponents/components/virtualview (= 0.81.1) - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/inputaccessory (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/iostextinput (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/modal (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/rncore (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/safeareaview (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/scrollview (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/switch (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/text (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/textinput (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/unimplementedview (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/components/virtualview (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricComponents/textlayoutmanager (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-logger - - React-RCTFBReactNativeSpec - - React-rendererdebug - - React-runtimescheduler - - React-utils - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-FabricImage (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired (= 0.81.1) - - RCTTypeSafety (= 0.81.1) - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-jsiexecutor (= 0.81.1) - - React-logger - - React-rendererdebug - - React-utils - - ReactCommon - - SocketRocket - - Yoga - - React-featureflags (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-featureflagsnativemodule (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - ReactCommon/turbomodule/core - - SocketRocket - - React-graphics (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Core - - React-jsi - - React-jsiexecutor - - React-utils - - SocketRocket - - React-hermes (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 0.81.1) - - React-jsi - - React-jsiexecutor (= 0.81.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-perflogger (= 0.81.1) - - React-runtimeexecutor - - SocketRocket - - React-idlecallbacksnativemodule (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - React-runtimeexecutor - - React-runtimescheduler - - ReactCommon/turbomodule/core - - SocketRocket - - React-ImageManager (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-Core/Default - - React-debug - - React-Fabric - - React-graphics - - React-rendererdebug - - React-utils - - SocketRocket - - React-jserrorhandler (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact - - React-debug - - React-featureflags - - React-jsi - - ReactCommon/turbomodule/bridging - - SocketRocket - - React-jsi (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-jsiexecutor (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 0.81.1) - - React-jsi (= 0.81.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-perflogger (= 0.81.1) - - React-runtimeexecutor - - SocketRocket - - React-jsinspector (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsi - - React-jsinspectorcdp - - React-jsinspectornetwork - - React-jsinspectortracing - - React-oscompat - - React-perflogger (= 0.81.1) - - React-runtimeexecutor - - SocketRocket - - React-jsinspectorcdp (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-jsinspectornetwork (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsinspectorcdp - - React-performancetimeline - - React-timing - - SocketRocket - - React-jsinspectortracing (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-oscompat - - React-timing - - SocketRocket - - React-jsitooling (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact (= 0.81.1) - - React-jsi (= 0.81.1) - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-runtimeexecutor - - SocketRocket - - React-jsitracing (0.81.1): - - React-jsi - - React-logger (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-Mapbuffer (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - SocketRocket - - React-microtasksnativemodule (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-jsi - - React-jsiexecutor - - React-RCTFBReactNativeSpec - - ReactCommon/turbomodule/core - - SocketRocket - - react-native-safe-area-context (5.6.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - react-native-safe-area-context/common (= 5.6.2) - - react-native-safe-area-context/fabric (= 5.6.2) - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - react-native-safe-area-context/common (5.6.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - react-native-safe-area-context/fabric (5.6.2): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - react-native-safe-area-context/common - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - react-native-skia (0.0.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React - - React-callinvoker - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - React-NativeModulesApple (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker - - React-Core - - React-cxxreact - - React-featureflags - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-runtimeexecutor - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - React-oscompat (0.81.1) - - React-perflogger (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - SocketRocket - - React-performancetimeline (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-jsinspectortracing - - React-perflogger - - React-timing - - SocketRocket - - React-RCTActionSheet (0.81.1): - - React-Core/RCTActionSheetHeaders (= 0.81.1) - - React-RCTAnimation (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTAnimationHeaders - - React-featureflags - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-RCTAppDelegate (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-CoreModules - - React-debug - - React-defaultsnativemodule - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-jsitooling - - React-NativeModulesApple - - React-RCTFabric - - React-RCTFBReactNativeSpec - - React-RCTImage - - React-RCTNetwork - - React-RCTRuntime - - React-rendererdebug - - React-RuntimeApple - - React-RuntimeCore - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - ReactCommon - - SocketRocket - - React-RCTBlob (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Core/RCTBlobHeaders - - React-Core/RCTWebSocket - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - React-RCTNetwork - - ReactCommon - - SocketRocket - - React-RCTFabric (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Core - - React-debug - - React-Fabric - - React-FabricComponents - - React-FabricImage - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectornetwork - - React-jsinspectortracing - - React-performancetimeline - - React-RCTAnimation - - React-RCTFBReactNativeSpec - - React-RCTImage - - React-RCTText - - React-rendererconsistency - - React-renderercss - - React-rendererdebug - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - Yoga - - React-RCTFBReactNativeSpec (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.81.1) - - ReactCommon - - SocketRocket - - React-RCTFBReactNativeSpec/components (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-jsi - - React-NativeModulesApple - - React-rendererdebug - - React-utils - - ReactCommon - - SocketRocket - - Yoga - - React-RCTImage (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTImageHeaders - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - React-RCTNetwork - - ReactCommon - - SocketRocket - - React-RCTLinking (0.81.1): - - React-Core/RCTLinkingHeaders (= 0.81.1) - - React-jsi (= 0.81.1) - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - ReactCommon/turbomodule/core (= 0.81.1) - - React-RCTNetwork (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTNetworkHeaders - - React-featureflags - - React-jsi - - React-jsinspectorcdp - - React-jsinspectornetwork - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-RCTRuntime (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-Core - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-jsitooling - - React-RuntimeApple - - React-RuntimeCore - - React-runtimeexecutor - - React-RuntimeHermes - - SocketRocket - - React-RCTSettings (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - RCTTypeSafety - - React-Core/RCTSettingsHeaders - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-RCTText (0.81.1): - - React-Core/RCTTextHeaders (= 0.81.1) - - Yoga - - React-RCTVibration (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-Core/RCTVibrationHeaders - - React-jsi - - React-NativeModulesApple - - React-RCTFBReactNativeSpec - - ReactCommon - - SocketRocket - - React-rendererconsistency (0.81.1) - - React-renderercss (0.81.1): - - React-debug - - React-utils - - React-rendererdebug (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - SocketRocket - - React-RuntimeApple (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker - - React-Core/Default - - React-CoreModules - - React-cxxreact - - React-featureflags - - React-jserrorhandler - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsitooling - - React-Mapbuffer - - React-NativeModulesApple - - React-RCTFabric - - React-RCTFBReactNativeSpec - - React-RuntimeCore - - React-runtimeexecutor - - React-RuntimeHermes - - React-runtimescheduler - - React-utils - - SocketRocket - - React-RuntimeCore (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-cxxreact - - React-Fabric - - React-featureflags - - React-jserrorhandler - - React-jsi - - React-jsiexecutor - - React-jsinspector - - React-jsitooling - - React-performancetimeline - - React-runtimeexecutor - - React-runtimescheduler - - React-utils - - SocketRocket - - React-runtimeexecutor (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - React-featureflags - - React-jsi (= 0.81.1) - - React-utils - - SocketRocket - - React-RuntimeHermes (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-featureflags - - React-hermes - - React-jsi - - React-jsinspector - - React-jsinspectorcdp - - React-jsinspectortracing - - React-jsitooling - - React-jsitracing - - React-RuntimeCore - - React-runtimeexecutor - - React-utils - - SocketRocket - - React-runtimescheduler (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker - - React-cxxreact - - React-debug - - React-featureflags - - React-jsi - - React-jsinspectortracing - - React-performancetimeline - - React-rendererconsistency - - React-rendererdebug - - React-runtimeexecutor - - React-timing - - React-utils - - SocketRocket - - React-timing (0.81.1): - - React-debug - - React-utils (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-debug - - React-jsi (= 0.81.1) - - SocketRocket - - ReactAppDependencyProvider (0.81.1): - - ReactCodegen - - ReactCodegen (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-FabricImage - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-NativeModulesApple - - React-RCTAppDelegate - - React-rendererdebug - - React-utils - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - ReactCommon (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - RCT-Folly - - RCT-Folly/Fabric - - ReactCommon/turbomodule (= 0.81.1) - - SocketRocket - - ReactCommon/turbomodule (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.81.1) - - React-cxxreact (= 0.81.1) - - React-jsi (= 0.81.1) - - React-logger (= 0.81.1) - - React-perflogger (= 0.81.1) - - ReactCommon/turbomodule/bridging (= 0.81.1) - - ReactCommon/turbomodule/core (= 0.81.1) - - SocketRocket - - ReactCommon/turbomodule/bridging (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.81.1) - - React-cxxreact (= 0.81.1) - - React-jsi (= 0.81.1) - - React-logger (= 0.81.1) - - React-perflogger (= 0.81.1) - - SocketRocket - - ReactCommon/turbomodule/core (0.81.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - React-callinvoker (= 0.81.1) - - React-cxxreact (= 0.81.1) - - React-debug (= 0.81.1) - - React-featureflags (= 0.81.1) - - React-jsi (= 0.81.1) - - React-logger (= 0.81.1) - - React-perflogger (= 0.81.1) - - React-utils (= 0.81.1) - - SocketRocket - - ReactNativeHost (0.5.16): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-cxxreact - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTAppDelegate - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - ReactTestApp-DevSupport (4.4.7): - - React-Core - - React-jsi - - ReactTestApp-Resources (1.0.0-dev) - - RNGestureHandler (2.30.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - RNReanimated (4.2.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNReanimated/reanimated (= 4.2.1) - - RNWorklets - - SocketRocket - - Yoga - - RNReanimated/reanimated (4.2.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNReanimated/reanimated/apple (= 4.2.1) - - RNWorklets - - SocketRocket - - Yoga - - RNReanimated/reanimated/apple (4.2.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNWorklets - - SocketRocket - - Yoga - - RNSVG (15.14.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNSVG/common (= 15.14.0) - - SocketRocket - - Yoga - - RNSVG/common (15.14.0): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - RNWorklets (0.7.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNWorklets/worklets (= 0.7.1) - - SocketRocket - - Yoga - - RNWorklets/worklets (0.7.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - RNWorklets/worklets/apple (= 0.7.1) - - SocketRocket - - Yoga - - RNWorklets/worklets/apple (0.7.1): - - boost - - DoubleConversion - - fast_float - - fmt - - glog - - hermes-engine - - RCT-Folly - - RCT-Folly/Fabric - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-featureflags - - React-graphics - - React-hermes - - React-ImageManager - - React-jsi - - React-NativeModulesApple - - React-RCTFabric - - React-renderercss - - React-rendererdebug - - React-utils - - ReactCodegen - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - SocketRocket - - Yoga - - SocketRocket (0.7.1) - - Yoga (0.0.0) - -DEPENDENCIES: - - boost (from `../../../node_modules/react-native-macos/third-party-podspecs/boost.podspec`) - - DoubleConversion (from `../../../node_modules/react-native-macos/third-party-podspecs/DoubleConversion.podspec`) - - fast_float (from `../../../node_modules/react-native-macos/third-party-podspecs/fast_float.podspec`) - - FBLazyVector (from `../../../node_modules/react-native-macos/Libraries/FBLazyVector`) - - fmt (from `../../../node_modules/react-native-macos/third-party-podspecs/fmt.podspec`) - - glog (from `../../../node_modules/react-native-macos/third-party-podspecs/glog.podspec`) - - hermes-engine (from `../../../node_modules/react-native-macos/sdks/hermes-engine/hermes-engine.podspec`) - - RCT-Folly (from `../../../node_modules/react-native-macos/third-party-podspecs/RCT-Folly.podspec`) - - RCTDeprecation (from `../../../node_modules/react-native-macos/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - - RCTRequired (from `../../../node_modules/react-native-macos/Libraries/Required`) - - RCTTypeSafety (from `../../../node_modules/react-native-macos/Libraries/TypeSafety`) - - React (from `../../../node_modules/react-native-macos/`) - - React-callinvoker (from `../../../node_modules/react-native-macos/ReactCommon/callinvoker`) - - React-Core (from `../../../node_modules/react-native-macos/`) - - React-Core/RCTWebSocket (from `../../../node_modules/react-native-macos/`) - - React-CoreModules (from `../../../node_modules/react-native-macos/React/CoreModules`) - - React-cxxreact (from `../../../node_modules/react-native-macos/ReactCommon/cxxreact`) - - React-debug (from `../../../node_modules/react-native-macos/ReactCommon/react/debug`) - - React-defaultsnativemodule (from `../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/defaults`) - - React-domnativemodule (from `../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/dom`) - - React-Fabric (from `../../../node_modules/react-native-macos/ReactCommon`) - - React-FabricComponents (from `../../../node_modules/react-native-macos/ReactCommon`) - - React-FabricImage (from `../../../node_modules/react-native-macos/ReactCommon`) - - React-featureflags (from `../../../node_modules/react-native-macos/ReactCommon/react/featureflags`) - - React-featureflagsnativemodule (from `../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/featureflags`) - - React-graphics (from `../../../node_modules/react-native-macos/ReactCommon/react/renderer/graphics`) - - React-hermes (from `../../../node_modules/react-native-macos/ReactCommon/hermes`) - - React-idlecallbacksnativemodule (from `../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/idlecallbacks`) - - React-ImageManager (from `../../../node_modules/react-native-macos/ReactCommon/react/renderer/imagemanager/platform/ios`) - - React-jserrorhandler (from `../../../node_modules/react-native-macos/ReactCommon/jserrorhandler`) - - React-jsi (from `../../../node_modules/react-native-macos/ReactCommon/jsi`) - - React-jsiexecutor (from `../../../node_modules/react-native-macos/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern`) - - React-jsinspectorcdp (from `../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern/cdp`) - - React-jsinspectornetwork (from `../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern/network`) - - React-jsinspectortracing (from `../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern/tracing`) - - React-jsitooling (from `../../../node_modules/react-native-macos/ReactCommon/jsitooling`) - - React-jsitracing (from `../../../node_modules/react-native-macos/ReactCommon/hermes/executor/`) - - React-logger (from `../../../node_modules/react-native-macos/ReactCommon/logger`) - - React-Mapbuffer (from `../../../node_modules/react-native-macos/ReactCommon`) - - React-microtasksnativemodule (from `../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/microtasks`) - - react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`) - - "react-native-skia (from `../../../node_modules/@shopify/react-native-skia`)" - - React-NativeModulesApple (from `../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/core/platform/ios`) - - React-oscompat (from `../../../node_modules/react-native-macos/ReactCommon/oscompat`) - - React-perflogger (from `../../../node_modules/react-native-macos/ReactCommon/reactperflogger`) - - React-performancetimeline (from `../../../node_modules/react-native-macos/ReactCommon/react/performance/timeline`) - - React-RCTActionSheet (from `../../../node_modules/react-native-macos/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `../../../node_modules/react-native-macos/Libraries/NativeAnimation`) - - React-RCTAppDelegate (from `../../../node_modules/react-native-macos/Libraries/AppDelegate`) - - React-RCTBlob (from `../../../node_modules/react-native-macos/Libraries/Blob`) - - React-RCTFabric (from `../../../node_modules/react-native-macos/React`) - - React-RCTFBReactNativeSpec (from `../../../node_modules/react-native-macos/React`) - - React-RCTImage (from `../../../node_modules/react-native-macos/Libraries/Image`) - - React-RCTLinking (from `../../../node_modules/react-native-macos/Libraries/LinkingIOS`) - - React-RCTNetwork (from `../../../node_modules/react-native-macos/Libraries/Network`) - - React-RCTRuntime (from `../../../node_modules/react-native-macos/React/Runtime`) - - React-RCTSettings (from `../../../node_modules/react-native-macos/Libraries/Settings`) - - React-RCTText (from `../../../node_modules/react-native-macos/Libraries/Text`) - - React-RCTVibration (from `../../../node_modules/react-native-macos/Libraries/Vibration`) - - React-rendererconsistency (from `../../../node_modules/react-native-macos/ReactCommon/react/renderer/consistency`) - - React-renderercss (from `../../../node_modules/react-native-macos/ReactCommon/react/renderer/css`) - - React-rendererdebug (from `../../../node_modules/react-native-macos/ReactCommon/react/renderer/debug`) - - React-RuntimeApple (from `../../../node_modules/react-native-macos/ReactCommon/react/runtime/platform/ios`) - - React-RuntimeCore (from `../../../node_modules/react-native-macos/ReactCommon/react/runtime`) - - React-runtimeexecutor (from `../../../node_modules/react-native-macos/ReactCommon/runtimeexecutor`) - - React-RuntimeHermes (from `../../../node_modules/react-native-macos/ReactCommon/react/runtime`) - - React-runtimescheduler (from `../../../node_modules/react-native-macos/ReactCommon/react/renderer/runtimescheduler`) - - React-timing (from `../../../node_modules/react-native-macos/ReactCommon/react/timing`) - - React-utils (from `../../../node_modules/react-native-macos/ReactCommon/react/utils`) - - ReactAppDependencyProvider (from `build/generated/ios`) - - ReactCodegen (from `build/generated/ios`) - - ReactCommon/turbomodule/core (from `../../../node_modules/react-native-macos/ReactCommon`) - - "ReactNativeHost (from `../../../node_modules/@rnx-kit/react-native-host`)" - - ReactTestApp-DevSupport (from `../node_modules/react-native-test-app`) - - ReactTestApp-Resources (from `..`) - - RNGestureHandler (from `../../../node_modules/react-native-gesture-handler`) - - RNReanimated (from `../../../node_modules/react-native-reanimated`) - - RNSVG (from `../../../node_modules/react-native-svg`) - - RNWorklets (from `../../../node_modules/react-native-worklets`) - - SocketRocket (~> 0.7.1) - - Yoga (from `../../../node_modules/react-native-macos/ReactCommon/yoga`) - -SPEC REPOS: - trunk: - - SocketRocket - -EXTERNAL SOURCES: - boost: - :podspec: "../../../node_modules/react-native-macos/third-party-podspecs/boost.podspec" - DoubleConversion: - :podspec: "../../../node_modules/react-native-macos/third-party-podspecs/DoubleConversion.podspec" - fast_float: - :podspec: "../../../node_modules/react-native-macos/third-party-podspecs/fast_float.podspec" - FBLazyVector: - :path: "../../../node_modules/react-native-macos/Libraries/FBLazyVector" - fmt: - :podspec: "../../../node_modules/react-native-macos/third-party-podspecs/fmt.podspec" - glog: - :podspec: "../../../node_modules/react-native-macos/third-party-podspecs/glog.podspec" - hermes-engine: - :podspec: "../../../node_modules/react-native-macos/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2025-07-07-RNv0.81.0-e0fc67142ec0763c6b6153ca2bf96df815539782 - RCT-Folly: - :podspec: "../../../node_modules/react-native-macos/third-party-podspecs/RCT-Folly.podspec" - RCTDeprecation: - :path: "../../../node_modules/react-native-macos/ReactApple/Libraries/RCTFoundation/RCTDeprecation" - RCTRequired: - :path: "../../../node_modules/react-native-macos/Libraries/Required" - RCTTypeSafety: - :path: "../../../node_modules/react-native-macos/Libraries/TypeSafety" - React: - :path: "../../../node_modules/react-native-macos/" - React-callinvoker: - :path: "../../../node_modules/react-native-macos/ReactCommon/callinvoker" - React-Core: - :path: "../../../node_modules/react-native-macos/" - React-CoreModules: - :path: "../../../node_modules/react-native-macos/React/CoreModules" - React-cxxreact: - :path: "../../../node_modules/react-native-macos/ReactCommon/cxxreact" - React-debug: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/debug" - React-defaultsnativemodule: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/defaults" - React-domnativemodule: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/dom" - React-Fabric: - :path: "../../../node_modules/react-native-macos/ReactCommon" - React-FabricComponents: - :path: "../../../node_modules/react-native-macos/ReactCommon" - React-FabricImage: - :path: "../../../node_modules/react-native-macos/ReactCommon" - React-featureflags: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/featureflags" - React-featureflagsnativemodule: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/featureflags" - React-graphics: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/renderer/graphics" - React-hermes: - :path: "../../../node_modules/react-native-macos/ReactCommon/hermes" - React-idlecallbacksnativemodule: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/idlecallbacks" - React-ImageManager: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/renderer/imagemanager/platform/ios" - React-jserrorhandler: - :path: "../../../node_modules/react-native-macos/ReactCommon/jserrorhandler" - React-jsi: - :path: "../../../node_modules/react-native-macos/ReactCommon/jsi" - React-jsiexecutor: - :path: "../../../node_modules/react-native-macos/ReactCommon/jsiexecutor" - React-jsinspector: - :path: "../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern" - React-jsinspectorcdp: - :path: "../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern/cdp" - React-jsinspectornetwork: - :path: "../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern/network" - React-jsinspectortracing: - :path: "../../../node_modules/react-native-macos/ReactCommon/jsinspector-modern/tracing" - React-jsitooling: - :path: "../../../node_modules/react-native-macos/ReactCommon/jsitooling" - React-jsitracing: - :path: "../../../node_modules/react-native-macos/ReactCommon/hermes/executor/" - React-logger: - :path: "../../../node_modules/react-native-macos/ReactCommon/logger" - React-Mapbuffer: - :path: "../../../node_modules/react-native-macos/ReactCommon" - React-microtasksnativemodule: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/microtasks" - react-native-safe-area-context: - :path: "../../../node_modules/react-native-safe-area-context" - react-native-skia: - :path: "../../../node_modules/@shopify/react-native-skia" - React-NativeModulesApple: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/nativemodule/core/platform/ios" - React-oscompat: - :path: "../../../node_modules/react-native-macos/ReactCommon/oscompat" - React-perflogger: - :path: "../../../node_modules/react-native-macos/ReactCommon/reactperflogger" - React-performancetimeline: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/performance/timeline" - React-RCTActionSheet: - :path: "../../../node_modules/react-native-macos/Libraries/ActionSheetIOS" - React-RCTAnimation: - :path: "../../../node_modules/react-native-macos/Libraries/NativeAnimation" - React-RCTAppDelegate: - :path: "../../../node_modules/react-native-macos/Libraries/AppDelegate" - React-RCTBlob: - :path: "../../../node_modules/react-native-macos/Libraries/Blob" - React-RCTFabric: - :path: "../../../node_modules/react-native-macos/React" - React-RCTFBReactNativeSpec: - :path: "../../../node_modules/react-native-macos/React" - React-RCTImage: - :path: "../../../node_modules/react-native-macos/Libraries/Image" - React-RCTLinking: - :path: "../../../node_modules/react-native-macos/Libraries/LinkingIOS" - React-RCTNetwork: - :path: "../../../node_modules/react-native-macos/Libraries/Network" - React-RCTRuntime: - :path: "../../../node_modules/react-native-macos/React/Runtime" - React-RCTSettings: - :path: "../../../node_modules/react-native-macos/Libraries/Settings" - React-RCTText: - :path: "../../../node_modules/react-native-macos/Libraries/Text" - React-RCTVibration: - :path: "../../../node_modules/react-native-macos/Libraries/Vibration" - React-rendererconsistency: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/renderer/consistency" - React-renderercss: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/renderer/css" - React-rendererdebug: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/renderer/debug" - React-RuntimeApple: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/runtime/platform/ios" - React-RuntimeCore: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/runtime" - React-runtimeexecutor: - :path: "../../../node_modules/react-native-macos/ReactCommon/runtimeexecutor" - React-RuntimeHermes: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/runtime" - React-runtimescheduler: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/renderer/runtimescheduler" - React-timing: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/timing" - React-utils: - :path: "../../../node_modules/react-native-macos/ReactCommon/react/utils" - ReactAppDependencyProvider: - :path: build/generated/ios - ReactCodegen: - :path: build/generated/ios - ReactCommon: - :path: "../../../node_modules/react-native-macos/ReactCommon" - ReactNativeHost: - :path: "../../../node_modules/@rnx-kit/react-native-host" - ReactTestApp-DevSupport: - :path: "../node_modules/react-native-test-app" - ReactTestApp-Resources: - :path: ".." - RNGestureHandler: - :path: "../../../node_modules/react-native-gesture-handler" - RNReanimated: - :path: "../../../node_modules/react-native-reanimated" - RNSVG: - :path: "../../../node_modules/react-native-svg" - RNWorklets: - :path: "../../../node_modules/react-native-worklets" - Yoga: - :path: "../../../node_modules/react-native-macos/ReactCommon/yoga" - -SPEC CHECKSUMS: - boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd - DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab - fast_float: 20817c22759af6ac8d4d67e6e059b8b499953656 - FBLazyVector: 47006f04f48c051efc49874d37464783f567a24b - fmt: 24e7591456deb60b4a77518f83d9a916ac84223f - glog: 0b31c25149b9d350b2666c7d459229861a00ec07 - hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 - RCT-Folly: c803cf33238782d5fd21a5e02d44f64068e0e130 - RCTDeprecation: c4b9e2fd0ab200e3af72b013ed6113187c607077 - RCTRequired: 14662ae08f93538b252e8c4e604f2f033d5182ed - RCTTypeSafety: 595f74c08cd117d828a41cb0b00be1bf62efba1a - React: 285e67c52f202a184d1c1011d3156d1d571150b2 - React-callinvoker: ba9cf6f733a1d086d05a1c3f75568dfa7ab6e1c2 - React-Core: 5587656dc822d875abdf36ed5fbd7ecb3ffaeba2 - React-CoreModules: 8060dd020c2c415439a30ad955707956ab4afd5a - React-cxxreact: c5ff765e762e01c2f72dc901dea282f86d3496f0 - React-debug: e59fc25e72bd054e327ee178db8a3650ed249fa7 - React-defaultsnativemodule: 03d64f6f47bd7bd7a8d252fa3631371a4bc8a60b - React-domnativemodule: b8b7cc68660dfefa6500c5364fddddc3031468d9 - React-Fabric: f4b32e691f6cab8c61241e6cedddb3792055f83c - React-FabricComponents: d41b25cdc8cd1bcc629147e9669e6b05de6faaa5 - React-FabricImage: 3618d5a256ae8fae4a94f049bfd829b42bd0a0b4 - React-featureflags: c8e4535d13a96faf1cf4e7ccedd1d0637751aab9 - React-featureflagsnativemodule: 84dfde518b7660391ad04cd98607e9f6c486d0d5 - React-graphics: a1873fbb24116ce5835e5d50330eaff3c3173f89 - React-hermes: 91bd8dac4fabae391e1d86ff6db8b71fc550b1fa - React-idlecallbacksnativemodule: 7dc37245b8dbf9454c2d74ab13cf318772f21ee8 - React-ImageManager: f1004971cc53ad0b4720e06400a67186d811c56d - React-jserrorhandler: 9bbaa630812a1219b16f2f72f5a3835b211cd8ad - React-jsi: 54bef38f7f239b64b96450cb69ff2735ac08acc7 - React-jsiexecutor: fb11b161c2b793dd84e8453bdde482e98d9178f9 - React-jsinspector: fa28f58a0cd5d28e9741f34ac232eb9fef1ebdb2 - React-jsinspectorcdp: f49f1823dfe326f69e67bf0284cc4b694ed313cc - React-jsinspectornetwork: fae5211c7d3169733682d3f5525ef31682a2aa47 - React-jsinspectortracing: c370da4983e4175cd05658878fbeda5b8850180c - React-jsitooling: 88e28d4971e11c52d4888c4e3ac643e166296977 - React-jsitracing: 444273600b2ab9b1896a48d321c2c439e1676782 - React-logger: 348119fcecd60fc8c555dbc4b0bb6de7dabb721c - React-Mapbuffer: 15d41cf2e5215c37e0cccea3d5c4493b7bf856f2 - React-microtasksnativemodule: 86204a62d73dfbd29d1e2ed93d1db2a424ade491 - react-native-safe-area-context: c00143b4823773bba23f2f19f85663ae89ceb460 - react-native-skia: a6d71c6f35093002a7f663f99f0b8e2111ad9a3b - React-NativeModulesApple: 7a688e1516c692afbae4ffdf3cf5d3b04cc1450d - React-oscompat: 8a27536d4ae736ce0fe2c7f96c22421c31889761 - React-perflogger: 269feff6b4867de2ec6fb080ccdbf52c1a2dbf0c - React-performancetimeline: d5065b59a7b58a84dbc4353a7daffdd9326a0d96 - React-RCTActionSheet: 0328ba439a451e5ffc2142cd0a1a6ef5ad4430ab - React-RCTAnimation: 6dfcb6ff73dff3c05a2c23aeb58b6bacad4287f7 - React-RCTAppDelegate: 0c1121ff435d2790401766278041ab3a1013b306 - React-RCTBlob: 444b27bc565e6ac93c7e5354288373edbcacb44e - React-RCTFabric: 64ae9526a3ad54349db07a837143fc8c5e3e7257 - React-RCTFBReactNativeSpec: 15a219b0e92ac537ac0136b9e3f749e171e9201b - React-RCTImage: 5fa5088ba0032427313baec75505db3cf8ab0100 - React-RCTLinking: 6e2985c70e695c9cca8f1c57703f2a280c526ca8 - React-RCTNetwork: da0cc27fc7906346c83bd4c4a814495ccfc3f751 - React-RCTRuntime: 60bf5353cd445aa2bbb7ddec352daee6e4c78c5d - React-RCTSettings: 492dea9a063b1b24605a880ef03b6991e3139d62 - React-RCTText: a0cf29acce4aed34afb96191b961fe5090488ea2 - React-RCTVibration: 8b8e25c4f218b3ffdf1034408c3cabcf1e649bf5 - React-rendererconsistency: d5bd36d64e62a217dedb0d05583b748fe7f53b48 - React-renderercss: 38153ee484bc2af62dfa9167b596544179244647 - React-rendererdebug: 54c6c7f36f962ae0740b9bb449333163dc8a3cc6 - React-RuntimeApple: 04e6918bb9cd1c19f0058ac04722da9414bcc4f8 - React-RuntimeCore: 1cce9c108450a41f736b1ee5d10b0205d373dcbb - React-runtimeexecutor: db071128fe23dc43aaa229eea83b2d5bd2245cf4 - React-RuntimeHermes: fcd61d5c71c95a8d10c75eb3c9dc3f1ead14c137 - React-runtimescheduler: 5632bc525d8715339784d692b850d28710db4016 - React-timing: d412e3b4ad665fdd808db2afcf56d8b01385a333 - React-utils: e64f790f8d8c48ba20bf1c64e17824d0472f6696 - ReactAppDependencyProvider: 6acd88031cae2a41ac1233c6e90c0445c4095c54 - ReactCodegen: 09f77d08588e613f888b478e6528c811019c0a46 - ReactCommon: ac50e6ceb52cd62597dca02d18aedb7121d842d4 - ReactNativeHost: eef98ec49b55d88ad4cabf5a4378a12b42b551ee - ReactTestApp-DevSupport: ea18f446cff64b6c9a3e28788600c82ecf51bde6 - ReactTestApp-Resources: 86136e1efe3aa7201759371c03dea3df77079b42 - RNGestureHandler: cd4be101cfa17ea6bbd438710caa02e286a84381 - RNReanimated: 132940c4c15ca2757f4f7d1fd7c9c3c01dbc4689 - RNSVG: 11354d28dd6cb71a59570b68c91ba6772a2d781d - RNWorklets: f2ed333c600377955ac5ab798a14210805de846d - SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: b9d6f057671b0ab86481057b33f1127f170dddf2 - -PODFILE CHECKSUM: 84e2ebec97f39c90cf0ff66e5b5d9147701879ef - -COCOAPODS: 1.16.2 diff --git a/apps/example/metro.config.js b/apps/example/metro.config.js deleted file mode 100644 index e44064a8d7..0000000000 --- a/apps/example/metro.config.js +++ /dev/null @@ -1,57 +0,0 @@ -const path = require("path"); -const { resolve: defaultResolve } = require("metro-resolver"); -const { makeMetroConfig } = require("@rnx-kit/metro-config"); - -const root = path.resolve(__dirname, "../.."); -const rnwPath = path.resolve(root, "node_modules/react-native-web"); -const assetRegistryPath = path.resolve( - root, - "node_modules/react-native-web/dist/modules/AssetRegistry/index", -); - -const metroConfig = makeMetroConfig({ - transformer: { - getTransformOptions: async () => ({ - transform: { - experimentalImportSupport: false, - inlineRequires: true, - }, - }), - }, -}); - -function getWebMetroConfig(config) { - config.resolver = config.resolver ?? {}; - config.resolver.platforms = ["ios", "android", "web"]; - - const origResolveRequest = - config.resolver.resolveRequest ?? - ((context, moduleName, platform) => - defaultResolve(context, moduleName, platform)); - - config.resolver.resolveRequest = (contextRaw, moduleName, platform) => { - const context = { - ...contextRaw, - preferNativePlatform: false, - }; - - if (moduleName === "react-native") { - return { - filePath: path.resolve(rnwPath, "dist/index.js"), - type: "sourceFile", - }; - } - - // Let default config handle other modules - return origResolveRequest(context, moduleName, platform); - }; - - config.transformer = config.transformer ?? {}; - config.transformer.assetRegistryPath = assetRegistryPath; - - return config; -} - -module.exports = !!process.env.IS_WEB_BUILD - ? getWebMetroConfig(metroConfig) - : metroConfig; diff --git a/apps/example/package.json b/apps/example/package.json deleted file mode 100644 index b1ce2f4c08..0000000000 --- a/apps/example/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "example", - "version": "0.0.1", - "private": true, - "scripts": { - "android": "react-native run-android", - "pod:install:ios": "pod install --project-directory=ios", - "pod:install:catalyst": "pod install --project-directory=ios && node ios/enable-catalyst.js", - "pod:install:macos": "pod install --project-directory=macos", - "build:android": "npm run mkdist && react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist/res && cd android && ./gradlew assembleDebug --warning-mode all", - "build:ios": "npm run mkdist && react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist", - "build:macos": "react-native build-macos --scheme ReactTestApp --mode Debug", - "ios": "react-native run-ios", - "lint": "eslint . --ext .ts,.tsx --max-warnings 0 --cache --fix", - "mkdist": "node -e \"require('node:fs').mkdirSync('dist', { recursive: true, mode: 0o755 })\"", - "pod:install": "cd ios && pod install", - "test": "jest", - "tsc": "tsc --noEmit", - "start": "react-native start", - "web": "IS_WEB_BUILD=true react-native start" - }, - "dependencies": { - "@react-navigation/bottom-tabs": "^7.2.1", - "@react-navigation/elements": "^2.2.6", - "@react-navigation/native": "^7.0.15", - "@react-navigation/native-stack": "^7.2.1", - "@shopify/react-native-skia": "workspace:*", - "@testing-library/react-native": "^13.1.0", - "@webgpu/types": "^0.1.69", - "babel-plugin-transform-inline-environment-variables": "^0.4.4", - "cdt2d": "^1.0.0", - "its-fine": "^2.0.0", - "react": "19.0.0", - "react-dom": "19.0.0", - "react-native": "0.83.1", - "react-native-gesture-handler": "^2.24.0", - "react-native-macos": "^0.81.1", - "react-native-reanimated": "^4.2.1", - "react-native-safe-area-context": "^5.2.0", - "react-native-screens": "^4.10.0", - "react-native-svg": "patch:react-native-svg@npm%3A15.14.0#../../.yarn/patches/react-native-svg-npm-15.14.0-macos-uiimage-fix.patch", - "react-native-web": "^0.21.2", - "react-native-windows": "^0.75.0", - "react-native-worklets": "^0.7.0" - }, - "devDependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-explicit-resource-management": "^7.27.4", - "@babel/preset-env": "^7.25.3", - "@babel/runtime": "^7.25.0", - "@react-native/babel-preset": "0.83.1", - "@react-native/eslint-config": "0.83.1", - "@react-native/metro-config": "0.83.1", - "@react-native/typescript-config": "0.83.1", - "@rnx-kit/metro-config": "^2.0.0", - "@types/jest": "^29.5.13", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", - "@types/react-native-web": "^0.19.2", - "@types/react-test-renderer": "^19.0.0", - "eslint": "9.36.0", - "eslint-config-react-native-wcandillon": "4.0.1", - "eslint-plugin-import": "2.32.0", - "jest": "^29.6.3", - "jest-transform-stub": "^2.0.0", - "prettier": "2.8.8", - "react-native-test-app": "4.4.7", - "react-test-renderer": "19.0.0", - "typescript": "^5.2.2" - }, - "engines": { - "node": ">=18" - } -} diff --git a/apps/example/react-native.config.js b/apps/example/react-native.config.js deleted file mode 100644 index cc3020e68e..0000000000 --- a/apps/example/react-native.config.js +++ /dev/null @@ -1,23 +0,0 @@ -const project = (() => { - try { - const { configureProjects } = require("react-native-test-app"); - return configureProjects({ - android: { - sourceDir: "android", - }, - ios: { - sourceDir: "ios", - }, - windows: { - sourceDir: "windows", - solutionFile: "windows/example.sln", - }, - }); - } catch (_) { - return undefined; - } -})(); - -module.exports = { - ...(project ? { project } : undefined), -}; diff --git a/apps/example/src/App.macos.tsx b/apps/example/src/App.macos.tsx deleted file mode 100644 index de488a0007..0000000000 --- a/apps/example/src/App.macos.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from "react"; - -import { Tests } from "./Tests"; - -const App = () => { - return ; -}; - -// eslint-disable-next-line import/no-default-export -export default App; diff --git a/apps/example/src/App.spec.tsx b/apps/example/src/App.spec.tsx deleted file mode 100644 index 4f8b3bbfdc..0000000000 --- a/apps/example/src/App.spec.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import "react-native"; -import React from "react"; -// Test renderer must be required after react-native. -import { cleanup, render } from "@testing-library/react-native"; - -import App from "./App"; - -it("renders correctly", () => { - render(); -}); - -afterEach(cleanup); diff --git a/apps/example/src/App.tsx b/apps/example/src/App.tsx deleted file mode 100644 index a03b723bb8..0000000000 --- a/apps/example/src/App.tsx +++ /dev/null @@ -1,255 +0,0 @@ -import type { LinkingOptions } from "@react-navigation/native"; -import { NavigationContainer, useNavigation } from "@react-navigation/native"; -import React from "react"; -import { createNativeStackNavigator } from "@react-navigation/native-stack"; -import { StatusBar } from "react-native"; -import type { HeaderBackButtonProps } from "@react-navigation/elements"; -import { HeaderBackButton } from "@react-navigation/elements"; -import { FiberProvider } from "its-fine"; -import { GestureHandlerRootView } from "react-native-gesture-handler"; -import { enableScreens } from "react-native-screens"; - -import { - ReanimatedExample, - API, - Aurora, - Breathe, - Filters, - Gooey, - GraphsScreen, - Hue, - Matrix, - Glassmorphism, - Neumorphism, - PerformanceDrawingTest, - Wallpaper, - Vertices, - Wallet, - Severance, - Transitions, - Stickers, - FrostedCard, - SpeedTest, - Video, - Chat, - LiquidGlass, - Pictures, - WebGPU, -} from "./Examples"; -import { CI, Tests } from "./Tests"; -import { HomeScreen } from "./Home"; -import type { StackParamList } from "./types"; -import { useAssets } from "./Tests/useAssets"; -import { Chess } from "./Examples/Chess"; -import "./resolveAssetSourcePolyfill"; - -const linking: LinkingOptions = { - config: { - screens: { - Home: "", - Vertices: "vertices", - API: "api", - LiquidGlass: "liquid-glass", - Breathe: "breathe", - Filters: "filters", - Gooey: "gooey", - Hue: "hue", - Matrix: "matrix", - Severance: "severance", - Aurora: "aurora", - Chess: "chess", - Glassmorphism: "glassmorphism", - Neumorphism: "neumorphism", - Wallpaper: "wallpaper", - Wallet: "wallet", - Graphs: "graphs", - Animation: "animation", - Reanimated: "reanimated", - Performance: "performance", - Tests: "test", - Transitions: "transitions", - Stickers: "stickers", - FrostedCard: "frosted-card", - SpeedTest: "speedtest", - Video: "video", - Chat: "chat", - Pictures: "pictures", - WebGPU: "webgpu", - }, - }, - prefixes: ["rnskia://"], -}; - -const HeaderLeft = (props: HeaderBackButtonProps) => { - const navigation = useNavigation(); - return ( - { - if (navigation.canGoBack()) { - navigation.goBack(); - } - }} - testID="back" - /> - ); -}; - -enableScreens(true); - -const App = () => { - const Stack = createNativeStackNavigator(); - const assets = useAssets(); - if (assets === null) { - return null; - } - return ( - - - - - ); -}; - -// eslint-disable-next-line import/no-default-export -export default App; diff --git a/apps/example/src/Examples/API/AnimatedImages.tsx b/apps/example/src/Examples/API/AnimatedImages.tsx deleted file mode 100644 index 1632a95442..0000000000 --- a/apps/example/src/Examples/API/AnimatedImages.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React from "react"; -import { Pressable, ScrollView, useWindowDimensions } from "react-native"; -import { - Canvas, - Image, - useAnimatedImageValue, -} from "@shopify/react-native-skia"; -import { useSharedValue } from "react-native-reanimated"; - -export const AnimatedImages = () => { - const { width: wWidth } = useWindowDimensions(); - const SIZE = wWidth / 3; - const S2 = 60; - const PAD = (SIZE - S2) / 2; - - const pause = useSharedValue(false); - const example1 = useAnimatedImageValue( - require("../../assets/birdFlying.gif"), - pause - ); - const example2 = useAnimatedImageValue( - require("../../assets/birdFlying2.gif") - ); - - return ( - - (pause.value = !pause.value)}> - - - - - - - - - ); -}; diff --git a/apps/example/src/Examples/API/AtlasExample.tsx b/apps/example/src/Examples/API/AtlasExample.tsx deleted file mode 100644 index f8a45c36dd..0000000000 --- a/apps/example/src/Examples/API/AtlasExample.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import React, { useMemo } from "react"; -import { ScrollView, useWindowDimensions } from "react-native"; -import { Atlas, Canvas, Skia, rect } from "@shopify/react-native-skia"; - -import { Title } from "./components/Title"; - -const SPRITE_SIZE = 24; -const PADDING = 16; - -const PALETTE = [ - "#6C63FF", - "#FF6B6B", - "#4ECDC4", - "#FFE66D", - "#A8E6CF", - "#FF8B94", - "#845EC2", - "#00C9A7", -]; - -const makeDotImage = () => { - const surface = Skia.Surface.Make(SPRITE_SIZE, SPRITE_SIZE); - if (!surface) { - return null; - } - const canvas = surface.getCanvas(); - canvas.clear(Float32Array.of(0, 0, 0, 0)); - const paint = Skia.Paint(); - paint.setColor(Skia.Color("white")); - paint.setAntiAlias(true); - canvas.drawCircle(SPRITE_SIZE / 2, SPRITE_SIZE / 2, SPRITE_SIZE / 2, paint); - return surface.makeImageSnapshot(); -}; - -const dotImage = makeDotImage(); -const spriteRect = rect(0, 0, SPRITE_SIZE, SPRITE_SIZE); - -export const AtlasExample = () => { - const { width } = useWindowDimensions(); - const cols = Math.floor((width - 2 * PADDING) / (SPRITE_SIZE + 8)); - const rows = 4; - const count = cols * rows; - const canvasHeight = rows * (SPRITE_SIZE + 8) + 2 * PADDING; - - const sprites = useMemo(() => new Array(count).fill(spriteRect), [count]); - - const transforms = useMemo( - () => - new Array(count).fill(0).map((_, i) => { - const col = i % cols; - const row = Math.floor(i / cols); - return Skia.RSXform( - 1, - 0, - PADDING + col * (SPRITE_SIZE + 8), - PADDING + row * (SPRITE_SIZE + 8) - ); - }), - [count, cols] - ); - - const colors = useMemo( - () => - new Array(count) - .fill(0) - .map((_, i) => Skia.Color(PALETTE[i % PALETTE.length])), - [count] - ); - - return ( - - Default colorBlendMode (dstOver) - - - - colorBlendMode: dstIn - - - - colorBlendMode + blendMode (layer) - - - - - ); -}; diff --git a/apps/example/src/Examples/API/BlendModes.tsx b/apps/example/src/Examples/API/BlendModes.tsx deleted file mode 100644 index e74e823d40..0000000000 --- a/apps/example/src/Examples/API/BlendModes.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import React from "react"; -import { - BlendMode, - Canvas, - Circle, - Group, - Path, - Skia, - Text, - useFont, - enumKey, -} from "@shopify/react-native-skia"; - -const r = 50; - -const blendModes = [ - "clear", - "src", - "dst", - "srcOver", - "dstOver", - "srcIn", - "dstIn", - "srcOut", - "dstOut", - "srcATop", - "dstATop", - "xor", - "plus", - "modulate", - "screen", - "overlay", - "darken", - "lighten", - "colorDodge", - "colorBurn", - "hardLight", - "softLight", - "difference", - "exclusion", - "multiply", - "hue", - "saturation", - "color", - "luminosity", -] as const; - -const SIZE = 64; -const COLS = 5; - -const src = Skia.Path.MakeFromSVGString( - [ - "M170.699 148.614C135.228 184.085 100.799 213.726 74.0057 232.813C90.1873 241.166 108.534 245.913 127.998 245.913C193.121 245.913 245.909 193.124 245.909 128.001C245.909 110.165 241.926 93.2652 234.837 78.1096C217.359 99.6154 195.456 123.859 170.699 148.615V148.614Z", - "M254.299 1.69725C247.995 -4.60656 225.09 7.01991 194.111 30.4188C175.254 17.6079 152.513 10.089 127.998 10.089C62.8758 10.089 10.0869 62.8778 10.0869 128C10.0869 152.517 17.6079 175.254 30.4188 194.113C7.01991 225.094 -4.60656 248.001 1.69725 254.301C13.1117 265.715 78.9083 218.421 148.663 148.666C218.418 78.9109 265.715 13.1111 254.298 1.69986L254.299 1.69725Z", - ].join(" ") -)!; -const dst = Skia.Path.MakeFromSVGString( - [ - "M3.75337 3.75477C10.8647 -3.35674 92.9919 -5.28784 142.454 44.1778C154.016 55.7403 163.904 67.9247 171.948 80.1734L208.991 81.7669L256 128.773L195.968 145.267C196.467 160.332 192.34 173.419 182.882 182.88C173.423 192.338 160.334 196.467 145.27 195.967L128.776 256L81.7688 208.991L80.1773 171.946C67.9284 163.902 55.7442 154.012 44.1825 142.451C-5.28603 92.9918 -3.359 10.8662 3.75637 3.75272L3.75337 3.75477ZM48.1571 79.8283C56.9032 88.5745 71.0812 88.5745 79.8252 79.8283C88.5712 71.0821 88.5712 56.9038 79.8252 48.1595C71.0791 39.4133 56.9012 39.4133 48.1571 48.1595C39.4111 56.9038 39.4111 71.0841 48.1571 79.8283Z", - "M195.01 222.191C184.687 211.867 183.417 199.108 191.258 191.264C199.098 183.425 211.857 184.692 222.184 195.017C235.86 208.692 242.751 238.822 240.785 240.789C238.817 242.759 208.688 235.867 195.01 222.191Z", - ].join(" ") -)!; - -export const BlendModes = () => { - const font = useFont(require("../../assets/SF-Pro-Display-Bold.otf"), 50); - return ( - - - - - - - - - - - - - {blendModes.map((blendMode, i) => { - const paint = Skia.Paint(); - paint.setBlendMode(BlendMode[enumKey(blendMode)]); - return ( - - - - - - - - ); - })} - - - ); -}; diff --git a/apps/example/src/Examples/API/Clipping.tsx b/apps/example/src/Examples/API/Clipping.tsx deleted file mode 100644 index dc1814fe1c..0000000000 --- a/apps/example/src/Examples/API/Clipping.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import React, { useMemo } from "react"; -import { ScrollView, useWindowDimensions } from "react-native"; -import { - Skia, - Canvas, - Image, - Group, - Circle, - Rect, - Mask, - useImage, - mix, -} from "@shopify/react-native-skia"; -import { useDerivedValue } from "react-native-reanimated"; - -import { useLoop } from "../../components/Animations"; - -const star = Skia.Path.MakeFromSVGString( - "M 293.4 16 C 266.3 16 244.4 37.9 244.4 65 C 244.4 92.1 266.3 114 293.4 114 C 320.4 114 342.4 92.1 342.4 65 C 342.4 37.9 320.4 16 293.4 16 Z M 311 90.6 L 293.4 81.1 L 275.7 90.6 L 279.2 70.9 L 264.8 57 L 284.6 54.2 L 293.4 36.2 L 302.1 54.2 L 321.9 57 L 307.5 70.9 L 311 90.6 V 90.6 Z" -)!; -const PADDING = 16; - -export const Clipping = () => { - const { width } = useWindowDimensions(); - const SIZE = width / 4; - const clipRRect = useMemo( - () => - Skia.RRectXY( - Skia.XYWHRect( - PADDING + SIZE + PADDING * 2, - PADDING * 2, - SIZE - 2 * PADDING, - SIZE - 2 * PADDING - ), - 25, - 25 - ), - [SIZE] - ); - - const progress = useLoop({ duration: 3000 }); - const x = useDerivedValue(() => mix(progress.value, 0, 200), [progress]); - const oslo = useImage(require("../../assets/oslo.jpg")); - - return ( - - - - - - - - - - - - - - - -
- } - > - - - - - - - } - > - - -
- - ); -}; diff --git a/apps/example/src/Examples/API/ColorFilter.tsx b/apps/example/src/Examples/API/ColorFilter.tsx deleted file mode 100644 index 50cf354fcb..0000000000 --- a/apps/example/src/Examples/API/ColorFilter.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import React, { useMemo } from "react"; -import { ScrollView, useWindowDimensions, View } from "react-native"; -import { - Skia, - PaintStyle, - useImage, - TileMode, - Canvas, - Group, - BlendColor, - Circle, - Image, - Lerp, - ColorMatrix, - LinearToSRGBGamma, - SRGBToLinearGamma, - SkiaPictureView, - createPicture, - Fill, -} from "@shopify/react-native-skia"; - -import { Title } from "./components/Title"; - -const card = require("../../assets/zurich.jpg"); - -const paint = Skia.Paint(); -paint.setAntiAlias(true); -paint.setColor(Skia.Color("#61DAFB")); - -const strokePaint = paint.copy(); -strokePaint.setStyle(PaintStyle.Stroke); -strokePaint.setStrokeWidth(2); - -const blackAndWhite = [ - 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -]; -const purple = [ - 1, -0.2, 0, 0, 0, 0, 1, 0, -0.1, 0, 0, 1.2, 1, 0.1, 0, 0, 0, 1.7, 1, 0, -]; - -// TODO: use examples from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform -// Once the Path API is available. -export const ColorFilter = () => { - const { width } = useWindowDimensions(); - const aspectRatio = 3057 / 5435; - const IMG_WIDTH = width / 2; - const IMG_HEIGHT = IMG_WIDTH * aspectRatio; - - const image = useImage(card); - - const matrixDraw = createPicture((canvas) => { - const rect1 = Skia.XYWHRect(0, 0, IMG_WIDTH, IMG_HEIGHT); - const rect2 = Skia.XYWHRect(IMG_WIDTH, 0, IMG_WIDTH, IMG_HEIGHT); - const rect3 = Skia.XYWHRect(0, IMG_HEIGHT, IMG_WIDTH, IMG_HEIGHT); - const rect4 = Skia.XYWHRect(IMG_WIDTH, IMG_HEIGHT, IMG_WIDTH, IMG_HEIGHT); - if (image) { - const imgRect = Skia.XYWHRect(0, 0, image.width(), image.height()); - canvas.drawImageRect(image, imgRect, rect1, paint); - const p2 = paint.copy(); - p2.setColorFilter( - Skia.ColorFilter.MakeMatrix([ - -0.578, 0.99, 0.588, 0, 0, 0.469, 0.535, -0.003, 0, 0, 0.015, 1.69, - -0.703, 0, 0, 0, 0, 0, 1, 0, - ]) - ); - canvas.drawImageRect(image, imgRect, rect2, p2); - const p3 = paint.copy(); - p3.setColorFilter( - Skia.ColorFilter.MakeMatrix([ - 1, 0, 0, 0, 0.262, 0, 1, 0, 0, 0.262, 0, 0, 1, 0, 0.262, 0, 0, 0, 1, - 0, - ]) - ); - canvas.drawImageRect(image, imgRect, rect3, p3); - const p4 = paint.copy(); - p4.setColorFilter( - Skia.ColorFilter.MakeMatrix([ - 0.393, 0.768, 0.188, 0, 0, 0.349, 0.685, 0.167, 0, 0, 0.272, 0.533, - 0.13, 0, 0, 0, 0, 0, 1, 0, - ]) - ); - canvas.drawImageRect(image, imgRect, rect4, p4); - } - }); - - const imageFilterDraw = createPicture((canvas) => { - const rect1 = Skia.XYWHRect(0, 0, IMG_WIDTH, IMG_HEIGHT); - const rect2 = Skia.XYWHRect(IMG_WIDTH, 0, IMG_WIDTH, IMG_HEIGHT); - if (image) { - const imgRect = Skia.XYWHRect(0, 0, image.width(), image.height()); - const p1 = paint.copy(); - p1.setImageFilter(Skia.ImageFilter.MakeBlur(5, 5, TileMode.Decal, null)); - canvas.drawImageRect(image, imgRect, rect1, p1); - const p2 = paint.copy(); - p2.setImageFilter( - Skia.ImageFilter.MakeColorFilter( - Skia.ColorFilter.MakeMatrix([ - 1.49, 0, 0, -0.247, 0, 1.49, 0, 0, -0.247, 0, 0, 1.49, 0, -0.247, 0, - 0, 0, 1, 0, - ]), - null - ) - ); - canvas.drawImageRect(image, imgRect, rect2, p2); - } - }); - - const style = useMemo( - () => ({ width: width, height: IMG_HEIGHT * 2 }), - [IMG_HEIGHT, width] - ); - - const r = IMG_HEIGHT; - - return ( - - Color Matrix Filter - - Image Filter - - Other - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; diff --git a/apps/example/src/Examples/API/Data.tsx b/apps/example/src/Examples/API/Data.tsx deleted file mode 100644 index 4d8f6122ab..0000000000 --- a/apps/example/src/Examples/API/Data.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from "react"; -import { - AlphaType, - Canvas, - ColorType, - Image, - Skia, -} from "@shopify/react-native-skia"; -import { PixelRatio } from "react-native"; - -const pixels = new Uint8Array(256 * 256 * 4); -pixels.fill(255); -let i = 0; -for (let x = 0; x < 256 * 4; x++) { - for (let y = 0; y < 256 * 4; y++) { - pixels[i++] = (x * y) % 255; - } -} -const data = Skia.Data.fromBytes(pixels); -const img = Skia.Image.MakeImage( - { - width: 256, - height: 256, - alphaType: AlphaType.Opaque, - colorType: ColorType.RGBA_8888, - }, - data, - 256 * 4 -)!; - -const pd = PixelRatio.get(); -const surface = Skia.Surface.MakeOffscreen(256 * pd, 256 * pd)!; -const canvas = surface.getCanvas(); -canvas.save(); -canvas.scale(pd, pd); -canvas.drawColor(Skia.Color("cyan")); -const paint = Skia.Paint(); -paint.setColor(Skia.Color("magenta")); -canvas.drawCircle(128, 128, 128, paint); -canvas.restore(); -const img1 = surface.makeImageSnapshot().makeNonTextureImage(); - -export const Data = () => { - return ( - - - - - ); -}; diff --git a/apps/example/src/Examples/API/FirstFrame.tsx b/apps/example/src/Examples/API/FirstFrame.tsx deleted file mode 100644 index e4114075d3..0000000000 --- a/apps/example/src/Examples/API/FirstFrame.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React, { useState, useEffect } from "react"; -import { - Button, - StyleSheet, - Text, - useWindowDimensions, - View, -} from "react-native"; -import { useNavigation } from "@react-navigation/native"; -import type { NativeStackNavigationProp } from "@react-navigation/native-stack"; -import { - Canvas, - Circle, - Skia, - SkiaPictureView, -} from "@shopify/react-native-skia"; -import { ScrollView } from "react-native-gesture-handler"; - -import { AnimationWithTouchHandler } from "../Reanimated/AnimationWithTouchHandler"; - -import type { Routes } from "./Routes"; - -const red = Skia.PictureRecorder(); -const canvas = red.beginRecording(Skia.XYWHRect(0, 0, 200, 200)); -const paint = Skia.Paint(); -paint.setColor(Skia.Color("green")); -canvas.drawCircle(100, 100, 50, paint); -const picture = red.finishRecordingAsPicture(); - -export const FirstFrame = () => { - const { width } = useWindowDimensions(); - const [count, setCount] = useState(0); - const [isRunning, setIsRunning] = useState(true); - const navigation = - useNavigation>(); - - useEffect(() => { - if (isRunning) { - const interval = setInterval(() => { - setCount((value) => value + 1); - }, 200); - - return () => clearInterval(interval); - } - return undefined; - }, [isRunning]); - - return ( - - -