Skip to content
Merged
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
2 changes: 1 addition & 1 deletion .github/workflows/bare-diffs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
pnpm expotools generate-bare-diffs --check
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && github.event.ref == 'refs/heads/main'
if: failure() && github.event.ref == 'refs/heads/main' && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_docs }}
author_name: Check for Changes in Bare Diffs
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ concurrency:

jobs:
jest-ubuntu:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: ubuntu-24.04
strategy:
fail-fast: false
Expand Down Expand Up @@ -98,6 +99,7 @@ jobs:
run: pnpm test:e2e --max-workers 1 --shard ${{ matrix.shard }}/${{ strategy.job-total }}

jest-windows:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: windows-2022
strategy:
fail-fast: false
Expand Down Expand Up @@ -157,6 +159,7 @@ jobs:
run: pnpm test:e2e --max-workers 1 --shard ${{ matrix.shard }}/${{ strategy.job-total }}

playwright-ubuntu:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: ubuntu-24.04
steps:
- name: 👀 Checkout
Expand Down Expand Up @@ -216,6 +219,7 @@ jobs:
retention-days: 30

playwright-windows:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: windows-2022
strategy:
fail-fast: false
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/create-expo-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ concurrency:

jobs:
test:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: ubuntu-24.04
strategy:
fail-fast: false
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/create-expo-module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ concurrency:

jobs:
test:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: ubuntu-24.04
strategy:
fail-fast: false
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/development-client-latest-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
path: packages/expo-dev-client/artifacts
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && github.repository == 'expo/expo'
if: failure()
with:
webhook: ${{ secrets.slack_webhook_dev_client }}
channel: '#dev-clients'
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/fingerprint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ concurrency:

jobs:
test:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ios-prebuild-external-xcframeworks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,20 +87,20 @@ jobs:
include-hidden-files: true

- name: Authenticate to Google Cloud
if: ${{ success() && github.event.inputs.publish == 'true' }}
if: ${{ success() && github.event.inputs.publish == 'true' && github.repository == 'expo/expo' }}
uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3
with:
project_id: exponentjs
workload_identity_provider: projects/321830142373/locations/global/workloadIdentityPools/github/providers/expo

- name: Setup gcloud
if: ${{ success() && github.event.inputs.publish == 'true' }}
if: ${{ success() && github.event.inputs.publish == 'true' && github.repository == 'expo/expo' }}
uses: google-github-actions/setup-gcloud@e427ad8a34f8676edf47cf7d7925499adf3eb74f # v2
with:
project_id: exponentjs

- name: Upload XCFramework directory structure to GCS
if: ${{ success() && github.event.inputs.publish == 'true' }}
if: ${{ success() && github.event.inputs.publish == 'true' && github.repository == 'expo/expo' }}
run: |
SYNC_ROOT="$RUNNER_TEMP/precompiled-modules-upload"
rm -rf "$SYNC_ROOT"
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/ios-static-frameworks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ concurrency:

jobs:
build:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: macos-15
steps:
- name: 👀 Checkout
Expand Down Expand Up @@ -53,7 +54,7 @@ jobs:
xcodebuild -workspace ios/BareExpo.xcworkspace -scheme BareExpo -configuration Release -sdk iphonesimulator -derivedDataPath "ios/build" | xcpretty
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_ios }}
channel: '#expo-ios'
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/issue-stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:

jobs:
close-issues:
if: github.repository == 'expo/expo'
runs-on: ubuntu-24.04
steps:
- uses: actions/stale@a20b814fb01b71def3bd6f56e7494d667ddf28da # v4
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ concurrency:

jobs:
action:
if: github.repository == 'expo/expo'
runs-on: ubuntu-24.04
steps:
- uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/native-component-list.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
working-directory: apps/native-component-list
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event.ref == 'refs/heads/main')
if: failure() && (github.event.ref == 'refs/heads/main') && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_api }}
author_name: Build Native Component List
7 changes: 4 additions & 3 deletions .github/workflows/sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ concurrency:

jobs:
check-packages:
if: github.event_name != 'schedule' || github.repository == 'expo/expo'
runs-on: ubuntu-24.04
steps:
- name: 👀 Checkout
Expand Down Expand Up @@ -75,14 +76,14 @@ jobs:
run: pnpm expotools check-packages --since $SINCE --core
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_api }}
author_name: Check packages

check-packages-windows:
runs-on: windows-latest
if: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'schedule' && github.repository == 'expo/expo') }}
steps:
- name: 👀 Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
Expand All @@ -106,7 +107,7 @@ jobs:
run: pnpm expotools check-packages --all
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event_name == 'schedule' || github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_api }}
author_name: Check packages
2 changes: 2 additions & 0 deletions .github/workflows/test-react-native-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ concurrency:

jobs:
ios-build:
if: github.repository == 'expo/expo'
strategy:
fail-fast: true
matrix:
Expand Down Expand Up @@ -87,6 +88,7 @@ jobs:
author_name: React Native Nightly (iOS)

android-build:
if: github.repository == 'expo/expo'
strategy:
fail-fast: true
matrix:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-suite-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ jobs:
path: apps/bare-expo/macos/build/BareExpo.app
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_ios }}
channel: '#expo-ios'
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/test-suite-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ concurrency:

