Make sure you've got the Expo CLI and Node.js installed. If not, follow the official Expo install guide.
You can read the full Expo documentation here.
⚠️ Sometimes CocoaPods fails to install properly. If that's the case, try installing it via Homebrew:brew install cocoapods
npm installInstalls all packages listed in package.json, including workspace packages (@gsv/ui, @gsv/constants).
This app uses custom native modules (NFC, Liquid Glass) and therefore cannot run in Expo Go. You must use a development build.
npx expo prebuildGenerates the ios/ and android/ native project files from app.json and the registered plugins.
eas build --profile development --platform ioseas build --profile development --platform androidInstall the resulting .ipa / .apk on your device or simulator.
npm startOr, if your device is connected via USB:
npm run start:usbOr over a tunnel (for remote devices):
npm run start:tunnelAfter running npx expo prebuild, open the workspace in Xcode before running or debugging the app:
open ios/gsvexpoapp.xcworkspaceOnce Xcode is open:
- Go to gsvexpoapp > Targets > Signing & Capabilities
- For each build configuration (Debug, Release):
- Ensure Team is set to
G.S.V MATERIELUDLEJNING AS - Make sure Automatically manage signing is enabled
- Ensure Team is set to
npm run iosOr target a specific device:
npx expo run:ios --devicexcrun simctl list devicesnpm run iosnpm run androidnpm run webDefined in eas.json:
| Profile | Distribution | Notes |
|---|---|---|
development |
Internal | Includes expo-dev-client |
preview |
Internal | Production-like, internal testing |
production |
Store | Auto-increments version |
Build for a specific profile:
eas build --profile <profile> --platform <ios|android>The app includes Storybook for component development and visual testing.
npm run storybookStories are located in components/stories/.
Custom Expo module wrapping platform-native NFC APIs:
- iOS: CoreNFC (
NFCNDEFReaderSession) - Android:
android.nfc.NfcAdapter
⚠️ Requires a development build — will not work in Expo Go. Runnpx expo prebuildand build via EAS before using NFC features.
Custom native view module providing the Liquid Glass UI effect (iOS only).
If you see errors about missing native modules (e.g., GsvNfc, GsvLiquidGlass):
- Make sure you have run
npx expo prebuild - Rebuild the development client via EAS
- Do not try to run the app in Expo Go
If you see:
Command CodeSign failed with a nonzero exit code
Fix:
- Make sure your repository is not synced by iCloud.
- Move the project to a non-synced directory:
mkdir ~/not_synced && cd ~/not_synced
git clone https://github.com/ORG/gsv-expo-app.gitcd ios && pod install --repo-updateIf that doesn't work, clean the pod cache:
pod cache clean --all
cd ios && pod installOr install CocoaPods via Homebrew if it isn't available:
brew install cocoapodsrm -rf ~/Library/Developer/Xcode/DerivedDataThen rebuild in Xcode or via EAS.
rm -rf node_modules
npm installIf native behaviour is unexpected after modifying app.json or plugins:
npx expo prebuild --clean
⚠️ This will delete and regenerate theios/andandroid/directories.
If Xcode certificates become invalid:
- Open Xcode > Settings > Accounts
- Remove your Apple ID account
- Optionally delete Xcode:
sudo rm -rf /Applications/Xcode.app
- Reinstall Xcode via the App Store or Apple Developer website
- Re-sign in with your Apple ID
- Open the project again and reconfigure signing as described in the setup steps above
Happy coding 🚀