Customize your App
The starter is a simple expo app. You just need to edit app.config.ts file to update expo attributes and configuration.
Here is the complete config file :
import type { ConfigContext, ExpoConfig } from '@expo/config';
import type { AppIconBadgeConfig } from 'app-icon-badge/types';
import 'tsx/cjs';
// adding lint exception as we need to import tsx/cjs before env.ts is imported// eslint-disable-next-line perfectionist/sort-importsimport Env from './env';
const EXPO_ACCOUNT_OWNER = 'obytes';const EAS_PROJECT_ID = 'c3e1075b-6fe7-4686-aa49-35b46a229044';
const appIconBadgeConfig: AppIconBadgeConfig = { enabled: Env.EXPO_PUBLIC_APP_ENV !== 'production', badges: [ { text: Env.EXPO_PUBLIC_APP_ENV, type: 'banner', color: 'white', }, { text: Env.EXPO_PUBLIC_VERSION.toString(), type: 'ribbon', color: 'white', }, ],};
export default ({ config }: ConfigContext): ExpoConfig => ({ ...config, name: Env.EXPO_PUBLIC_NAME, description: `${Env.EXPO_PUBLIC_NAME} Mobile App`, owner: EXPO_ACCOUNT_OWNER, scheme: Env.EXPO_PUBLIC_SCHEME, slug: 'obytesapp', version: Env.EXPO_PUBLIC_VERSION.toString(), orientation: 'portrait', icon: './assets/icon.png', userInterfaceStyle: 'automatic', newArchEnabled: true, updates: { fallbackToCacheTimeout: 0, }, assetBundlePatterns: ['**/*'], ios: { supportsTablet: true, bundleIdentifier: Env.EXPO_PUBLIC_BUNDLE_ID, infoPlist: { ITSAppUsesNonExemptEncryption: false, }, }, experiments: { typedRoutes: true, }, android: { adaptiveIcon: { foregroundImage: './assets/adaptive-icon.png', backgroundColor: '#2E3C4B', }, package: Env.EXPO_PUBLIC_PACKAGE, }, web: { favicon: './assets/favicon.png', bundler: 'metro', }, plugins: [ [ 'expo-splash-screen', { backgroundColor: '#2E3C4B', image: './assets/splash-icon.png', imageWidth: 150, }, ], [ 'expo-font', { ios: { fonts: [ 'node_modules/@expo-google-fonts/inter/400Regular/Inter_400Regular.ttf', 'node_modules/@expo-google-fonts/inter/500Medium/Inter_500Medium.ttf', 'node_modules/@expo-google-fonts/inter/600SemiBold/Inter_600SemiBold.ttf', 'node_modules/@expo-google-fonts/inter/700Bold/Inter_700Bold.ttf', ], }, android: { fonts: [ { fontFamily: 'Inter', fontDefinitions: [ { path: 'node_modules/@expo-google-fonts/inter/400Regular/Inter_400Regular.ttf', weight: 400, }, { path: 'node_modules/@expo-google-fonts/inter/500Medium/Inter_500Medium.ttf', weight: 500, }, { path: 'node_modules/@expo-google-fonts/inter/600SemiBold/Inter_600SemiBold.ttf', weight: 600, }, { path: 'node_modules/@expo-google-fonts/inter/700Bold/Inter_700Bold.ttf', weight: 700, }, ], }, ], }, }, ], 'expo-localization', 'expo-router', ['app-icon-badge', appIconBadgeConfig], ['react-native-edge-to-edge'], ], extra: { eas: { projectId: EAS_PROJECT_ID, }, },});You can read more about expo configuration here.
If you have any configurations that depend on environment variables, such as API URLs or keys, you can create it in config file following the environment variables guide and import your config to app.config.ts file.
Splash screen and app icon
Section titled “Splash screen and app icon”As we are using expo to create the starter, updating the app icon and splash screen is straightforward. You only need to update the app icon and splash screen images inside the assets folder and run expo prebuild to update the app icon and splash screen.
As we are supporting multiple variants for development, preview and production environments you need 3 different icons but the right solution is to use the same icon with badges for each environment.
For more details about the app icon and splash screen, please refer to the expo documentation.