For complete customization guide with LLM prompts, see Building Your App
Branding
Change App Colors
What to customize: The design tokens read their colors from the DesignSystem package’s own asset catalog viaBundle.module:
- Open the color set in Xcode
- Change Light Appearance color
- Change Dark Appearance color
- Build → colors update everywhere
system/light/dark themes read these assets, while the aurora and obsidian themes use hard-coded values in DSColors.swift, so customizing those requires editing the matching switch activeTheme branches.
Replace App Icon
Steps:- Create 1024×1024 PNG
- Drag to
SwiftAIBoilerplatePro/Assets.xcassets/AppIcon.appiconset - Xcode generates all required sizes
- Build and verify
Customize Onboarding
File:SwiftAIBoilerplatePro/AppShell/OnboardingPage.swift
Change the defaultPages array:
UI Customization
Add Home Screen Feature Card
File:SwiftAIBoilerplatePro/AppShell/HomeContent.swift
Add to HomeContent.FeatureItem.defaults (or pass your own featuredItems into HomeContent):
Change Chat Bubble Colors
Bubble colors are derived from design tokens, not from dedicated bubble color sets. InDSColors.swift:
bubbleUserOrFallback→accentPrimary(theAccentPrimary.colorsetfor system/light/dark)bubbleAssistantOrFallback→surface(a system color,Color(.secondarySystemBackground), for system/light/dark)
AccentPrimary.colorset in Packages/DesignSystem/Sources/DesignSystem/Resources/Assets.xcassets/. The assistant bubble follows the system surface color, so adjust the surface token’s switch activeTheme branch in DSColors.swift to override it.
Add Custom Theme
1
Create Color Sets
In the DesignSystem package catalog (
Packages/DesignSystem/Sources/DesignSystem/Resources/Assets.xcassets), create color sets for any semantic colors your theme needs.2
Add Theme Case
In
SettingsDTO.swift, add a case to the string-backed Theme enum (used by the settings UI):3
Map Colors
In
DSColors.swift, add a case .myTheme to the internal ThemePalette enum and to each token switch activeTheme block.4
Add to Picker
The appearance picker in
SettingsAppearanceSection.swift iterates SettingsDTO.Theme.allCases, so the new case appears automatically once the enum and mappings are in place.Feature Customization
Add Custom AI Persona
File:Packages/FeatureChat/Sources/FeatureChat/ViewModels/ChatViewModel.swift
LLMMessage lives in FeatureChat and its role is a String ("user" | "assistant" | "system"):
The server-side AI Edge Function (
supabase/functions/ai/index.ts) injects its own fixed SYSTEM_PROMPT and clients may only send user/assistant roles, so a client-supplied system message is for local/echo flows. To change the deployed persona, edit SYSTEM_PROMPT in the function and redeploy.Add New SwiftData Model
1
Create Model
2
Create DTO
3
Create Repository
Protocol + implementation following existing patterns
4
Add to Schema
In
SwiftAIBoilerplatePro/Composition/CompositionRoot.swift, add your model to the Schema([Conversation.self, Message.self, Settings.self]) array.Add Custom Setting
1
Update Settings Model
In
Packages/Storage/Sources/Storage/Models/Settings.swift:2
Update ViewModel
3
Update UI
Backend Customization
Change AI Model
File:supabase/functions/ai/index.ts
For cost safety, the function validates the requested model against an allowlist (security rule BL-003). To allow a different OpenRouter model, add it to ALLOWED_MODELS:
model defaults to openai/gpt-3.5-turbo and must be in this list. The server-side SYSTEM_PROMPT and role allowlist (user/assistant) are also enforced here.
Deploy:
Add Usage Limits
PaymentsClient.currentState() and state.isSubscribed are real APIs; the per-day count below is illustrative — back it with your own repository query.
Module Customization
Each module has detailed customization examples:Core
Custom errors, log categories
Networking
Custom requests, interceptors
Storage
New models, repositories
Auth
Social providers, custom fields
Payments
New tiers, usage limits
AI
Models, personas, prompts
FeatureChat
UI styles, actions, search
FeatureSettings
New settings, paywall
DesignSystem
Themes, components, tokens
Pro Tips
Need More Help?
Building Guide
Step-by-step guide with LLM prompts
Module Docs
Detailed technical docs
CLAUDE.md
AI coding guidelines
Architecture
System design
