SlideShare a Scribd company logo
Large Scale CSS Refactoring at trivago
@pistenprinz
Ironman release picture
Crazy Guy
Talking to you 

right now
Does something
with frontend at
trivago
Loves giving
presentations
U.Bolt
Performance
Unicorn
Christoph Reinartz - @pistenprinz
What is it?

A description
Project Ironman was the technical migration of the
trivago hotel search's existing CSS core to a pattern
library based user interface.*
*) business translation for #refactorAllTheThings
Christoph Reinartz - @pistenprinz
Ironman - the tech context

The big picture
• Establishing a Frontend / Design System
• Reduce technical debt
• Consistency in Code (and Design) over all
applications
• Provide base for modern & sustainable UI rebuild
Christoph Reinartz - @pistenprinz
Ironman & the pattern library

Built without Design Thinking and Atomic Design
Christoph Reinartz - @pistenprinz
Ironman & the pattern library

Built with Design Thinking and Atomic Design
Christoph Reinartz - @pistenprinz
Ironman & Atomic Design

Atomic Design in one gif
http://bradfrost.com/blog/post/atomic-design-in-one-gif/
Christoph Reinartz - @pistenprinz
Ironman & the pattern library

Behind the scenes - the developer playground
Christoph Reinartz - @pistenprinz
Before Ironman

The pain points
• IE7 support
• Layout built on reset.css
• Overly complex CSS/DOM structure
• Desktop first approach
• Inconsistency
Christoph Reinartz - @pistenprinz
Before Ironman

The pain points
Christoph Reinartz - @pistenprinz
Fifty shades of grey

Or how to prove inconsistency
Christoph Reinartz - @pistenprinz
Specificity graph 2012

The specificity wall
Christoph Reinartz - @pistenprinz
Graph before ironman

Way better, but still …
peaks at the beginning
of the stylesheet
Christoph Reinartz - @pistenprinz
Ironman & IE7

Disqualification
Christoph Reinartz - @pistenprinz
Ironman - the scope

The 3 disciplines
• Normalize.css incl. border-box switch*
• Mobile first switch*
• SVG icons instead of image sprites*
*) integrate the new CSS framework base which was developed with the
Pattern Library but retain the existing layout and design
Christoph Reinartz - @pistenprinz
Ironman - the scope

In detail
• Refactor > 50000 lines of Code of SCSS
• Adapt dozens of templates
• Keep IE8 support
• Remove 1200 Icons
• Extensive (Device-)Testing
• In 4 weeks!
Christoph Reinartz - @pistenprinz
Ironman - the challenges

The business
How to tell management that you need 4 weeks of
feature freeze and the User Interface will look exactly
the same afterwards?
Code / Process Audits
How to tell management that you need you need 4 weeks of feature
freeze and the User Interface will exactly look the same afterwards?
Christoph Reinartz - @pistenprinz
Ironman - the challenges

Possible ways to convince the business side
• Argue!
• Be a salesman- Sell it! Prove it! Show benefits!
• Do it in 3 weeks!
• Don’t only think technically!
Christoph Reinartz - @pistenprinz
Ironman - the challenges

The process
• How to integrate such a project into an existing
process?
• How to handle management expectation?
• How to plan and estimate?
Christoph Reinartz - @pistenprinz
Ironman - the challenges

Possible ways to enforce culture
• People over process
• Commitment over estimation
• Agility
• Make progress transparent
• Involve everybody
• Motivate people and let them be awesome
Christoph Reinartz - @pistenprinz
Christoph Reinartz - @pistenprinz
Ironman in numbers

People and processes
• 1 Project Team
• 9 awesome developers, 3 lovely designers
• Infinite supporters
• 3 Meetings
• 17 daily stand-ups
• 67 Post-Its on Kanban board
• 1 Slack-channel
Christoph Reinartz - @pistenprinz
Ironman in numbers

Code and Outcome
• ~800 Commits in 3 weeks
• 11973 LOC added
• 36668 LOC removed
• Reduced SCSS LOC from 52991 to 39755
• Infinite icons replaced with 451 SVGs
• 352 files changed
Code / Process Audits
• 1 Project Team
• 7 awesome developers
• infinite supporters
Christoph Reinartz - @pistenprinz
Showcase 1

