Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
2348da1
fix(ci): upgrade changesets action to newest version (#404)
artus9033 Jun 30, 2026
025372a
fix(ci): resolve changesets failing on CI due to cached faulty NodeJS…
artus9033 Jun 30, 2026
9c0ee0f
chore(release): version packages (#399)
github-actions[bot] Jul 1, 2026
10ff597
feat: add Expo 56 support (#360)
adamTrz Jul 2, 2026
3d013ca
chore(release): version packages (#408)
github-actions[bot] Jul 2, 2026
7cf35de
chore: bump BGP (#409)
hurali97 Jul 2, 2026
03c2496
chore: run changeset (#410)
hurali97 Jul 2, 2026
ae4e61f
chore(release): version packages (#411)
github-actions[bot] Jul 2, 2026
dee9559
refactor: drop support for expo 54 (#407)
hurali97 Jul 6, 2026
803f8ca
fix: duplicate .so resources on cold builds (#414)
artus9033 Jul 6, 2026
1280e08
chore(release): version packages (#415)
github-actions[bot] Jul 6, 2026
2b9e721
fix(test): stabilize postMessage toast E2E test on iOS (#416)
artus9033 Jul 7, 2026
ed87aee
chore: use changeset publish command (#418)
artus9033 Jul 7, 2026
28b534e
fix: wire merge classes to asm transformer (#417)
hurali97 Jul 8, 2026
25cc58e
feat: harden ExpoApp56 E2E (#419)
artus9033 Jul 8, 2026
dd1082a
refactor: remove deprecated apis from brownfield-gradle-plugin (#367)
hurali97 Jul 9, 2026
76ec785
chore(release): version packages (#421)
github-actions[bot] Jul 9, 2026
39cf6a7
feat: add expo 57 support (#413)
hurali97 Jul 10, 2026
918b9f2
chore(release): version packages (#423)
github-actions[bot] Jul 13, 2026
627fcbc
feat: add support for callback parameters and promise return types in…
Doko-Demo-Doa Jul 13, 2026
1e08ea5
fix: check-expo-beta script not to conflict in WS (#426)
artus9033 Jul 14, 2026
ac208d3
Merge upstream/main into e2e-for-android
DanielPotorCK Jul 14, 2026
25c1c3c
ci: add Expo 56 Android Detox E2E for AndroidApp
DanielPotorCK Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 3 additions & 2 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@
"@callstack/brownfield-example-android-app",
"@callstack/brownfield-example-ios-app",
"@callstack/brownfield-example-rn-app",
"@callstack/brownfield-example-expo-app-54",
"@callstack/brownfield-example-expo-app-55",
"@callstack/brownfield-example-expo-app-56",
"@callstack/brownfield-gradle-plugin-react",
"@callstack/brownfield-example-shared-tests",
"@callstack/brownfield-gradle-plugin-react"
"@callstack/brownfield-example-expo-app-57"
],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"onlyUpdatePeerDependentsWhenOutOfRange": true,
Expand Down
5 changes: 0 additions & 5 deletions .changeset/fair-swans-remain.md

This file was deleted.

6 changes: 0 additions & 6 deletions .changeset/nine-mice-fall.md

This file was deleted.

6 changes: 6 additions & 0 deletions .changeset/small-clouds-train.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@callstack/brownfield-navigation': minor
'@callstack/brownfield-cli': minor
---

feat: add support for callback and promise to brownfield navigation
6 changes: 0 additions & 6 deletions .changeset/vast-waves-itch.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/young-snails-lose.md

This file was deleted.

7 changes: 7 additions & 0 deletions .github/actions/androidapp-road-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ inputs:
required: false
default: 'true'

skip-setup:
description: 'Skip yarn install/build when the caller already prepared the monorepo (e.g. Expo preview workflow)'
required: false
default: 'false'

run-e2e:
description: 'Run Detox E2E after packaging (uses release APK with embedded JS bundle, no Metro). Ignored when e2e-phase is set.'
required: false
Expand Down Expand Up @@ -71,6 +76,7 @@ runs:
shell: bash

- name: Setup
if: inputs.skip-setup != 'true'
uses: ./.github/actions/setup
with:
restore-turbo-cache: ${{ inputs.restore-turbo-cache }}
Expand Down Expand Up @@ -394,6 +400,7 @@ runs:
cd apps/AndroidApp
yarn "$ANDROIDAPP_E2E_TEST_SCRIPT"
env:
ANDROIDAPP_VARIANT: ${{ inputs.flavor }}
ANDROIDAPP_E2E_TEST_SCRIPT: ${{ env.ANDROIDAPP_E2E_TEST_SCRIPT }}

- name: Save Android ccache (after E2E)
Expand Down
6 changes: 6 additions & 0 deletions .github/actions/appleapp-road-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ inputs:
required: false
default: 'true'

skip-setup:
description: 'Skip yarn install/build when the caller already prepared the monorepo (e.g. Expo preview workflow)'
required: false
default: 'false'

runs:
using: composite
steps:
Expand All @@ -33,6 +38,7 @@ runs:
shell: bash

- name: Setup
if: inputs.skip-setup != 'true'
uses: ./.github/actions/setup
with:
restore-turbo-cache: ${{ inputs.restore-turbo-cache }}
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/prepare-android/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ inputs:
default: 'false'

gradle-workflow-job-context:
description: 'Segment Gradle cache per app/project (e.g. vanilla, expo54). Falls back to github.job when empty.'
description: 'Segment Gradle cache per app/project (e.g. vanilla, expo55). Falls back to github.job when empty.'
required: false
default: ''

Expand Down
2 changes: 2 additions & 0 deletions .github/actions/setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@ runs:
uses: actions/setup-node@65d868f8d4d85d7d4abb7de0875cde3fcc8798f5 # v6
with:
node-version: 'lts/*'
check-latest: true
cache: 'yarn'

- name: Setup Node.js (no cache)
if: inputs.disable-cache == 'true'
uses: actions/setup-node@65d868f8d4d85d7d4abb7de0875cde3fcc8798f5 # v6
with:
node-version: 'lts/*'
check-latest: true
package-manager-cache: false

- name: Restore Turbo cache
Expand Down
87 changes: 78 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ jobs:
outputs:
packages: ${{ steps.filter.outputs.packages }}
rnapp: ${{ steps.filter.outputs.rnapp }}
expo54: ${{ steps.filter.outputs.expo54 }}
expo55: ${{ steps.filter.outputs.expo55 }}
expo56: ${{ steps.filter.outputs.expo56 }}
androidapp: ${{ steps.filter.outputs.androidapp }}
appleapp: ${{ steps.filter.outputs.appleapp }}
gradle-plugins: ${{ steps.filter.outputs.gradle-plugins }}
ci: ${{ steps.filter.outputs.ci }}
steps:
- name: Checkout
Expand All @@ -41,18 +42,20 @@ jobs:
rnapp:
- 'apps/RNApp/**'
- 'apps/brownfield-example-shared-tests/**'
expo54:
- 'apps/ExpoApp54/**'
- 'apps/brownfield-example-shared-tests/**'
expo55:
- 'apps/ExpoApp55/**'
- 'apps/brownfield-example-shared-tests/**'
expo56:
- 'apps/ExpoApp56/**'
- 'apps/brownfield-example-shared-tests/**'
androidapp:
- 'apps/AndroidApp/**'
- 'apps/brownfield-example-shared-tests/**'
appleapp:
- 'apps/AppleApp/**'
- 'apps/brownfield-example-shared-tests/**'
gradle-plugins:
- 'gradle-plugins/**'
ci:
- '.github/**'

Expand Down Expand Up @@ -137,17 +140,19 @@ jobs:
if: |
always() &&
(
needs.filter.outputs.expo54 == 'true' ||
needs.filter.outputs.expo55 == 'true' ||
needs.filter.outputs.expo56 == 'true' ||
needs.filter.outputs.androidapp == 'true' ||
needs.filter.outputs.packages == 'true' ||
needs.filter.outputs.gradle-plugins == 'true' ||
needs.filter.outputs.ci == 'true'
) &&
(needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped')
strategy:
matrix:
include:
- version: '54'
- version: '55'
- version: '56'

steps:
- name: Checkout
Expand All @@ -172,6 +177,7 @@ jobs:
needs.filter.outputs.expo55 == 'true' ||
needs.filter.outputs.androidapp == 'true' ||
needs.filter.outputs.packages == 'true' ||
needs.filter.outputs.gradle-plugins == 'true' ||
needs.filter.outputs.ci == 'true'
) &&
(needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped')
Expand Down Expand Up @@ -201,6 +207,7 @@ jobs:
needs.filter.outputs.expo55 == 'true' ||
needs.filter.outputs.androidapp == 'true' ||
needs.filter.outputs.packages == 'true' ||
needs.filter.outputs.gradle-plugins == 'true' ||
needs.filter.outputs.ci == 'true'
) &&
(needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped') &&
Expand All @@ -220,6 +227,67 @@ jobs:
e2e-apk-artifact-name: androidapp-expo55-e2e-apks
e2e-artifact-name: detox-androidapp-expo55

android-androidapp-expo56-build:
name: Build AndroidApp & Detox APKs (Expo 56)
runs-on: ubuntu-latest
timeout-minutes: 120
needs: [filter, build-lint]
if: |
always() &&
(
needs.filter.outputs.expo56 == 'true' ||
needs.filter.outputs.androidapp == 'true' ||
needs.filter.outputs.packages == 'true' ||
needs.filter.outputs.gradle-plugins == 'true' ||
needs.filter.outputs.ci == 'true'
) &&
(needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped')

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

- name: Build Expo 56 AndroidApp Detox APKs
uses: ./.github/actions/androidapp-road-test
with:
flavor: expo56
rn-project-path: apps/ExpoApp56
rn-project-maven-path: com/callstack/rnbrownfield/demo/expoapp56/brownfieldlib
e2e-phase: build
e2e-apk-artifact-name: androidapp-expo56-e2e-apks
e2e-artifact-name: detox-androidapp-expo56

android-androidapp-expo56-e2e:
name: Detox E2E (AndroidApp - Expo 56)
runs-on: ubuntu-latest
timeout-minutes: 90
needs: [filter, build-lint, android-androidapp-expo56-build]
if: |
always() &&
(
needs.filter.outputs.expo56 == 'true' ||
needs.filter.outputs.androidapp == 'true' ||
needs.filter.outputs.packages == 'true' ||
needs.filter.outputs.gradle-plugins == 'true' ||
needs.filter.outputs.ci == 'true'
) &&
(needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped') &&
needs.android-androidapp-expo56-build.result == 'success'

steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

- name: Run Expo 56 Detox E2E (prebuilt APKs)
uses: ./.github/actions/androidapp-road-test
with:
flavor: expo56
rn-project-path: apps/ExpoApp56
rn-project-maven-path: com/callstack/rnbrownfield/demo/expoapp56/brownfieldlib
e2e-phase: test
e2e-apk-artifact-name: androidapp-expo56-e2e-apks
e2e-artifact-name: detox-androidapp-expo56

android-androidapp-vanilla:
name: Android road test & E2E (AndroidApp - Vanilla)
runs-on: ubuntu-latest
Expand All @@ -231,6 +299,7 @@ jobs:
needs.filter.outputs.rnapp == 'true' ||
needs.filter.outputs.androidapp == 'true' ||
needs.filter.outputs.packages == 'true' ||
needs.filter.outputs.gradle-plugins == 'true' ||
needs.filter.outputs.ci == 'true'
) &&
(needs.build-lint.result == 'success' || needs.build-lint.result == 'skipped')
Expand Down Expand Up @@ -283,8 +352,8 @@ jobs:
if: |
always() &&
(
needs.filter.outputs.expo54 == 'true' ||
needs.filter.outputs.expo55 == 'true' ||
needs.filter.outputs.expo56 == 'true' ||
needs.filter.outputs.appleapp == 'true' ||
needs.filter.outputs.packages == 'true' ||
needs.filter.outputs.ci == 'true'
Expand All @@ -293,10 +362,10 @@ jobs:
strategy:
matrix:
include:
- version: '54'
run-e2e: 'false'
- version: '55'
run-e2e: 'true'
- version: '56'
run-e2e: 'true'

steps:
- name: Checkout
Expand Down
Loading