Design System
AppX builds every app on a small design system: two files in constants/ hold your colors, fonts, spacing, corner radii and shadows. Screens reference those files instead of hardcoding values, so a design change is one edit: change the file (or just ask in chat), and every screen that uses the value follows. It's real Expo + React Native code, so you can read and tweak any of it.
Project Structure
Generated apps include:
constants/
colors.ts ← Color palette
theme.ts ← Fonts, spacing, border radius, shadows
Colors
constants/colors.ts exports one Colors object. The names below come from the starting template; the values in your app are generated for its design.
const Colors = {
background: '#FAFAF8',
surface: '#F0EDE8',
card: '#FFFFFF',
primary: '#0D0D0D',
secondary: '#6B6B6B',
tertiary: '#A3A3A3',
accent: '#C8A97E',
divider: '#E8E5E0',
error: '#C44D4D',
// …
};
export { Colors };
export default Colors;
Screens reference Colors.* rather than hardcoding hex values. To change the accent color across your app:
- Open
constants/colors.tsin the editor - Change
accent: '#C8A97E'to your color - Save — every component that uses
Colors.accentupdates in the preview
Or just describe it in chat: "Change the accent color to purple #7c3aed" — AppX will update the colors file.
Spacing, Corners, and Shadows
constants/theme.ts holds the scales screens share:
export const spacing = {
xs: 4,
sm: 8,
md: 16,
lg: 24,
xl: 32,
xxl: 48,
};
export const borderRadius = {
sm: 6,
md: 12,
lg: 20,
xl: 28,
full: 999,
};
The same file exports fonts and shadows (sm, md, lg, none).
Usage:
import { spacing, borderRadius, shadows } from '@/constants/theme';
card: {
padding: spacing.md,
borderRadius: borderRadius.md,
...shadows.sm,
}
Dark Mode
Ask for it in chat:
"Add dark mode support. The app should follow the device's system setting (light/dark)."
Icons
AppX uses lucide-react-native for all icons. It includes over 1,000 icons in a consistent style.
Usage:
import { Home, User, Settings, ChevronRight } from 'lucide-react-native';
import Colors from '@/constants/colors';
// In JSX:
<Home size={24} color={Colors.primary} />
Browse available icons at lucide.dev.
To use a specific icon in your design:
"Use the Bell icon from lucide-react-native in the header"
Fonts
Available fonts: Inter, DM Sans, Manrope, IBM Plex Sans, Space Grotesk, Sora, Outfit, Nunito, Fraunces, Playfair Display, Lora, IBM Plex Mono.
To switch, ask in chat:
"Use the Inter font family throughout the app"
Customizing the Design System
The simplest way to customize is through chat:
"Update the design system:
- Accent color: #7c3aed (purple)
- Background: #faf5ff (very light purple)
- Rounded corners: 16 for cards, 8 for inputs
- Font: Inter, semi-bold for headings"
AppX will update constants/colors.ts and constants/theme.ts and apply the change in your screens.
A note on credits
Restyling through chat is an edit like any other: metered, with a minimum of 1 credit per turn. The design step is part of your first build and is included in the plan card's estimate. See Credits for the full picture.