Desktop first vs. Mobile first
Project Ironman - Large Scale CSS Refactoring @trivago
Project Ironman - Large Scale CSS Refactoring @trivago
Christoph Reinartz - @pistenprinz
Showcase 2

Sprite Wars vs. SVG beauty
Project Ironman - Large Scale CSS Refactoring @trivago
Project Ironman - Large Scale CSS Refactoring @trivago
Christoph Reinartz - @pistenprinz
Showcase 3

HTTP Requests
Christoph Reinartz - @pistenprinz
Showcase 3

HTTP requests
Christoph Reinartz - @pistenprinz
Showcase 3

HTTP requests
Christoph Reinartz - @pistenprinz
Ironman - At a glance

Happy times
• Foundation built to move the UI Development to
the next level
• Better rendering performance on mobile
• Shared knowledge and understanding
throughout, between all developers and the entire
design/product team
Christoph Reinartz - @pistenprinz
Ironman - At a glance

Happy times
• Optimized design-development process through
Atomic Design
• Changed coding guidelines and improved
structure (ITCSS, BEM, OOCSS, …)
Christoph Reinartz - @pistenprinz
Moved to ITCSS

Prepared base for new UI components
Christoph Reinartz - @pistenprinz
Graph before Ironman

Way better, but still …
peaks at the beginning
of the stylesheet
Christoph Reinartz - @pistenprinz
Graph after Ironman

Improved curve
New CSS
base
Adapted old UI components.
Can now be easily rebuilt!
SVG
Christoph Reinartz - @pistenprinz
Ready for the next steps

Automate the pattern integration
Christoph Reinartz - @pistenprinz
Thanks

I’m done
Christoph Reinartz
Team Lead UI/UX Engineering
@pistenprinz

More Related Content

PDF
about:consistency - lesson learned: the hard way
PDF
Project Ironman - Large Scale Refactoring @trivago (JSUnconf 2016)
PDF
AWS re:Invent 2017 Photo Report
PPTX
Creating Custom HTML Helpers In ASP.NET MVC
PPTX
Ember JS - Why Ember Matches My Wavelength
PPTX
Super tools to boost productivity in React dev env!
PDF
Was nicht passt wird responsive gemacht - Conference Edition
PDF
Was nicht passt wird responsive gemacht
about:consistency - lesson learned: the hard way
Project Ironman - Large Scale Refactoring @trivago (JSUnconf 2016)
AWS re:Invent 2017 Photo Report
Creating Custom HTML Helpers In ASP.NET MVC
Ember JS - Why Ember Matches My Wavelength
Super tools to boost productivity in React dev env!
Was nicht passt wird responsive gemacht - Conference Edition
Was nicht passt wird responsive gemacht

Viewers also liked (7)

PDF
Was nicht passt wird responsive gemacht - Extended Edition
PDF
Trivago - NOAH12 London
PDF
Trivago - NOAH12 San Francisco
PDF
29112014 rhino kruger national park
PPT
La importancia del ejercicio fisico regular
PPS
14 san valentin (1)
PDF
Cuidados en enfermería
Was nicht passt wird responsive gemacht - Extended Edition
Trivago - NOAH12 London
Trivago - NOAH12 San Francisco
29112014 rhino kruger national park
La importancia del ejercicio fisico regular
14 san valentin (1)
Cuidados en enfermería
Ad

Similar to Project Ironman - Large Scale CSS Refactoring @trivago (20)

