Bumps the mobile-npm group with 10 updates in the /mobile directory: | Package | From | To | | --- | --- | --- | | [@react-navigation/bottom-tabs](https://github.com/react-navigation/react-navigation/tree/HEAD/packages/bottom-tabs) | `7.16.1` | `7.18.2` | | [@react-navigation/native](https://github.com/react-navigation/react-navigation/tree/HEAD/packages/native) | `7.2.5` | `7.3.3` | | [@react-navigation/native-stack](https://github.com/react-navigation/react-navigation/tree/HEAD/packages/native-stack) | `7.15.1` | `7.17.5` | | [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.100.10` | `5.101.0` | | [axios](https://github.com/axios/axios) | `1.16.1` | `1.18.0` | | [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `19.2.6` | `19.2.7` | | [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) | `19.2.15` | `19.2.17` | | [react-native](https://github.com/facebook/react-native/tree/HEAD/packages/react-native) | `0.85.3` | `0.86.0` | | [@react-native/babel-preset](https://github.com/facebook/react-native) | `0.85.3` | `0.86.0` | | [@react-native/metro-config](https://github.com/facebook/react-native/tree/HEAD/packages/metro-config) | `0.85.3` | `0.86.0` | Updates `@react-navigation/bottom-tabs` from 7.16.1 to 7.18.2 - [Release notes](https://github.com/react-navigation/react-navigation/releases) - [Changelog](https://github.com/react-navigation/react-navigation/blob/@react-navigation/bottom-tabs@7.18.2/packages/bottom-tabs/CHANGELOG.md) - [Commits](https://github.com/react-navigation/react-navigation/commits/@react-navigation/bottom-tabs@7.18.2/packages/bottom-tabs) Updates `@react-navigation/native` from 7.2.5 to 7.3.3 - [Release notes](https://github.com/react-navigation/react-navigation/releases) - [Changelog](https://github.com/react-navigation/react-navigation/blob/@react-navigation/native@7.3.3/packages/native/CHANGELOG.md) - [Commits](https://github.com/react-navigation/react-navigation/commits/@react-navigation/native@7.3.3/packages/native) Updates `@react-navigation/native-stack` from 7.15.1 to 7.17.5 - [Release notes](https://github.com/react-navigation/react-navigation/releases) - [Changelog](https://github.com/react-navigation/react-navigation/blob/@react-navigation/native-stack@7.17.5/packages/native-stack/CHANGELOG.md) - [Commits](https://github.com/react-navigation/react-navigation/commits/@react-navigation/native-stack@7.17.5/packages/native-stack) Updates `@tanstack/react-query` from 5.100.10 to 5.101.0 - [Release notes](https://github.com/TanStack/query/releases) - [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md) - [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.101.0/packages/react-query) Updates `axios` from 1.16.1 to 1.18.0 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.16.1...v1.18.0) Updates `react` from 19.2.6 to 19.2.7 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.7/packages/react) Updates `@types/react` from 19.2.15 to 19.2.17 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) Updates `react-native` from 0.85.3 to 0.86.0 - [Release notes](https://github.com/facebook/react-native/releases) - [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/react-native) Updates `@react-native/babel-preset` from 0.85.3 to 0.86.0 - [Release notes](https://github.com/facebook/react-native/releases) - [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react-native/compare/v0.85.3...v0.86.0) Updates `@react-native/metro-config` from 0.85.3 to 0.86.0 - [Release notes](https://github.com/facebook/react-native/releases) - [Changelog](https://github.com/react/react-native/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react-native/commits/v0.86.0/packages/metro-config) Updates `@types/react` from 19.2.15 to 19.2.17 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react) --- updated-dependencies: - dependency-name: "@react-native/babel-preset" dependency-version: 0.86.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: mobile-npm - dependency-name: "@react-native/metro-config" dependency-version: 0.86.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: mobile-npm - dependency-name: "@react-navigation/bottom-tabs" dependency-version: 7.18.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mobile-npm - dependency-name: "@react-navigation/native" dependency-version: 7.3.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mobile-npm - dependency-name: "@react-navigation/native-stack" dependency-version: 7.17.5 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mobile-npm - dependency-name: "@tanstack/react-query" dependency-version: 5.101.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mobile-npm - dependency-name: "@types/react" dependency-version: 19.2.17 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: mobile-npm - dependency-name: "@types/react" dependency-version: 19.2.17 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: mobile-npm - dependency-name: axios dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mobile-npm - dependency-name: react dependency-version: 19.2.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: mobile-npm - dependency-name: react-native dependency-version: 0.86.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mobile-npm ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| fastlane | ||
| ios | ||
| patches | ||
| src | ||
| .env.example | ||
| .npmrc | ||
| app.json | ||
| babel.config.js | ||
| Gemfile | ||
| Gemfile.lock | ||
| index.js | ||
| metro.config.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Proposal System — Mobile (iOS)
React Native 0.85 iOS app for Sea Haven Industries field dispatchers. Submit proposals, capture vendor documents, and manage drafts with offline support.
Prerequisites
- Node.js 24+
- Ruby 3.x (for Fastlane)
- Xcode 26+ with iOS 26 SDK
- CocoaPods (installed via Bundler)
Local Development
# Install JS dependencies
npm install
# Install Ruby dependencies (Fastlane, CocoaPods)
bundle install
# Install native pods
cd ios && bundle exec pod install && cd ..
# Start Metro bundler
npm start
# Run on iOS simulator
npm run ios
Environment
The app reads configuration from src/config.ts. In development mode (__DEV__), the API URL points to http://localhost:5000/api. Run the .NET API locally or use the development proxy.
Authentication
Two login methods are supported:
- Email/Password — direct Cognito SRP auth via
amazon-cognito-identity-js - Google OAuth — Cognito Hosted UI PKCE flow via
react-native-app-auth
The iOS URL scheme com.seahavenind.proposals is registered in Info.plist for OAuth callbacks.
Code Signing
Certificates and provisioning profiles are managed by Fastlane Match using S3 storage:
- Bucket:
seahaven-ios-certificates(us-east-1) - Bundle ID:
com.seahavenind.proposals - Team ID:
9KAQYC653W
Match is configured in fastlane/Matchfile. The MATCH_PASSWORD secret decrypts signing assets.
CI/CD
The deploy-mobile.yaml workflow triggers on push to main (with mobile/** path filter) or manual workflow_dispatch. It calls the cd-mobile-ios.yaml reusable workflow which:
- Sets up
macos-26runner with Xcode 26 - Installs dependencies and pods
- Retrieves signing assets via Match (S3)
- Builds the IPA with Fastlane
- Uploads to TestFlight
Required GitHub Secrets
| Secret | Purpose |
|---|---|
AWS_DEPLOY_ROLE_ARN |
OIDC role for Match S3 access |
MATCH_PASSWORD |
Signing asset decryption passphrase |
ASC_KEY_ID |
App Store Connect API key ID |
ASC_ISSUER_ID |
App Store Connect API issuer |
ASC_KEY_CONTENT |
App Store Connect .p8 key (base64) |
Project Structure
mobile/
├── src/
│ ├── screens/ Auth, dispatcher, and admin screens
│ ├── lib/api/ API clients (auth, proposals, line items, admin)
│ ├── store/ Redux Toolkit (auth slice)
│ ├── navigation/ React Navigation (RootNavigator)
│ ├── components/ Reusable UI components
│ ├── hooks/ useAuth, useOfflineDraft, usePaginatedList
│ ├── theme/ Material Design 3 theming
│ ├── constants/ App-wide constants
│ └── config.ts Cognito + API configuration
├── ios/ Xcode project, assets, Info.plist
├── fastlane/ Fastfile, Matchfile, Appfile
├── Gemfile Ruby dependencies
└── package.json React Native 0.85.3