Skip to content
Draft
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: 7 additions & 7 deletions .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6.1.0

- uses: actions/setup-java@v5
- uses: actions/setup-java@v5.7.0
with:
distribution: "temurin"
java-version: "21"
distribution: temurin
java-version: 21.0.11

- uses: oven-sh/setup-bun@v2
- uses: oven-sh/setup-bun@v2.2.0
with:
bun-version: latest
bun-version: 1.3.14

- name: Install dependencies
run: bun ci
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ on:

jobs:
build:
runs-on: macos-latest
runs-on: macos-26
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6.1.0

- uses: oven-sh/setup-bun@v2
- uses: oven-sh/setup-bun@v2.2.0
with:
bun-version: latest
bun-version: 1.3.14

- name: Select Xcode
run: sudo xcode-select --switch /Applications/Xcode_26.6.app

- name: Pin CocoaPods
run: gem install cocoapods -v 1.17.0 --no-document

- name: Install dependencies
run: bun ci
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ on:

jobs:
lint:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6.1.0

- uses: oven-sh/setup-bun@v2
- uses: oven-sh/setup-bun@v2.2.0
with:
bun-version: latest
bun-version: 1.3.14

- name: Install dependencies
run: bun ci
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/test-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6.1.0

- uses: actions/setup-java@v5
- uses: actions/setup-java@v5.7.0
with:
distribution: "temurin"
java-version: "21"
distribution: temurin
java-version: 21.0.11

- uses: oven-sh/setup-bun@v2
- uses: oven-sh/setup-bun@v2.2.0
with:
bun-version: latest
bun-version: 1.3.14

- name: Install dependencies
run: bun ci
Expand Down
32 changes: 23 additions & 9 deletions .github/workflows/test-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,34 @@ on:

jobs:
test:
runs-on: macos-latest
runs-on: macos-26
timeout-minutes: 60
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6.1.0

- uses: oven-sh/setup-bun@v2
- uses: actions/setup-java@v5.7.0
with:
bun-version: latest
distribution: temurin
java-version: 21.0.11

- name: Install dependencies
run: bun ci
- uses: oven-sh/setup-bun@v2.2.0
with:
bun-version: 1.3.14

- name: Select Xcode
run: sudo xcode-select --switch /Applications/Xcode_26.6.app

- name: Pin CocoaPods
run: gem install cocoapods -v 1.17.0 --no-document

- name: Install Maestro
run: |
curl -fsSL "https://get.maestro.mobile.dev" | bash
echo "$HOME/.maestro/bin" >> $GITHUB_PATH
curl -fsSL https://github.com/mobile-dev-inc/maestro/releases/download/cli-2.8.0/maestro.zip -o "$RUNNER_TEMP/maestro.zip"
unzip -q "$RUNNER_TEMP/maestro.zip" -d "$HOME"
echo "$HOME/maestro/bin" >> "$GITHUB_PATH"

- name: Install dependencies
run: bun ci

- name: Build iOS Simulator App
env:
Expand All @@ -33,6 +45,8 @@ jobs:
- uses: futureware-tech/simulator-action@v4
with:
model: "iPhone 17 Pro"
os: "iOS"
os_version: "26.5"
wait_for_boot: true

- name: Install iOS App
Expand All @@ -54,7 +68,7 @@ jobs:

- name: Upload Debug Information
if: failure()
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v6.0.0
with:
name: debug-info
path: ./debug-info/
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/test-web.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ on:

jobs:
test:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6.1.0

- uses: oven-sh/setup-bun@v2
- uses: oven-sh/setup-bun@v2.2.0
with:
bun-version: latest
bun-version: 1.3.14

- name: Install dependencies
run: bun ci
Expand All @@ -24,7 +24,7 @@ jobs:
- name: Run Playwright tests
run: bun run --filter @scheduli/web test

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v6.0.0
if: failure()
with:
name: playwright-report
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/typecheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ on:

jobs:
typecheck:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v6.1.0

- uses: oven-sh/setup-bun@v2
- uses: oven-sh/setup-bun@v2.2.0
with:
bun-version: latest
bun-version: 1.3.14

