Technical SEO Nightmares with React Client-side Web Apps – Brighton SEO October 2025.pdf

depalmasimone328 8 views 60 slides Oct 18, 2025
Slide 1
Slide 1 of 60
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60

About This Presentation

In this talk, Simone lifts the lid on how JavaScript affects what search engines actually see - starting from the basics of indexation, then diving into a site migration gone sideways due to a dodgy client-side routing configuration in a React app.

It’s one for the technically curious: think rend...


Slide Content

Confidential -Not for Public Consumption or Distribution

Confidential -Not for Public Consumption or Distribution
Discovered –Currently Not Indexed

Confidential -Not for Public Consumption or Distribution
Duplicate, Google Chose another Canonical
/:/gamma-
a4/a4-all-
road/
/:/a4/a4-all-
road/

Confidential -Not for Public Consumption or Distribution

Confidential -Not for Public Consumption or Distribution
WhatWeCover Today…
Simone De Palma
3 How Does React Routing Works
4 React & Tech SEONightmares
2 How JavaScript (Still) Affect SEO
1 JavaScript: the Genesis of UX
SEODepths.com

Confidential -Not for Public Consumption or Distribution
JavaScript: the Genesis of UX
Part 1
Simone De Palma SEODepths.com

Confidential -Not for Public Consumption or Distribution
JavaScript is a
Babylon of
Programming
Frameworks

Confidential -Not for Public Consumption or Distribution
From One
Language,
Many Accents

Confidential -Not for Public Consumption or Distribution
Mobile Apps have boomed since 2015
Forbes (2015). 2015 Is The Year Of The Mobile Web - Is Your Website Ready?

Confidential -Not for Public Consumption or Distribution
SEO Specialist
Marketer

Confidential -Not for Public Consumption or Distribution
90's -00's Around2015
<span>
<div>

Confidential -Not for Public Consumption or Distribution
JavaScript isnotthe Villain
PoorBusiness Decisionsare

Confidential -Not for Public Consumption or Distribution
Whatabout
React ?

Confidential -Not for Public Consumption or Distribution
A JavaScript library for high-end
SPAs and mobile apps
Recycle UI components
Update content efficiently
Feeds with a solid ecosystem of JavaScript frameworks (like Redux, Next.js)
Build mobile apps (React Native) or server-rendered sites

Confidential -Not for Public Consumption or Distribution
Crawl/Indexing
URLs
Change
URLsDon’tChange
Page Load Time Jarring Fast
User ExperienceLimited Excellent
Rendering SSR isEasy Default CSR
React doesn’t help with SEO

Confidential -Not for Public Consumption or Distribution
eCommerce Currency Selector
React vs HTML ft. plain JavaScript

Confidential -Not for Public Consumption or Distribution
React

Confidential -Not for Public Consumption or Distribution
Simple JavaScript on top of HTML

Confidential -Not for Public Consumption or Distribution
Are you saying we must have an HTML
solution for each page template?

Confidential -Not for Public Consumption or Distribution
“We don’t have enough
bandwidth to handle the
request”
“We’re going to run this in
the next sprint”
“We need to get back to the
CMS to grant access to the
pipeline”

Confidential -Not for Public Consumption or Distribution
Technical
Complexities
Poor
Management
No Money
Business Decisions
Complex Back-Ends

Confidential -Not for Public Consumption or Distribution
•Why are we using aJavaScript library for
amostly static site?
•Why isn’t this justHTML?
•How does SEO feed into the Marketing
strategy?
•What’s the SEO value as a Marketing
Touchpoint?

Confidential -Not for Public Consumption or Distribution
How JavaScript(Still) AffectSEO
Part 2
Simone De Palma SEODepths.com

Confidential -Not for Public Consumption or Distribution
Google’s improved
JavaScript
execution
And yetstill…
Googlebot Users

Confidential -Not for Public Consumption or Distribution
Excessive Client-
side JavaScript can
Break Rendering
Googlebot’s View

Confidential -Not for Public Consumption or Distribution
LLMs can’texecuteJavaScript
But fetch contentfrom SSR sections

