ALFMOB-437: Modern Design Rollout — Startup / Splash screen - #96
Conversation
There was a problem hiding this comment.
Pull request overview
Updates Alfie’s startup/splash experience to match the “modern design” spec by introducing a dedicated in-app SplashView (wordmark + static spinner) and aligning the native LaunchScreen.storyboard logo sizing/asset handling for launch→in-app visual consistency.
Changes:
- Added a new
SplashViewinAppFeatureand wired it into the.loadingstartup screen (replacing the animatedThemedLoaderView). - Introduced SharedUI building blocks:
ThemedImage.splashLogo(new wordmark asset) andThemedSpinnerView(static, non-animated indicator). - Updated launch screen assets/layout and added a small unit test + accessibility identifier plumbing.
Reviewed changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Docs/Plans/ALFMOB-437-splash-redesign/scope.md | Captures current-state analysis and target layout requirements. |
| Docs/Plans/ALFMOB-437-splash-redesign/plan.md | Documents the phased implementation plan and decisions. |
| Docs/Plans/ALFMOB-437-splash-redesign/grill.md | Records final design/implementation decisions. |
| Docs/Plans/ALFMOB-437-splash-redesign/_status.md | Tracks execution status and verification notes. |
| Alfie/AlfieKit/Tests/AppFeatureTests/SplashViewTests.swift | Adds unit coverage for the new splash view/identifier. |
| Alfie/AlfieKit/Sources/SharedUI/Theme/Images/ThemedImages.xcassets/splash-wordmark.imageset/splash-wordmark.svg | Adds the new MINDERA/ALFIE wordmark vector asset for SharedUI. |
| Alfie/AlfieKit/Sources/SharedUI/Theme/Images/ThemedImages.xcassets/splash-wordmark.imageset/Contents.json | Ensures vector preservation for the new SharedUI wordmark asset. |
| Alfie/AlfieKit/Sources/SharedUI/Theme/Images/ThemedImage.swift | Exposes the new wordmark via ThemedImage.splashLogo. |
| Alfie/AlfieKit/Sources/SharedUI/Theme/Components/Loader/ThemedSpinnerView.swift | Adds a static (non-animated) spinner component in SharedUI. |
| Alfie/AlfieKit/Sources/AppFeature/UI/SplashView.swift | Implements the in-app splash layout and accessibility identifier. |
| Alfie/AlfieKit/Sources/AppFeature/Navigation/AppFeatureView.swift | Switches the .loading startup screen to the new SplashView. |
| Alfie/AlfieKit/Sources/AccessibilityIdentifiers/AccessibilityID.swift | Adds AccessibilityID.Splash.screen. |
| Alfie/AlfieKit/Package.swift | Wires AccessibilityIdentifiers into AppFeature + AppFeatureTests. |
| Alfie/Alfie/LaunchScreen.storyboard | Resizes the launch logo image view/resource metadata to match the new lockup aspect. |
| Alfie/Alfie/Assets.xcassets/LaunchLogo.imageset/LaunchLogo.svg | Updates the app launch logo artwork to the new lockup vector. |
…-based SplashView test
…tological assertion
hoangnhatdrk
left a comment
There was a problem hiding this comment.
✅ Approving — safe to merge, no correctness issues.
Verified theme.spacing.space{200,300,400,600} = 16/24/32/48 (so LoadingSpinner S/M/L = 24/32/48 as described), theme.color.neutrals0, and ThemedImage.literalName/bundle all resolve on the branch. The .overlay + alignmentGuide approach keeps the wordmark centred so it aligns with the launch screen.
Two non-blocking accessibility polish items for a follow-up:
- Reduce Motion:
LoadingSpinneruses.repeatForeverwith no@Environment(\.accessibilityReduceMotion)gate — a DS-level spinner is the right place to honour that setting. - VoiceOver:
SplashViewreplacesThemedLoaderView(labelHidden: true, labelTitle: L10n.Loading.title)with only anaccessibilityIdentifier, so the startup no longer announces a "Loading" cue. Minor regression given it's a brief splash.
ALFMOB-437 — Modern Design Rollout: Startup / Splash screen
Restyles the app startup screen to the modern Figma design, adds the design-system Loading Spinner component, and (for launch→in-app consistency) updates the native launch screen. Visual-only; no behaviour, timing, or boot-sequence change. No feature flag (app unreleased). Dark mode deferred.
Jira: https://mindera.atlassian.net/browse/ALFMOB-437
Figma: Loading screen (iOS) · Loading Spinner (DS)
What changed
AppFeature): newSplashView— the MINDERA/ALFIE wordmark centred (vertically aligned with the launch screen, no jump on hand-off) with the loading spinner hanging below it via.overlay. Replaces the animated GIFThemedLoaderViewfor the.loadingstate; background bleeds full-screen.LoadingSpinner, SharedUI): the Figma spinner artwork (ThemedImage.loadingSpinner, an angular "comet" arc PNG) rotated continuously, sizes S/M/L (24/32/48) via aSizeconfig. Splash uses.small. (Rendered from the exported image because the design's conic gradient can't be carried into Xcode by SVG.)ThemedImage.splashLogo, shared by both screens.LaunchScreen.storyboard): new MINDERA/ALFIELaunchLogo, resized to the lockup aspect (160×49),preserves-vector-representationrestored.AccessibilityID.Splash.screen;AccessibilityIdentifierswired into theAppFeaturetarget.Acceptance criteria
AppStartupServiceTestsunchanged and green.Notes on scope
LoadingSpinnerseam to be deterministic).Testing
./Alfie/scripts/verify.sh --skip-integration→ ✅ build + unit tests passing.Plan / decisions:
Docs/Plans/ALFMOB-437-splash-redesign/