jobs:
ios-build:
if: github.repository == 'expo/expo'
runs-on: macos-15
steps:
- name: 👀 Checkout
Expand Down Expand Up @@ -87,6 +88,7 @@ jobs:
author_name: Test Suite Nightly (iOS)

ios-test:
if: github.repository == 'expo/expo'
needs: ios-build
runs-on: macos-15
steps:
Expand Down Expand Up @@ -153,6 +155,7 @@ jobs:
author_name: Test Suite Nightly (iOS)

android-build:
if: github.repository == 'expo/expo'
runs-on: ubuntu-24.04
env:
ORG_GRADLE_PROJECT_reactNativeArchitectures: x86_64
Expand Down Expand Up @@ -216,6 +219,7 @@ jobs:
author_name: Test Suite Nightly (Android)

android-test:
if: github.repository == 'expo/expo'
needs: android-build
runs-on: ubuntu-24.04
strategy:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/test-suite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ jobs:
run: ccache -s -v
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_ios }}
channel: '#expo-ios'
Expand Down Expand Up @@ -325,7 +325,7 @@ jobs:
echo "Artifacts URL: ${{ steps.upload-artifacts.outputs.artifact-url }}"
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_ios }}
channel: '#expo-ios'
Expand Down Expand Up @@ -428,7 +428,7 @@ jobs:
run: ccache -s -v
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_android }}
channel: '#expo-android'
Expand Down Expand Up @@ -507,7 +507,7 @@ jobs:
echo "Artifacts URL: ${{ steps.upload-artifacts.outputs.artifact-url }}"
- name: 🔔 Notify on Slack
uses: ./.github/actions/slack-notify
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-'))
if: failure() && (github.event.ref == 'refs/heads/main' || startsWith(github.event.ref, 'refs/heads/sdk-')) && github.repository == 'expo/expo'
with:
webhook: ${{ secrets.slack_webhook_android }}
channel: '#expo-android'
Expand Down
7 changes: 7 additions & 0 deletions apps/bare-expo/App.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ThemeProvider } from 'ThemeProvider';
import BenchmarkHelper from 'benchmark-helper';
import { ObserveRoot } from 'expo-observe';
import * as Splashscreen from 'expo-splash-screen';
import React from 'react';
Expand Down Expand Up @@ -96,6 +97,12 @@ export default function Main() {

const isLoaded = useLoaded();

React.useEffect(() => {
if (isLoaded) {
BenchmarkHelper.reportFullyDrawn();
}
}, [isLoaded]);

return (
<ObserveRoot>
<ThemeProvider>{isLoaded ? <MainNavigator /> : null}</ThemeProvider>
Expand Down
8 changes: 8 additions & 0 deletions apps/bare-expo/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,13 @@ android {
minifyEnabled enableMinifyInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
benchmark {
initWith buildTypes.release
signingConfig signingConfigs.debug
minifyEnabled false
shrinkResources false
matchingFallbacks = ['release']
}
}
packagingOptions {
jniLibs {
Expand Down Expand Up @@ -166,6 +173,7 @@ android {
dependencies {
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")
implementation expoLibs.androidx.profileinstaller

def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true";
def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true";
Expand Down
7 changes: 7 additions & 0 deletions apps/bare-expo/android/app/src/benchmark/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application>
<profileable android:shell="true" tools:targetApi="29" />
</application>
</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnable
import com.facebook.react.defaults.DefaultReactActivityDelegate

import expo.modules.ReactActivityDelegateWrapper
import expo.modules.benchmarkhelper.BenchmarkManager
import expo.modules.splashscreen.SplashScreenManager

class MainActivity : ReactActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
BenchmarkManager.delayFullDrawn(this)
SplashScreenManager.registerOnActivity(this)
super.onCreate(null)
}
Expand Down
4 changes: 4 additions & 0 deletions apps/bare-expo/android/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,8 @@ include(":expo-modules-test-core")
project(":expo-modules-test-core").projectDir = new File("../../../packages/expo-modules-test-core/android")

include ':app'

include ':macrobenchmark'
project(':macrobenchmark').projectDir = new File('../macrobenchmark')

includeBuild(expoAutolinking.reactNativeGradlePlugin)
1 change: 1 addition & 0 deletions apps/bare-expo/macrobenchmark/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
39 changes: 39 additions & 0 deletions apps/bare-expo/macrobenchmark/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
apply plugin: 'com.android.test'
apply plugin: 'org.jetbrains.kotlin.android'

android {
namespace 'dev.expo.payments.macrobenchmark'
compileSdk rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion

defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
testInstrumentationRunnerArguments['androidx.benchmark.suppressErrors'] = 'EMULATOR'
}

buildTypes {
benchmark {
debuggable true
signingConfig debug.signingConfig
matchingFallbacks = ['release']
}
}

targetProjectPath ':app'
experimentalProperties['android.experimental.self-instrumenting'] = true
}

dependencies {
implementation 'androidx.benchmark:benchmark-macro-junit4:1.4.1'
implementation expoLibs.androidx.junit
implementation expoLibs.androidx.espresso.core
implementation expoLibs.androidx.uiautomator
}

androidComponents {
beforeVariants(selector().all()) { variant ->
variant.enable = variant.buildType == 'benchmark'
}
}
6 changes: 6 additions & 0 deletions apps/bare-expo/macrobenchmark/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<queries>
<package android:name="dev.expo.payments" />
</queries>
</manifest>
Loading
Loading