with one click
app-icon
Generate app icons for your React Native Expo app with iOS 26 support
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Generate app icons for your React Native Expo app with iOS 26 support
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Scaffold a unified, cross-platform color theme system into an Expo Router app. Sets up semantic system colors (resolved from native iOS labels and Android Material You dynamic colors), brand colors, automatic dark/light re-rendering, the React Navigation ThemeProvider, and a useColors() / useTheme() context hook. Use whenever a user wants to set up theming, dark mode, dynamic or Material You colors, a unified color system, or a useColors/useTheme hook in an Expo / React Native app, even if they do not name a specific approach.
Build a release APK and a simulator .app file locally for a React Native Expo app using gradlew and xcodebuild. Use when the user wants to produce installable artifacts without EAS (for e2e testing, sharing a build with a teammate, or quick iteration on a real device/simulator). Generates two shell scripts wired up to the user's actual app name, scheme, and bundle identifier.
Scaffold production-ready React Native apps using the @codewithbeto/ship CLI. Use when the user wants to create a new app from a Code with Beto template, scaffold a project with Platano, or run `bunx @codewithbeto/ship`. Always use flag-based (non-interactive) mode — the interactive TUI requires a terminal.
| name | app-icon |
| description | Generate app icons for your React Native Expo app with iOS 26 support |
Generate professional app icons using AI and configure them for both iOS (with iOS 26 Liquid Glass support) and Android platforms in Expo apps.
SnapAI is a free, open-source CLI built by the Code with Beto team. It calls the selected image provider directly using the user's API key. A key can be stored locally at ~/.snapai/config.json or supplied through an environment variable. SnapAI ships no telemetry and has no backend server.
Before attempting to generate icons, check if SnapAI is configured:
npx snapai config --show
If the config check fails or shows no API key:
If the user has an API key:
npx snapai config --openai-api-key "<their-api-key>"
SNAPAI_API_KEY or OPENAI_API_KEY in their shell or secret managernpx snapai config --show
If the user needs to get an API key:
Important Notes:
app.json to understand the app name and current icon configurationAsk the user what style they'd like for the icon. Available styles:
minimalism - Clean, Apple-inspired minimalism (2-3 colors max)glassy - Premium glass aesthetic with semi-transparent elementsgradient - Vibrant gradients, Instagram-inspiredneon - Cyberpunk, futuristic with glowing effectsmaterial - Google Material Designios-classic - Traditional iOS with subtle gradientspixel - Retro 8-bit/16-bit game art stylegeometric - Bold, angular compositionsOr let the user provide a custom style description.
Pre-flight check: Verify SnapAI is configured before running (see Step 0)
Generate a 1024x1024 icon with transparent background (critical for both platforms):
npx snapai icon --prompt "YOUR_PROMPT_HERE" --background transparent --output-format png --style STYLE_NAME
Important flags:
--background transparent - REQUIRED for iOS 26 and Android adaptive icons--output-format png - Ensures PNG format--style - Optional, enhances the visual style--quality high - Optional, for final production iconsThe icon will be saved to ./assets/icon-[timestamp].png
Create the new iOS 26 Liquid Glass icon format:
mkdir -p assets/app-icon.icon/Assets
cp assets/icon-[timestamp].png assets/app-icon.icon/Assets/icon.png
assets/app-icon.icon/icon.json with this basic configuration:{
"fill": "automatic",
"groups": [
{
"layers": [
{
"glass": false,
"image-name": "icon.png",
"name": "icon"
}
],
"shadow": {
"kind": "neutral",
"opacity": 0.5
},
"translucency": {
"enabled": true,
"value": 0.5
}
}
],
"supported-platforms": {
"circles": ["watchOS"],
"squares": "shared"
}
}
Android adaptive icons have a smaller safe area (~66% of the canvas) compared to iOS. The main icon generated by SnapAI is optimized for iOS safe areas, which means it may appear too large and get clipped on Android devices with circular or squircle masks.
To ensure your icon displays correctly on all Android device shapes (circles, squircles, rounded squares), create a scaled-down version:
Using ImageMagick (recommended):
# Scale the icon to 66% and center it on a 1024x1024 transparent canvas
magick assets/icon-[timestamp].png \
-resize 66% \
-gravity center \
-background transparent \
-extent 1024x1024 \
assets/android-icon.png
Alternative - Using sips + ImageMagick (macOS):
# Step 1: Resize to 66% (676x676)
sips -Z 676 assets/icon-[timestamp].png --out /tmp/icon-resized.png
# Step 2: Create the final centered image
magick -size 1024x1024 xc:transparent /tmp/icon-resized.png \
-gravity center -composite assets/android-icon.png
Note: If ImageMagick is not installed, install it with:
brew install imagemagick
Update the app.json to configure icons for both platforms:
{
"expo": {
"ios": {
"icon": "./assets/app-icon.icon"
}
}
}
Use the Android-optimized icon created in Step 4.5:
Option 1: Simple (with solid background color)
{
"expo": {
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/android-icon.png",
"backgroundColor": "#ffffff"
}
}
}
}
Option 2: Comprehensive (recommended) Since the icon has a transparent background, you can use it for all three Android adaptive icon fields:
{
"expo": {
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/android-icon.png",
"backgroundImage": "./assets/android-icon.png",
"monochromeImage": "./assets/android-icon.png"
}
}
}
}
Benefits of Option 2:
foregroundImage - Main icon displayedbackgroundImage - Provides layered depth effect on Android 8.0+monochromeImage - Used for themed icons on Android 13+ (automatically recolored by system)Note:
backgroundColor, or use white (#ffffff) as defaultls -la assets/app-icon.icon/
cat app.json | jq .
npx expo prebuild --clean
npx expo run:ios
npx expo run:android
.icon folder enables Liquid Glass effects on iOS 26+icon-[timestamp].png - Main icon optimized for iOS safe areas (used in .icon folder)android-icon.png - Scaled to 66% and centered for Android adaptive icon safe areasandroid-icon.png can be used for foregroundImage, backgroundImage, AND monochromeImage fields.icon folder name can be customized (e.g., app-icon.icon, myapp.icon)npx snapai config --openai-api-key "<key>" locally, or set SNAPAI_API_KEY / OPENAI_API_KEYnpx snapai (not just snapai)npx expo prebuild --clean to regenerate native projects after icon changesbrew install imagemagick