Case study
Quick facts
- Role: Solo iOS and Android implementer, App Store submission support, UI polish owner
- Timeframe: January-February 2026
- Platform: iOS and Android
- Status: iOS accepted and live; Android delivered for client-side testing/submission
- Team: Solo mobile developer with client-provided artwork, links, and publishing support
Context
The existing Snowdon Summit Weather app had stopped working because its original API was discontinued. The client needed a fast replacement that preserved the App Store presence and gave Snowdon/Yr Wyddfa visitors access to trusted weather, safety, webcam, rescue, and guided activity resources.
The simplest technical path was not a new weather backend. It was a native app shell around curated, trusted resources, with enough native behavior to feel useful and pass App Store review.
What I built
- Native SwiftUI app with a fixed branded header, slide-out menu, and full-width embedded browser.
- WKWebView bridge with navigation delegates, new-window handling, browser controls, share support, and in-app/external link routing.
- Supplied branding, icons, Poppins typography, bilingual title, and green visual system.
- App Store validation fixes for orientation support and icon transparency.
- Post-launch additions: Snowdon Webcam, rescue donation CTA, activity gallery, and menu refinements.
- Separate native Android implementation using Kotlin, Jetpack Compose, Material 3, and Android WebView.
App Store nuance
A pure link wrapper can be risky for App Store review, so I shaped the replacement as a branded mountain-information browser with native navigation, controls, share behavior, and curated Snowdon/Yr Wyddfa utility content.
That kept the project fast and maintainable while giving the app enough native product surface to be more than a broken API replacement.
Outcome
The iOS replacement was accepted by Apple and went live. The client later requested post-launch enhancements and a matching Android version, which I delivered as a separate native project.
Technical notes
The Android version intentionally stayed native instead of using a cross-platform rewrite. It mirrors the iOS content and behavior with Compose UI, a browser view model, StateFlow, one-shot SharedFlow events, and custom WebView clients for navigation and target-window behavior.