WallpaperApp is a SwiftUI iOS wallpaper browser for iPhone and iPad. You can browse remote wallpapers, save favorites, write images to Photos, review recent downloads, and see recommendation cards that explain why a wallpaper was ranked higher.
This section shows the current product surface. Because no physical iPhone or iPad was connected on March 11, 2026, the gallery currently uses screenshots from the running simulator build.
iPhone discovery
iPhone settings
iPad split view
This section summarizes the current product surface so you can understand what already exists before you add new features.
- Adaptive navigation for iPhone and iPad. Phones use a tab bar, and iPads use a split view sidebar.
- A discovery experience with search, orientation filtering, infinite scroll, explainable recommendations, and large previews.
- A favorites screen backed by SwiftData.
- A recent downloads screen that lets you reopen and clear local download history.
- A wallpaper detail screen with save, favorite, share, and source actions.
- An App Shortcuts entry that opens the app from the Shortcuts app or Siri.
This section describes the implementation choices that shape the codebase.
SwiftUIfor the full UI layerSwiftDatafor local persistence- Swift 6.2 with
SWIFT_STRICT_CONCURRENCY = complete Photosfor write-only image savingAppIntentsfor app shortcuts supportXcodeGenas the project source of truth throughproject.yml- The Picsum API as the remote wallpaper source
The project does not use third-party runtime dependencies.
You must use a recent Apple toolchain because the project currently targets iOS 26.0 and Swift 6.2.
- macOS with Xcode 26.3 or later
xcodegen2.44.1 or later- An available iOS 26 simulator or a compatible device
- Network access for wallpaper browsing and image downloads
You can build the app from Xcode or from the command line. If you change the project structure, regenerate the Xcode project before building.
-
Install
xcodegenif it is not already available.brew install xcodegen
-
Generate the Xcode project from
project.yml.xcodegen generate
-
Open the project in Xcode.
open WallpaperApp.xcodeproj
-
Select an iPhone or iPad simulator, then run the
WallpaperAppscheme.
If you prefer the command line, use the following build command.
xcodebuild -project WallpaperApp.xcodeproj \
-scheme WallpaperApp \
-destination 'generic/platform=iOS Simulator' \
buildThe repository includes a unit test target for the recommendation engine. Run tests on any available simulator.
xcodebuild -project WallpaperApp.xcodeproj \
-scheme WallpaperApp \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
testIf iPhone 17 Pro is not installed on your machine, replace it with any
available simulator name from xcrun simctl list devices.
This section gives you a quick map of the repository so you can place new code without fighting the existing layout.
WallpaperApp/App: app entry point and shared service containerWallpaperApp/AppIntents: Shortcuts and Siri entry pointsWallpaperApp/Models: SwiftData models and shared value typesWallpaperApp/Services: API access, recommendations, preferences, favorites, download history, and Photos integrationWallpaperApp/ViewModels: screen-level state orchestrationWallpaperApp/Views: feature UIs for discovery, favorites, settings, and adaptive root navigationWallpaperAppTests: unit testsproject.yml: XcodeGen configuration
This section calls out the platform constraints and privacy behavior that matter when you evolve the app.
- The app saves images to Photos, but iOS does not let third-party apps set the system wallpaper automatically.
- Recommendation logic runs on device. The app does not upload favorites to a recommendation service.
- Download history and user preferences are stored locally with SwiftData.
- Wallpaper browsing depends on the external Picsum service, so the app does not currently support offline browsing.
Use the changelog to separate released work from in-progress updates.
- See CHANGELOG.md for committed and unreleased changes.
WallpaperApp is available under the MIT License. The current license keeps the public repository easy to reuse while you continue shipping product features.
You can use the current foundation to keep product work moving without a large restructure.
- Add offline image caching so discovery and detail views stay useful on poor networks.
- Add snapshot or UI tests for the adaptive iPhone and iPad layouts.
- Expand the recommendation engine with more explicit user controls and feedback signals.



