timothymiller / t4-app

A powerful cross-platform UI toolkit for building actually native iOS, Android, macOS, Windows, Linux, and Progressive Web Apps with React (Native).
https://t4stack.com
MIT License
1.44k stars 77 forks source link

Expo config env variables #116

Open guioum opened 10 months ago

guioum commented 10 months ago

In app.config.ts, it reads multiple env variables.

These variables do not exist (bun install prefixes all variables with EXPOPUBLIC).

It should be EXPO_PUBLIC_EAS_PROJECT_ID, EXPO_PUBLIC_EAS_OWNER.

Also, I would recommend removing hardcoded values, to leverage env variables, and to make the template free of hardcoded values.

Something like this works for us:

import { ConfigContext, ExpoConfig } from '@expo/config'

export default ({ config }: ConfigContext): ExpoConfig => ({
  ...config,
  extra: {
    eas: {
      projectId: process.env.EXPO_PUBLIC_EAS_PROJECT_ID,
    },
  },
  owner: process.env.EXPO_PUBLIC_EAS_OWNER,
  plugins: ['expo-router'],
  experiments: {
    tsconfigPaths: true,
    typedRoutes: true,
  },
  platforms: ['ios', 'android'],
  ios: {
    bundleIdentifier: process.env.EXPO_PUBLIC_EAS_OWNER_ID,
  },
  android: {
    package: process.env.EXPO_PUBLIC_EAS_OWNER_ID,
  },
  name: process.env.EXPO_PUBLIC_EAS_NAME,
  slug: process.env.EXPO_PUBLIC_EAS_SLUG,
  updates: {
    url:
      process.env.EXPO_PUBLIC_EAS_UPDATES_URL,
  },
  runtimeVersion: {
    policy: 'sdkVersion',
  },
})

Please note that we added new variables to .env.local, and also expo.yml.

bmikaili commented 10 months ago

I'm a bit confused as well. The .env variable setup out of the box is completely broken

timothymiller commented 9 months ago

Seems sensible. What about app.json? And where does expo.yml fit into this?