Loading

Full-Stack Automotive E-Commerce: How We Built Slyde Over with Next.js

December 28 · Next.js · E-Commerce · SEO

HomeBlogNext.js
Full-Stack Automotive E-Commerce: How We Built Slyde Over with Next.js screenshot 1
Full-Stack Automotive E-Commerce: How We Built Slyde Over with Next.js screenshot 2
Full-Stack Automotive E-Commerce: How We Built Slyde Over with Next.js screenshot 3
Full-Stack Automotive E-Commerce: How We Built Slyde Over with Next.js screenshot 4
Full-Stack Automotive E-Commerce: How We Built Slyde Over with Next.js screenshot 5

How we hit 95+ Lighthouse scores on a data-heavy automotive marketplace — Next.js ISR, Stripe payments, and SEO-ranking individual vehicle pages at scale.

Next.jsE-CommerceSEO

The Problem with Automotive E-Commerce and SEO

Slyde Over is a full-stack automotive marketplace where dealers list vehicles and buyers browse, filter, and purchase. The SEO challenge is unique to this vertical: every vehicle listing is a potential organic search landing page ('2021 Toyota Camry for sale Los Angeles'), but vehicle inventory turns over weekly. Static generation at build time would mean stale listings. Server-side rendering would kill performance. The solution was Next.js Incremental Static Regeneration — each vehicle page regenerates in the background every 60 seconds, giving you the SEO benefits of a static page with near-real-time inventory accuracy.

The Problem with Automotive E-Commerce and SEO
ISR in Practice: Stale-While-Revalidate for Vehicle Pages

ISR in Practice: Stale-While-Revalidate for Vehicle Pages

With ISR, the first user to visit a vehicle page after the 60-second window triggers a background regeneration. The user sees the cached page instantly — no loading spinner — while the new version is being built. If a vehicle sells during that window, the next regeneration marks it as sold and removes it from search results. We added a client-side freshness check using SWR that polls the vehicle status API every 30 seconds and shows a 'This vehicle has sold' banner in real time if status changes before the next ISR cycle. This combination — ISR for SEO performance plus SWR for real-time accuracy — is the pattern we now use on all inventory-heavy marketplaces.

Stripe Connect: Multi-Dealer Payment Routing

Unlike a single-vendor store, a marketplace needs to split payments between the platform and multiple dealers. We used Stripe Connect with the platform acting as the Connect account orchestrator. Each dealer onboards through a Stripe hosted Express onboarding flow, which handles KYC and bank account verification. When a purchase completes, Stripe's `transfer_data.destination` parameter routes the dealer's cut automatically. We also implemented Stripe's automatic tax calculation for California sales tax, which varies by county and vehicle type — something that would have taken weeks to build manually. The entire payment infrastructure took eight days to implement and has processed zero chargebacks in its first six months.

Stripe Connect: Multi-Dealer Payment Routing
95+ Lighthouse: How We Actually Got There

95+ Lighthouse: How We Actually Got There

Hitting 95+ Lighthouse on a marketplace with 40+ vehicle images per listing required five specific optimizations. First, all images use Next.js `<Image>` with priority loading only for above-the-fold images. Second, vehicle gallery images are lazy-loaded and use WebP format with a JPEG fallback. Third, fonts are self-hosted — no Google Fonts render-blocking requests. Fourth, Stripe's JavaScript is loaded only on checkout pages using Next.js dynamic imports. Fifth, all third-party scripts (analytics, chat widget) use the `strategy='lazyOnload'` prop from `next/script`. The result is a 4G median FCP of 1.1 seconds on vehicle listing pages — fast enough that Google's Core Web Vitals consistently grades us green.

ISR for SEO performance plus SWR for real-time accuracy — this is now our standard pattern for every inventory-heavy marketplace.

Tech Stack Used
Next.jsReactStripe ConnectSWRISRPostgreSQLVercelTailwind CSS
Leave a Comment