Skip to content
Endora

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.

PWA for an Automotive Sales and Leasing Service
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

1
codebase for web, PWA and Google Play
2
distribution channels: browser + Google Play
0
separate native codebases to maintain

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

01

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.

02

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.

03

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.

04

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
Technologies used
Next.jsPWAFirebase FCMSymfonyAPI Platform

Have a specific challenge?

Don't just read about it - let's talk about your case.