PDF
Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...
PDF
Html 5 mobile - nitty gritty
PPTX
Talk 03 responsive-web-design
PDF
5 Mistakes of Massive CSS
PDF
CSS3 and Advanced Design
PDF
Monkeytalk Fall 2012 - Responsive Web Design
PDF
Building Better Responsive Websites
PDF
Accelerated Stylesheets
PDF
Teams, styles and scalable applications
PDF
Effective and Efficient Design with CSS3
PDF
responsive awareness
PDF
SXSWUI15 UI Patterns: Then & Now
PDF
UX Alive Conference speaker is Vitaly Friedman (Smashing Magazine) presentations
PDF
Introduction to CSS3
PDF
Dynamic User Interfaces for Desktop and Mobile
PDF
Real-world CSS3
PPTX
Responsive & Adaptive Web Design
PDF
HICapacity UI talk by Kathryne Sakata
PDF
The Future of CSS
PDF
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)
Large Scale Refactoring at Trivago - Christoph Reinartz - Codemotion Amsterda...
Html 5 mobile - nitty gritty
Talk 03 responsive-web-design
5 Mistakes of Massive CSS
CSS3 and Advanced Design
Monkeytalk Fall 2012 - Responsive Web Design
Building Better Responsive Websites
Accelerated Stylesheets
Teams, styles and scalable applications
Effective and Efficient Design with CSS3
responsive awareness
SXSWUI15 UI Patterns: Then & Now
UX Alive Conference speaker is Vitaly Friedman (Smashing Magazine) presentations
Introduction to CSS3
Dynamic User Interfaces for Desktop and Mobile
Real-world CSS3
Responsive & Adaptive Web Design
HICapacity UI talk by Kathryne Sakata
The Future of CSS
Accelerated grid theming using NineSixty (Drupal Design Camp Boston 2009)
Ad

Recently uploaded (20)

PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Designing Intelligence for the Shop Floor.pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
Nekopoi APK 2025 free lastest update
PPTX
history of c programming in notes for students .pptx
PDF
System and Network Administration Chapter 2
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Odoo Companies in India – Driving Business Transformation.pdf
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Reimagine Home Health with the Power of Agentic AI​
Softaken Excel to vCard Converter Software.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Designing Intelligence for the Shop Floor.pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
How to Migrate SBCGlobal Email to Yahoo Easily
PTS Company Brochure 2025 (1).pdf.......
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Which alternative to Crystal Reports is best for small or large businesses.pdf
Operating system designcfffgfgggggggvggggggggg
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Computer Software and OS of computer science of grade 11.pptx
Nekopoi APK 2025 free lastest update
history of c programming in notes for students .pptx
System and Network Administration Chapter 2
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Odoo Companies in India – Driving Business Transformation.pdf

