This guide explains how to customize your React Native Supabase AI template using Gluestack UI and your app.json configuration. Learn how to manage environment variables, define app settings like identity and feature flags, and adjust styling and theming with TailwindCSS—all in one place.
This template uses app.json to define static app settings. Below is an annotated sample of the configuration—feel free to customize fields like name, slug, and others to match your app’s branding and requirements.
{ "expo": { // This is the name you'll see on your phone's home screen "name": "react-native-supabase-ai-template", // A unique ID for your app used by Expo services "slug": "react-native-supabase-ai-template", // Your app's version number (like 1.0.0 for first release) "version": "1.0.0", // Locks the app to portrait mode (no landscape) "orientation": "portrait", // The icon shown on your phone's home screen "icon": "./assets/images/icon.png", // A special link for opening your app (used for deep links and sign-in) "scheme": "com.react-native-supabase-ai-template", // Automatically switches between light and dark mode "userInterfaceStyle": "automatic", // Enables the new React Native architecture for better performance "newArchEnabled": true, // Settings for the splash screen when your app loads "splash": { // Image shown while the app is loading "image": "./assets/images/splash-icon.png", // How the splash image fits on the screen "resizeMode": "contain", // Background color of the splash screen "backgroundColor": "#ffffff" }, // Settings just for iOS devices "ios": { // Allows the app to work on iPads "supportsTablet": true, // Permissions for iOS (like accessing Wi-Fi info) "entitlements": { "com.apple.developer.networking.wifi-info": true } }, // Settings just for Android devices "android": { // Icon settings for Android (adaptive icons for modern versions) "adaptiveIcon": { // The main part of the icon "foregroundImage": "./assets/images/adaptive-icon.png", // Background color for the icon "backgroundColor": "#ffffff" }, // Unique ID for your app on Android "package": "com.usesaaskit.reactnativesupabaseaitemplate", // Allows your app to handle specific links (like invites) "intentFilters": [ { "action": "VIEW", "data": { // The link format your app can open "scheme": "com.react-native-supabase-ai-template", "pathPrefix": "/accept-invite" }, "category": ["BROWSABLE", "DEFAULT"] } ] }, // Settings for the web version of your app "web": { "bundler": "metro", "output": "static", "favicon": "./assets/images/favicon.png" }, // Extra features your app uses (like navigation and secure storage) "plugins": ["expo-router", "expo-secure-store", "expo-image-picker"], "experiments": { "typedRoutes": true }, "extra": { "router": { "origin": false }, "eas": { "eas": { // Your Expo project ID (added automatically when using EAS CLI) "projectId": "" } } }, // Your Expo account or organization name (added by EAS when you log in) "owner": "" }}
The template uses Gluestack UI as the primary UI library, offering utility-based styling, built-in theming, and fully customizable components. You can adjust the design system by modifying the Gluestack configuration file.
You can customize your app's primary color palette by changing the values in this configuration file. Each color is defined using RGB format (space-separated, not comma-separated). This format is required by nativewind and is compatible with Tailwind-style utilities.