PWA for an Automotive Sales and Leasing Service
Native mobile experience without an app store - one codebase covers web, PWA and Google Play using Next.js, Service Worker and Firebase FCM.
- Client
- samochodowy.pl
- Industry
- Automotive / finance - leasing brokerage and vehicle sales
- Scope
- Building a Progressive Web App as the mobile channel for the service - installable from the browser, with push notifications, running on Android and iOS
- Technologies used
- Next.jsPWAFirebase FCMSymfonyAPI Platform
Results
Samochodowy.pl is a leasing brokerage and vehicle sales service - users browse listings, compare financing terms and submit enquiries about specific vehicles. Growing mobile traffic wasn't translating into good experience: every page transition required a full reload, there was no way to install on the home screen, and buyers received no notifications about changes to listings they were watching.
We proposed a PWA approach as a "one codebase, many channels" strategy - instead of building a separate native iOS/Android app, the new Next.js platform is built from the ground up with full Progressive Web App standards support. The choice was driven by the nature of the project: a vehicle listings service is fundamentally content and search - a category where PWA with SSR/SSG and Service Worker matches native apps and outperforms them in several dimensions.
Why PWA and not a native app?
This question comes up regularly in automotive projects. Our answer in this case rested on three arguments.
Nature of the product. A listings service is content-heavy browsing - viewing, filtering, comparing. PWA doesn't fall short of native apps from a UX perspective in this category. It would be different for an app with camera access, offline maps or intensive use of device sensors.
Maintenance cost. Native iOS and Android apps are two separate projects, two separate release processes, two separate sets of bugs. For a platform in active development, the cost of keeping three codebases in sync would be disproportionate to the benefit.
SEO as a priority. A vehicle listings service lives on organic traffic. A native app is not indexed by Google - a PWA is. For a client building search rankings on leasing and model-specific phrases, that's the deciding argument.
Diagnosis
Mobile traffic without a mobile experience - 3 pain points
Web without a mobile experience
Full page reload on every navigation, no ability to install on the home screen, no push notifications - mobile users had a worse experience than desktop users.
Two codebases means twice the work
Maintaining a separate native mobile app alongside active development of the web platform doubles the cost of every feature change.
No push notifications for buyers
A user who saved a listing or enquired about leasing received no notifications about price changes, availability updates or replies from a salesperson.
Solution
One codebase, three distribution channels
Web App Manifest
Configuration file describing the app to the browser: icon, name, splash screen colour, standalone display mode without the URL bar. Chrome and Safari users see an 'Add to Home Screen' prompt.
Service Worker
Background script handling static asset caching, offline mode for previously visited pages, and request interception - serving from cache when there's no connection.
SSR/SSG on Next.js
Server-side HTML rendering - fast First Contentful Paint on slow mobile connections, full Google indexability, and no white screen on first load.
Firebase FCM
Push notification engine for PWA and Google Play users. The Symfony backend sends events to Firebase - price change, salesperson reply, listing availability - and Firebase delivers the notification regardless of whether the app is open.
How we worked
PWA as the natural output of the Next.js decision
Mobile-first verification on every decision
PWA was not treated as a separate project. Every architectural decision on the web platform was verified from a mobile angle: load time on 4G, behaviour at 375px, endpoint speed on a weak signal.
Roles as the first decision
The system serves different users - buyers on the platform and salespeople in the CRM. Defining PWA mode per role (who gets push notifications, which manifest applies) prevented chaos as features multiplied.
Timing the Google Play reupload
Picking the right moment to reupload the app was critical - too early risked breaking existing users, too late left them on an incompatible version. The task was tied to the new API stability milestone.
FCM integration as a separate track
Firebase Cloud Messaging had its own discovery and estimate - a separate integration allowed managing technical risk without blocking the main platform backlog.
Results
One codebase, zero mobile compromises
- ✓ One codebase serves web, PWA and the mobile app - every platform change reaches all channels simultaneously without a separate mobile release process
- ✓ Mobile users can install the app without an app store - the browser install prompt removes the friction of searching for the app in the App Store or Google Play
- ✓ Push notifications as a new buyer communication channel - a salesperson replies to a leasing enquiry, the user gets a notification on their phone even with the app closed
- ✓ SEO without mobile compromises - SSR/SSG ensures full Google indexability of car listings, directly driving organic mobile traffic
- ✓ Future-proof architecture - dealership geolocation, VIN scanner or offline comparison don't require a separate mobile project, they happen within the existing Next.js codebase
See next
More case studies

Symfony
Custom CRM for an Automotive Sales and Leasing Service
From spreadsheets and phone calls to a purpose-built CRM for the leasing sales process - 6 modules, e-signature integration, and full sales analytics.

Data Layer
Scortea.pl – modern online drugstore in 8 weeks
Scortea.pl – a modern online drugstore and pharmacy. Endora deployed WooCommerce, optimized SEO and configured the Data Layer in just 8 weeks.
Have a specific challenge?
Don't just read about it - let's talk about your case.