- name: Install dependencies
run: bun ci
Expand Down
2 changes: 1 addition & 1 deletion apps/mobile/eas.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"cli": {
"version": ">= 5.2.0",
"version": "22.0.0",
"promptToConfigurePushNotifications": false,
"appVersionSource": "remote"
},
Expand Down
96 changes: 48 additions & 48 deletions apps/mobile/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,77 +4,77 @@
"private": true,
"main": "expo-router/entry",
"scripts": {
"build:ios": "bunx eas-cli build --profile production --local --platform ios --non-interactive --output dist/app.ipa",
"submit:ios": "bunx eas-cli submit --platform ios --path dist/app.ipa --non-interactive",
"build:android": "bunx eas-cli build --profile production --local --platform android --non-interactive --output dist/app.aab",
"submit:android": "bunx eas-cli submit --platform android --path dist/app.aab --non-interactive",
"build:ios": "bunx eas-cli@22.0.0 build --profile production --local --platform ios --non-interactive --output dist/app.ipa",
"submit:ios": "bunx eas-cli@22.0.0 submit --platform ios --path dist/app.ipa --non-interactive",
"build:android": "bunx eas-cli@22.0.0 build --profile production --local --platform android --non-interactive --output dist/app.aab",
"submit:android": "bunx eas-cli@22.0.0 submit --platform android --path dist/app.aab --non-interactive",
"clean": "git clean -xdf .cache .expo .turbo android ios node_modules dist",
"dev": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"test": "./scripts/maestro-test.sh",
"env:dev": "bunx eas-cli env:pull --environment development",
"build:ios:simulator": "bunx eas-cli build --platform ios --profile e2e-test --local --non-interactive --output dist/app.tar.gz && tar -xvf dist/app.tar.gz -C dist/",
"build:android:simulator": "bunx eas-cli build --platform android --profile e2e-test --local --non-interactive --output dist/app.apk",
"env:dev": "bunx eas-cli@22.0.0 env:pull --environment development",
"build:ios:simulator": "bunx eas-cli@22.0.0 build --platform ios --profile e2e-test --local --non-interactive --output dist/app.tar.gz && tar -xvf dist/app.tar.gz -C dist/",
"build:android:simulator": "bunx eas-cli@22.0.0 build --platform android --profile e2e-test --local --non-interactive --output dist/app.apk",
"install:ios:simulator": "xcrun simctl install booted dist/Scheduli.app",
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@bacons/apple-targets": "^3.0.5",
"@expo-google-fonts/poppins": "^0.4.1",
"@expo/config-plugins": "^54.0.4",
"@expo/metro-runtime": "~6.1.2",
"@fortawesome/fontawesome-svg-core": "^6.7.2",
"@fortawesome/free-solid-svg-icons": "^6.7.2",
"@fortawesome/react-native-fontawesome": "^0.3.2",
"@gorhom/bottom-sheet": "^5.2.6",
"@notifee/react-native": "^9.1.8",
"@bacons/apple-targets": "3.0.6",
"@expo-google-fonts/poppins": "0.4.1",
"@expo/config-plugins": "54.0.4",
"@expo/metro-runtime": "6.1.2",
"@fortawesome/fontawesome-svg-core": "6.7.2",
"@fortawesome/free-solid-svg-icons": "6.7.2",
"@fortawesome/react-native-fontawesome": "0.3.2",
"@gorhom/bottom-sheet": "5.2.8",
"@notifee/react-native": "9.1.8",
"@react-native-community/datetimepicker": "8.4.4",
"@react-native-picker/picker": "2.11.1",
"@rnrepo/expo-config-plugin": "^0.1.0-beta.0",
"@rnrepo/expo-config-plugin": "0.1.0-beta.1",
"@scheduli/types": "workspace:*",
"babel-preset-expo": "~54.0.9",
"expo": "~54.0.30",
"expo-application": "~7.0.7",
"expo-constants": "~18.0.12",
"expo-dev-client": "~6.0.17",
"expo-device": "~8.0.9",
"expo-file-system": "~19.0.21",
"expo-font": "~14.0.9",
"expo-haptics": "~15.0.7",
"expo-linking": "~8.0.11",
"expo-localization": "~17.0.7",
"expo-modules-core": "^3.0.29",
"expo-router": "~6.0.21",
"expo-splash-screen": "~31.0.13",
"expo-status-bar": "~3.0.8",
"nativewind": "^2.0.11",
"posthog-react-native": "^4.10.4",
"posthog-react-native-session-replay": "^1.2.1",
"babel-preset-expo": "54.0.9",
"expo": "54.0.30",
"expo-application": "7.0.8",
"expo-constants": "18.0.12",
"expo-dev-client": "6.0.20",
"expo-device": "8.0.10",
"expo-file-system": "19.0.21",
"expo-font": "14.0.10",
"expo-haptics": "15.0.8",
"expo-linking": "8.0.11",
"expo-localization": "17.0.8",
"expo-modules-core": "3.0.29",
"expo-router": "6.0.21",
"expo-splash-screen": "31.0.13",
"expo-status-bar": "3.0.9",
"nativewind": "2.0.11",
"posthog-react-native": "4.16.2",
"posthog-react-native-session-replay": "1.2.3",
"react": "catalog:",
"react-dom": "catalog:",
"react-native": "0.81.5",
"react-native-android-widget": "^0.17.2",
"react-native-gesture-handler": "~2.28.0",
"react-native-mmkv": "^3.3.3",
"react-native-modal-datetime-picker": "^18.0.0",
"react-native-paper": "^5.14.5",
"react-native-reanimated": "~4.1.3",
"react-native-android-widget": "0.17.2",
"react-native-gesture-handler": "2.28.0",
"react-native-mmkv": "3.3.3",
"react-native-modal-datetime-picker": "18.0.0",
"react-native-paper": "5.14.5",
"react-native-reanimated": "4.1.6",
"react-native-safe-area-context": "5.6.2",
"react-native-screens": "4.16.0",
"react-native-store-version": "^1.4.1",
"react-native-store-version": "1.4.1",
"react-native-svg": "15.12.1",
"react-native-web": "~0.21.1",
"react-native-web": "0.21.2",
"react-native-worklets": "0.5.1",
"typescript": "~5.9.3"
"typescript": "5.9.3"
},
"devDependencies": {
"@babel/core": "^7.28.4",
"@babel/plugin-proposal-export-namespace-from": "^7.18.9",
"@types/node": "^25.0.8",
"@babel/core": "7.28.5",
"@babel/plugin-proposal-export-namespace-from": "7.18.9",
"@types/node": "25.0.8",
"@types/react": "catalog:",
"tailwindcss": "3.3.2",
"tsx": "^4.21.0"
"tsx": "4.21.0"
},
"patchedDependencies": {
"react-native-mmkv@3.3.3": "apps/mobile/patches/react-native-mmkv@3.3.3.patch"
Expand Down
25 changes: 24 additions & 1 deletion apps/mobile/plugins/withAddPodDepsToTargets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,17 @@ target "StatusWidget" do
end
`;

const PINNED_PODS = `
pod "PostHog", "3.69.8"
`;

export const withAddPodDepsToTargets: ConfigPlugin = (config) => {
return withDangerousMod(config, [
"ios",
async (config) => {
const file = path.join(config.modRequest.platformProjectRoot, "Podfile");
const contents = await fs.promises.readFile(file, "utf8");
await fs.promises.writeFile(file, addPodDepsToTargets(contents), "utf8");
await fs.promises.writeFile(file, pinPods(addPodDepsToTargets(contents)), "utf8");
return config;
},
]);
Expand All @@ -36,3 +40,22 @@ function addPodDepsToTargets(src: string) {
comment: "#",
}).contents;
}

function pinPods(src: string) {
const result = mergeContents({
tag: `with-pinned-pods`,
src,
newSrc: PINNED_PODS.replace(/\n$/, ""),
anchor: /use_expo_modules!/,
offset: 1,
comment: "#",
});

if (!result.didMerge) {
throw new Error(
"withAddPodDepsToTargets: could not find `use_expo_modules!` in the Podfile, so pinned pods were not applied.",
);
}

return result.contents;
}
Loading
Loading