Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,21 @@ runs:

- name: Cache dependencies
id: yarn-cache
uses: actions/cache@v4
uses: actions/cache@v6
with:
path: |
**/node_modules
.yarn/install-state.gz
# key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}-${{ hashFiles('**/package.json', '!node_modules/**') }}
# Deliberately no `restore-keys` fallback: a fallback match restores
# node_modules/.yarn/install-state.gz from an OLDER lockfile/package.json
# state (any change to either misses the exact key below), and `yarn
# install --immutable` then reconciles incrementally on top of that
# stale state instead of a clean install. patch-package (run via
# postinstall) is sensitive to exact package content and doesn't
# reliably re-apply patches in that scenario — this caused CI to
# intermittently fail with "cannot apply the following patch file"
# after any dependency version bump. Exact-match-or-miss avoids it.
key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock', 'example/yarn.lock') }}-${{ hashFiles('package.json', 'example/package.json') }}
restore-keys: |
${{ runner.os }}-yarn-

- name: Install dependencies
if: steps.yarn-cache.outputs.cache-hit != 'true'
Expand Down
157 changes: 81 additions & 76 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,27 +27,28 @@ jobs:
- name: Setup
uses: ./.github/actions/setup

- name: install bundler dependencies
run: |
cd example
bundle install

- name: Cache cocoapods
id: cocoapods-cache
uses: actions/cache@v4
- name: Cache SwiftPM artifacts
uses: actions/cache@v6
with:
path: |
**/ios/Pods
key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }}
path: ~/Library/Caches/ReactNative/spm-artifacts
key: ${{ runner.os }}-spm-artifacts-${{ hashFiles('example/node_modules/react-native/package.json') }}
restore-keys: |
${{ runner.os }}-cocoapods-
${{ runner.os }}-spm-artifacts-

- name: Install cocoapods
- name: Set up SwiftPM
run: |
cd example/ios
bundle exec pod install
env:
NO_FLIPPER: 1
# download-spm-artifacts.js resolves Hermes via the `hermes-compiler`
# npm package's `latest-v1` dist-tag by default — a rolling tag
# decoupled from the exact `hermes-compiler` version react-native
# itself depends on (used to bytecode-compile the JS bundle). When
# they drift, the app crashes at launch with a Hermes bytecode
# version mismatch ("Wrong bytecode version. Expected X but got Y").
# Pin HERMES_VERSION to the installed react-native's own resolved
# hermes-compiler version so both always match.
export HERMES_VERSION=$(node -p "require('../node_modules/react-native/package.json').dependencies['hermes-compiler']")
echo "Pinning HERMES_VERSION=${HERMES_VERSION}"
npx react-native spm update --yes

- name: run tests
run: |
Expand All @@ -66,27 +67,28 @@ jobs:
- name: Setup
uses: ./.github/actions/setup

- name: install bundler dependencies
run: |
cd example
bundle install

- name: Cache cocoapods
id: cocoapods-cache
- name: Cache SwiftPM artifacts
uses: actions/cache@v4
with:
path: |
**/ios/Pods
key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }}
path: ~/Library/Caches/ReactNative/spm-artifacts
key: ${{ runner.os }}-spm-artifacts-${{ hashFiles('example/node_modules/react-native/package.json') }}
restore-keys: |
${{ runner.os }}-cocoapods-
${{ runner.os }}-spm-artifacts-

- name: Install cocoapods
- name: Set up SwiftPM
run: |
cd example/ios
bundle exec pod install
env:
NO_FLIPPER: 1
# download-spm-artifacts.js resolves Hermes via the `hermes-compiler`
# npm package's `latest-v1` dist-tag by default — a rolling tag
# decoupled from the exact `hermes-compiler` version react-native
# itself depends on (used to bytecode-compile the JS bundle). When
# they drift, the app crashes at launch with a Hermes bytecode
# version mismatch ("Wrong bytecode version. Expected X but got Y").
# Pin HERMES_VERSION to the installed react-native's own resolved
# hermes-compiler version so both always match.
export HERMES_VERSION=$(node -p "require('../node_modules/react-native/package.json').dependencies['hermes-compiler']")
echo "Pinning HERMES_VERSION=${HERMES_VERSION}"
npx react-native spm update --yes

- name: run tests
run: |
Expand All @@ -105,27 +107,28 @@ jobs:
- name: Setup
uses: ./.github/actions/setup

- name: install bundler dependencies
run: |
cd example
bundle install

- name: Cache cocoapods
id: cocoapods-cache
- name: Cache SwiftPM artifacts
uses: actions/cache@v4
with:
path: |
**/ios/Pods
key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }}
path: ~/Library/Caches/ReactNative/spm-artifacts
key: ${{ runner.os }}-spm-artifacts-${{ hashFiles('example/node_modules/react-native/package.json') }}
restore-keys: |
${{ runner.os }}-cocoapods-
${{ runner.os }}-spm-artifacts-

