BowlerKitBowlerKit

App Assets Configuration

10/11/2026

Replace the Expo icon, adaptive icon, splash, notification icon, and fonts used by native builds.

The Expo template reads native asset paths from mobile-app/app.config.ts. It does not use a static app.json as the source of truth.

Asset paths

Place these files under mobile-app/assets/images/:

  • icon.png — iOS and legacy Android icon.
  • adaptive-icon.png — Android adaptive-icon foreground.
  • favicon.png — web favicon.
  • splash-icon.png and splash-icon-dark.png — light/dark splash images.
  • notification-icon.png — monochrome Android notification icon.

BowlerLaunch can export the source artwork for these assets. Rename its exported icon/foreground files to the names above before copying them into the generated project.

Configure app.config.ts

The relevant current configuration is:

export default ({ config }) => ({
  ...config,
  icon: './assets/images/icon.png',
  android: {
    ...config.android,
    adaptiveIcon: {
      foregroundImage: './assets/images/adaptive-icon.png',
      backgroundColor: '#ffffff',
    },
  },
  web: {
    ...config.web,
    favicon: './assets/images/favicon.png',
  },
});

The expo-splash-screen and expo-notifications plugins already point to the splash and notification files. Keep those plugin paths aligned when renaming assets.

Custom fonts

Fonts are registered through the expo-font plugin and loaded in app/_layout.tsx. Add .ttf/.otf files under assets/fonts/, then add each file to both the plugin list and the useFonts map if the app needs it at runtime.

Apply native changes

Icons, splash screens, notification icons, bundle resources, and fonts are native build inputs. Expo Go uses its own shell assets.

cd mobile-app
pnpm prebuild:clean
pnpm android       # or pnpm ios on macOS

For EAS:

eas build --platform android --profile preview
eas build --platform android --profile production

The build profiles pin environment values, so review eas.json and replace the demo API URL and any demo ad configuration before a release build.

Troubleshooting

  • If an asset does not change, remove the installed app and regenerate with pnpm prebuild:clean.
  • Android notification icons must be white artwork on a transparent background.
  • Native assets do not update in Expo Go.
  • A release build with EXPO_PUBLIC_ADMOB_ENABLED=true must provide every configured AdMob app and banner ID; otherwise app.config.ts intentionally fails the build.