Project Ironman - Large Scale CSS Refactoring @trivago

  • 1. Large Scale CSS Refactoring at trivago @pistenprinz
  • 2. Ironman release picture Crazy Guy Talking to you 
 right now Does something with frontend at trivago Loves giving presentations U.Bolt Performance Unicorn
  • 3. Christoph Reinartz - @pistenprinz What is it?
 A description Project Ironman was the technical migration of the trivago hotel search's existing CSS core to a pattern library based user interface.* *) business translation for #refactorAllTheThings
  • 4. Christoph Reinartz - @pistenprinz Ironman - the tech context
 The big picture • Establishing a Frontend / Design System • Reduce technical debt • Consistency in Code (and Design) over all applications • Provide base for modern & sustainable UI rebuild
  • 5. Christoph Reinartz - @pistenprinz Ironman & the pattern library
 Built without Design Thinking and Atomic Design
  • 6. Christoph Reinartz - @pistenprinz Ironman & the pattern library
 Built with Design Thinking and Atomic Design
  • 7. Christoph Reinartz - @pistenprinz Ironman & Atomic Design
 Atomic Design in one gif http://bradfrost.com/blog/post/atomic-design-in-one-gif/
  • 8. Christoph Reinartz - @pistenprinz Ironman & the pattern library
 Behind the scenes - the developer playground
  • 9. Christoph Reinartz - @pistenprinz Before Ironman
 The pain points • IE7 support • Layout built on reset.css • Overly complex CSS/DOM structure • Desktop first approach • Inconsistency
  • 10. Christoph Reinartz - @pistenprinz Before Ironman
 The pain points
  • 11. Christoph Reinartz - @pistenprinz Fifty shades of grey
 Or how to prove inconsistency
  • 12. Christoph Reinartz - @pistenprinz Specificity graph 2012
 The specificity wall
  • 13. Christoph Reinartz - @pistenprinz Graph before ironman
 Way better, but still … peaks at the beginning of the stylesheet
  • 14. Christoph Reinartz - @pistenprinz Ironman & IE7
 Disqualification
  • 15. Christoph Reinartz - @pistenprinz Ironman - the scope
 The 3 disciplines • Normalize.css incl. border-box switch* • Mobile first switch* • SVG icons instead of image sprites* *) integrate the new CSS framework base which was developed with the Pattern Library but retain the existing layout and design
  • 16. Christoph Reinartz - @pistenprinz Ironman - the scope
 In detail • Refactor > 50000 lines of Code of SCSS • Adapt dozens of templates • Keep IE8 support • Remove 1200 Icons • Extensive (Device-)Testing • In 4 weeks!
  • 17. Christoph Reinartz - @pistenprinz Ironman - the challenges
 The business How to tell management that you need 4 weeks of feature freeze and the User Interface will look exactly the same afterwards?
  • 18. Code / Process Audits How to tell management that you need you need 4 weeks of feature freeze and the User Interface will exactly look the same afterwards?
  • 19. Christoph Reinartz - @pistenprinz Ironman - the challenges
 Possible ways to convince the business side • Argue! • Be a salesman- Sell it! Prove it! Show benefits! • Do it in 3 weeks! • Don’t only think technically!
  • 20. Christoph Reinartz - @pistenprinz Ironman - the challenges
 The process • How to integrate such a project into an existing process? • How to handle management expectation? • How to plan and estimate?
  • 21. Christoph Reinartz - @pistenprinz Ironman - the challenges
 Possible ways to enforce culture • People over process • Commitment over estimation • Agility • Make progress transparent • Involve everybody • Motivate people and let them be awesome
  • 22. Christoph Reinartz - @pistenprinz
  • 23. Christoph Reinartz - @pistenprinz Ironman in numbers
 People and processes • 1 Project Team • 9 awesome developers, 3 lovely designers • Infinite supporters • 3 Meetings • 17 daily stand-ups • 67 Post-Its on Kanban board • 1 Slack-channel
  • 24. Christoph Reinartz - @pistenprinz Ironman in numbers
 Code and Outcome • ~800 Commits in 3 weeks • 11973 LOC added • 36668 LOC removed • Reduced SCSS LOC from 52991 to 39755 • Infinite icons replaced with 451 SVGs • 352 files changed
  • 25. Code / Process Audits • 1 Project Team • 7 awesome developers • infinite supporters
  • 26. Christoph Reinartz - @pistenprinz Showcase 1
 Desktop first vs. Mobile first
  • 29. Christoph Reinartz - @pistenprinz Showcase 2
 Sprite Wars vs. SVG beauty
  • 32. Christoph Reinartz - @pistenprinz Showcase 3
 HTTP Requests
  • 33. Christoph Reinartz - @pistenprinz Showcase 3
 HTTP requests
  • 34. Christoph Reinartz - @pistenprinz Showcase 3
 HTTP requests
  • 35. Christoph Reinartz - @pistenprinz Ironman - At a glance
 Happy times • Foundation built to move the UI Development to the next level • Better rendering performance on mobile • Shared knowledge and understanding throughout, between all developers and the entire design/product team
  • 36. Christoph Reinartz - @pistenprinz Ironman - At a glance
 Happy times • Optimized design-development process through Atomic Design • Changed coding guidelines and improved structure (ITCSS, BEM, OOCSS, …)
  • 37. Christoph Reinartz - @pistenprinz Moved to ITCSS
 Prepared base for new UI components
  • 38. Christoph Reinartz - @pistenprinz Graph before Ironman
 Way better, but still … peaks at the beginning of the stylesheet
  • 39. Christoph Reinartz - @pistenprinz Graph after Ironman
 Improved curve New CSS base Adapted old UI components. Can now be easily rebuilt! SVG
  • 40. Christoph Reinartz - @pistenprinz Ready for the next steps
 Automate the pattern integration
  • 41. Christoph Reinartz - @pistenprinz Thanks
 I’m done Christoph Reinartz Team Lead UI/UX Engineering @pistenprinz