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
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Trailhead

A hike recording and trail browsing app. Expo SDK 57, React Native 0.86,
A hike recording and trail browsing app. Expo SDK 58 canary, React Native 0.87,
TypeScript, expo-router.

## Layout
Expand Down Expand Up @@ -46,7 +46,7 @@ repo-root `.env`. The app builds without a key and shows blank map tiles.
## Running

```bash
npm install
npm ci
bundle install
npx expo run:ios # or: npx expo run:android
```
Expand Down
17 changes: 15 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ https://github.com/user-attachments/assets/21596f10-5220-42e2-8061-237d29df3e8b

## Stack

Expo SDK 57, React Native 0.86, TypeScript, expo-router. Maps via
Expo SDK 58 canary, React Native 0.87, TypeScript, expo-router. Maps via
`react-native-maps`, charts via `@shopify/react-native-skia`, lists via
`@shopify/flash-list`, storage via `expo-sqlite` with Drizzle, preferences via
`react-native-mmkv`, animation via Reanimated and Gesture Handler.
Expand All @@ -33,7 +33,7 @@ The native projects are committed; `expo prebuild` is not part of the build.
## Getting started

```bash
npm install
npm ci
bundle install
npx --package=stim-cli stim doctor
npx --package=stim-cli stim start
Expand All @@ -51,5 +51,18 @@ Trailhead has no EAS build or simulator configuration.
The repository pins Ruby 3.3.4 and CocoaPods 1.16.2. Run direct CocoaPods
commands through Bundler, for example `cd ios && bundle exec pod install`.

The SDK 58 canary is pinned with all Expo modules in `package-lock.json`.
Scoped npm overrides align Vector Icons' Expo Font, Drizzle's Expo SQLite, and
Expo Modules Core's Worklets peer ranges with the verified root versions.
Worklets' Metro configuration peer is installed explicitly; `npm ci` and
`npm ls --all` work without ignoring peer dependencies. Reanimated 4.6.0, Worklets
0.12.1, Safe Area Context 5.9.1, and Skia 2.11.2 are excluded from
`expo install --fix`: the canary's older recommendations fail native builds
with this dependency set. ExpoVideo builds from source on iOS because its
canary prebuilt framework depends on an unavailable `Testing.framework` and
aborts at launch. Other prebuilt Expo modules stay enabled.
TypeScript uses RN's temporary `react-native-legacy-deep-imports` condition
until the dependencies support the new strict types.

See [AGENTS.md](./AGENTS.md) for how the project is laid out and the native setup
gotchas, and [bench/README.md](./bench/README.md) for the build benchmark harness.
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ android {
def enableShrinkResources = findProperty('android.enableShrinkResourcesInReleaseBuilds') ?: 'false'
shrinkResources enableShrinkResources.toBoolean()
minifyEnabled enableMinifyInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"
def enablePngCrunchInRelease = findProperty('android.enablePngCrunchInReleaseBuilds') ?: 'true'
crunchPngs enablePngCrunchInRelease.toBoolean()
}
Expand Down
2 changes: 2 additions & 0 deletions android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ org.gradle.parallel=true
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
android.builtInKotlin=false
android.newDsl=false

# Enable AAPT2 PNG crunching
android.enablePngCrunchInReleaseBuilds=true
Expand Down
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Loading