Confidential -Not for Public Consumption or Distribution
JavaScript & the Indexing Pipeline
The Renderer is the Battlefield

Confidential -Not for Public Consumption or Distribution
JavaScript abide by their own Rules
But can be Mitigated

Confidential -Not for Public Consumption or Distribution
How Does React RoutingWork
Part 3
Simone De Palma SEODepths.com

Confidential -Not for Public Consumption or Distribution
Routing in React

Confidential -Not for Public Consumption or Distribution
Server-Side Routing & Traditional Web Apps

Confidential -Not for Public Consumption or Distribution
Excellent for crawling, rendering, and
indexation
Faster initial load time
Slower progressive navigation as it
needs dependencies
Frontend and backend are tied
together

Confidential -Not for Public Consumption or Distribution
Client-Side Routing & SPAs

Confidential -Not for Public Consumption or Distribution
Seamless navigation
Frontend and backend are separated
Slower initial load time
Search engines can’t crawl/render
critical components

Confidential -Not for Public Consumption or Distribution
What to look For
InvisibleInternalLinks
Rendering Blocks

Confidential -Not for Public Consumption or Distribution
How to look for
Wappalyzer

Confidential -Not for Public Consumption or Distribution
React For SEO
Download for Free

Confidential -Not for Public Consumption or Distribution
Does it Affect Rendering?
Rendering DifferenceEngine URL InspectionTool

Confidential -Not for Public Consumption or Distribution
React & Tech SEONightmares
Part 4
Simone De Palma SEODepths.com

Confidential -Not for Public Consumption or Distribution
The Router in React
Router
URL Routing

Confidential -Not for Public Consumption or Distribution
That Beautiful Typo in the Router…

Confidential -Not for Public Consumption or Distribution
… caused Indexation to go rogue

Confidential -Not for Public Consumption or Distribution
… making it harder to Crawl
Filter Selection doesn’t
update the URL

Confidential -Not for Public Consumption or Distribution
But the page loaded just fine!
Filter Selection doesn’t
update the URL

Confidential -Not for Public Consumption or Distribution
Default Client-side Routing
The server didn’t receive any requests
to update the pages
Indexing

Confidential -Not for Public Consumption or Distribution
Filter banner
missing
Product
listings
missing
… as well as
Rendering
impediments

Confidential -Not for Public Consumption or Distribution
Default Client-side Rendering
The banner filter and product
listings were hydrated client-side
Rendering

Confidential -Not for Public Consumption or Distribution
TL;DR –Client-Side Stuff Poisons SEO

Confidential -Not for Public Consumption or Distribution
Our Ask #1
Fix Duplicate Keys with
Dynamic Filtering in the
Router

Confidential -Not for Public Consumption or Distribution
Nobody said it
was Easy

Confidential -Not for Public Consumption or Distribution
#2 Switch to Server-Side Routing

Confidential -Not for Public Consumption or Distribution
But stitching up the front-end to the
back-end was
??????Resource-intensive
Expensive

Confidential -Not for Public Consumption or Distribution
Static Server
Generation for
static pages
Server-Side
Rendering for
dynamic filtering
Pre-Rendering #3
Expensive and Ineffective

Confidential -Not for Public Consumption or Distribution
Because React is
a Different Beast

Confidential -Not for Public Consumption or Distribution
Align your SEO strategy to
Marketing goals…
#1 That Key Takeaway

Confidential -Not for Public Consumption or Distribution
…based on your CSR Reliance

Confidential -Not for Public Consumption or Distribution
Keep off
Client-side
Routing &
Rendering
#2 That Key Takeaway

Confidential -Not for Public Consumption or Distribution
Advocate
Server-side
Routing &
Rendering
#3 That Key Takeaway

Confidential -Not for Public Consumption or Distribution
From SPA to Micro Frontends
SPA
React
Dynamic
Filtering
Filtered View
Web app Layer
Service Layer
Dynamic Filtering
SPA
React
Listings
Product Listings
Product Listings

Confidential -Not for Public Consumption or Distribution
ManyThanks and…
Simone De Palma
GET THE
SLIDES
SEODepths.com
Tags