A production-ready SwiftUI project demonstrating a fully dynamic, user-customizable Tab Bar architecture.
Users start with 3 default tabs and can add, remove, or reorder tabs anytime from the Settings screen — powered by a centralized state manager built with ObservableObject.
- ✅ 3 default tabs on first launch (Home, Profile, Settings)
- ✅ Add or remove tabs dynamically from Settings
- ✅ Core tabs (Home, Profile, Settings) are protected — cannot be removed
- ✅ Tab selection resets safely when the active tab is removed
- ✅ SF Symbols support for every tab item
- ✅ Centralized state via
TabBarManager(No@Bindingprop drilling) - ✅ Full SwiftUI Previews on all views
- ✅ Clean MVVM-style architecture
- ✅ CI-enabled with GitHub Actions
Pattern: MVVM
State Management: ObservableObject-based TabStore
UI Framework: SwiftUI
Project Structure: DynamicTabKit/ ├── Model/ ├── View/ │ ├── Setting/ │ └── Tab/ ├── ViewModel/ └── DynamicTabKitApp.swift
| Tool | Version |
|---|---|
| Xcode | 15.0+ |
| iOS Deployment Target | 17.0+ |
| Swift | 5.9+ |
| macOS (Development) | Ventura 13.0+ |
- Clone the repository
- Open
DynamicTabKit.xcodeproj - Select the
DynamicTabKitscheme - Run on iOS Simulator
- Safe state reset handling
- Clean separation of concerns
- Extensible tab architecture
- Production-ready folder structure
- No prop-drilling anti-pattern
- CI pipeline enabled
GitHub Actions automatically builds the project on every push to main.
Navin Rai
Senior iOS Developer
- GitHub: @Navin-Rai-Developer
- LinkedIn: https://www.linkedin.com/in/navinkumarrai
⭐ If you find this useful, consider starring the repository.