Skip to main content
All projects

John Lewis

By Alex Vasiliu, iOS Solution Architect

iOS appApp Store

The John Lewis iOS app serves millions of shoppers at one of the UK's most trusted retail chains, offering a catalogue of over 300,000 products spanning fashion, home, and electronics. Customers shop with a fully digital membership card, scan in-store barcodes for product details and price comparisons, and use augmented reality to visualise furniture in their own space before committing to a purchase. Feature-flag-driven A/B testing lets the product team iterate safely on checkout flows and merchandising for shoppers. The project spanned UIKit and SwiftUI codebases, with Bitrise running continuous integration and Adobe Analytics measuring conversion throughout the funnel across key customer journeys.

John Lewis screenshot 1John Lewis screenshot 2John Lewis screenshot 3

Tech stack

UIKit
SwiftUI
MVVM
Adobe Analytics
A/B Tests
Vapor
Bitrise
Coordinator
Docker
Feature Flags
VoiceOver
Dynamic Text
Unit Tests
Snapshot Tests

Technical details

  • Developed in UIKit with MVP design pattern
  • New flows implemented in SwiftUI with MVVM design pattern
  • Coordinator for navigation management and decoupled component interactions
  • Swift Package Manager for managing the distribution of code
  • Jira for bug tracking, issue tracking and project management
  • Confluence for knowledge sharing
  • Docker encapsulating application environment
  • BFF (Backend for Frontend) for specific user interface layer
  • Vapor handling robust and scalable backend services
  • Bitrise for CI/CD streamlining workflows
  • Elastic for data analysis and visualisation through logging services
  • Modern Concurrency for asynchronous code execution
  • Adobe Analytics to measure performance and optimize marketing strategies
  • A/B tests to evaluate variations in UX optimizing user engagement
  • Feature flags for phased rollouts and safe testing environments
  • REST API alongside Postman
  • Dark Mode option for low-light environments, enhancing visual ergonomics
  • Voice Over for users with visual impairments
  • Dynamic Text to accommodate user preferences for readability
  • Firebase for Crashlytics and Dynamic Links
  • Unit Tests for Domain and API layer
  • Snapshot tests to ensure visual elements rendering
  • SwiftLint to enforce style and conventions for code formatting
  • Figma for wireframes and visual design