- name: Install cocoapods
- name: Set up SwiftPM
run: |
cd example/ios
bundle exec pod install
env:
NO_FLIPPER: 1
# download-spm-artifacts.js resolves Hermes via the `hermes-compiler`
# npm package's `latest-v1` dist-tag by default — a rolling tag
# decoupled from the exact `hermes-compiler` version react-native
# itself depends on (used to bytecode-compile the JS bundle). When
# they drift, the app crashes at launch with a Hermes bytecode
# version mismatch ("Wrong bytecode version. Expected X but got Y").
# Pin HERMES_VERSION to the installed react-native's own resolved
# hermes-compiler version so both always match.
export HERMES_VERSION=$(node -p "require('../node_modules/react-native/package.json').dependencies['hermes-compiler']")
echo "Pinning HERMES_VERSION=${HERMES_VERSION}"
npx react-native spm update --yes

- name: run tests
run: |
Expand All @@ -144,27 +147,28 @@ jobs:
- name: Setup
uses: ./.github/actions/setup

- name: install bundler dependencies
run: |
cd example
bundle install

- name: Cache cocoapods
id: cocoapods-cache
- name: Cache SwiftPM artifacts
uses: actions/cache@v4
with:
path: |
**/ios/Pods
key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }}
path: ~/Library/Caches/ReactNative/spm-artifacts
key: ${{ runner.os }}-spm-artifacts-${{ hashFiles('example/node_modules/react-native/package.json') }}
restore-keys: |
${{ runner.os }}-cocoapods-
${{ runner.os }}-spm-artifacts-

- name: Install cocoapods
- name: Set up SwiftPM
run: |
cd example/ios
bundle exec pod install
env:
NO_FLIPPER: 1
# download-spm-artifacts.js resolves Hermes via the `hermes-compiler`
# npm package's `latest-v1` dist-tag by default — a rolling tag
# decoupled from the exact `hermes-compiler` version react-native
# itself depends on (used to bytecode-compile the JS bundle). When
# they drift, the app crashes at launch with a Hermes bytecode
# version mismatch ("Wrong bytecode version. Expected X but got Y").
# Pin HERMES_VERSION to the installed react-native's own resolved
# hermes-compiler version so both always match.
export HERMES_VERSION=$(node -p "require('../node_modules/react-native/package.json').dependencies['hermes-compiler']")
echo "Pinning HERMES_VERSION=${HERMES_VERSION}"
npx react-native spm update --yes

- name: run tests
run: |
Expand Down Expand Up @@ -414,27 +418,28 @@ jobs:
- name: Setup
uses: ./.github/actions/setup

- name: install bundler dependencies
run: |
cd example
bundle install

- name: Cache cocoapods
id: cocoapods-cache
- name: Cache SwiftPM artifacts
uses: actions/cache@v4
with:
path: |
**/ios/Pods
key: ${{ runner.os }}-cocoapods-${{ hashFiles('example/ios/Podfile.lock') }}
path: ~/Library/Caches/ReactNative/spm-artifacts
key: ${{ runner.os }}-spm-artifacts-${{ hashFiles('example/node_modules/react-native/package.json') }}
restore-keys: |
${{ runner.os }}-cocoapods-
${{ runner.os }}-spm-artifacts-

- name: Install cocoapods
- name: Set up SwiftPM
run: |
cd example/ios
bundle exec pod install
env:
NO_FLIPPER: 1
# download-spm-artifacts.js resolves Hermes via the `hermes-compiler`
# npm package's `latest-v1` dist-tag by default — a rolling tag
# decoupled from the exact `hermes-compiler` version react-native
# itself depends on (used to bytecode-compile the JS bundle). When
# they drift, the app crashes at launch with a Hermes bytecode
# version mismatch ("Wrong bytecode version. Expected X but got Y").
# Pin HERMES_VERSION to the installed react-native's own resolved
# hermes-compiler version so both always match.
export HERMES_VERSION=$(node -p "require('../node_modules/react-native/package.json').dependencies['hermes-compiler']")
echo "Pinning HERMES_VERSION=${HERMES_VERSION}"
npx react-native spm update --yes

- name: run tests
run: |
Expand Down
16 changes: 14 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,17 @@ android/c_sources
# c_sources/

scripts/sqlite-vec-*
turso/
.tmp/
# Root-level turso SDK source checkout used by build-turso-binaries.sh — not
# anchored with a trailing-slash-only pattern, this also matched cpp/turso/
# (the real, tracked source dir for the turso backend bridge), silently
# untracking turso_bridge.cpp after it was moved there.
/turso/
.tmp/

# SwiftPM (regenerated on every manifest evaluation)
.build/
.swiftpm/
Package.resolved
# Leftover temp file if `react-native spm scaffold`/`read-podspec.js` gets
# interrupted mid-run before its own cleanup step
.spm-scaffold-*
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v20
v24
Loading
Loading