Complete technical documentation: See
/docs/modules/Feature.Settings.md in the projectPurpose
FeatureSettings module handles:- Settings UI - User preferences management
- Paywall - Beautiful subscription screen
- Theme Selection - 5 built-in themes
- Privacy Controls - Diagnostics, notifications
- Account Management - Sign out, delete account
Key Components
SettingsViewModel
Manages app-wide settings:PaywallViewModel
Manages subscription purchases:Settings Categories
Appearance
Appearance
Theme Selection:
- System (follows iOS)
- Light (always light)
- Dark (always dark)
- Aurora (teal/purple)
- Obsidian (charcoal/amber)
Privacy
Privacy
User Controls:
- Share diagnostics (opt-in crash reporting)
- Notification permissions
- Data export (GDPR)
- Account deletion
Account
Account
Management:
- Subscription status
- Manage subscription (App Store)
- Sign out
- Delete account
Legal
Legal
Links:
- Privacy Policy
- Terms of Service
- Subscription Terms
- App version display
Paywall UI
Beautiful subscription screen with:- ✅ Feature comparison
- ✅ Pricing display
- ✅ Monthly and annual options
- ✅ Clear CTAs
- ✅ Terms and privacy links
- ✅ Restore purchases button
Customization Examples
Add New Setting
Customize Paywall
Add Custom Theme
Paywall Best Practices
1
Clear Value
Show exactly what users get:
- List specific features
- Highlight most popular plan
- Show savings (annual vs monthly)
2
Easy Purchase
- Prominent CTAs
- Clear pricing
- Both monthly and annual
- Restore purchases visible
3
Transparent Terms
- Link to subscription terms
- Link to privacy policy
- Cancellation policy clear
- Auto-renewal explained
4
Handle Errors
- Purchase cancelled (don’t error)
- Network failures (retry)
- Already subscribed (show status)
- Restore failures (help user)
Key Files
| Component | Location |
|---|---|
| ViewModels | Packages/FeatureSettings/Sources/FeatureSettings/ViewModels/ |
| Settings UI | Packages/FeatureSettings/Sources/FeatureSettings/Views/SettingsView.swift |
| Paywall UI | Packages/FeatureSettings/Sources/FeatureSettings/Views/PaywallView.swift |
Dependencies
- Core - Error handling, logging, theme types
- Payments - Subscription management
- DesignSystem - UI components
Used By
- Main App - Settings tab
- All features - Theme observation
- Profile - Subscription status
Best Practices
Settings Persistence
Settings Persistence
- Save immediately on change
- Use repository pattern
- Handle errors gracefully
- Provide feedback
Paywall UX
Paywall UX
- Make it beautiful
- Highlight value
- Easy to dismiss
- Test purchase flow
Privacy
Privacy
- Opt-in for tracking
- Clear data policies
- Easy account deletion
- GDPR compliance
Learn More
Full Documentation
Find complete FeatureSettings guide in your project
Payments Module
Subscription management
Design System
Theme system
Building Guide
Customize settings
Build with AI (fast)
You can customize this module in minutes using our ready-to-paste LLM prompts.Example Prompt
Context:SwiftAIBoilerplatePro/AppShell/Onboarding*
Prompt:
“Add a Privacy step to onboarding that links to the policy page and a ‘Continue’ CTA.”
See all prompts → /docs/prompts/OnboardingModule.prompts.mdSee in project:
docs/modules/OnboardingModule.md
Test Coverage
75%+ - Settings and paywall testing Tests include:- Settings persistence
- Theme switching
- Paywall display
- Purchase flows
- Error handling
