SlideShare a Scribd company logo
Stripe con 2021 UI stack
Silverstripe CMS UI Stack
Stripecon 2021
About me
Principal developer
Silverstripe Ltd
Core Committer on
Silverstripe CMS project
Overview ● A brief history of the Silverstripe
CMS 4 UI
● Embracing the weirdness
Disclaimer
This is NOT a WebPack, React, Redux,
GraphQL crash course.
A brief history of the
Silverstripe CMS 4 UI
Let’s go back to March 2018 ...
Stripe con 2021 UI stack
Stripe con 2021 UI stack
Stripe con 2021 UI stack
Retrospective
●
Stripe con 2021 UI stack
Silverstripe CMS UI was mismatch of legacy technologies
● JQuery
● Entwine
● SS templates
● undocumented REST API
Speaking of kinks
● Webpack + Babel
● React
● Redux
● Redux/Forms
● GraphQL
● Bootstrap/Reactstrap
● SASS/CSS
The shiny new thing
Fast forward 3½ years ...
● Legacy stack is still around
● Our modern stack is dated
Meet the new stack, same as the old stack
Small wins
● Elemental Area
● CMS Page history
● New features trump refactoring old code
● Repeated some of the same mistake
● More urgent priorities came along
What went wrong?
● Shock
● Denial
● Anger
● Bargaining
● Depression
● Testing
● Acceptance
7 stages of UI stack development grief
● Complete CMS UI refactor is not going to happen
● The Silverstripe CMS UI stack is weird
Coming to terms with reality
Embracing the weirdness
● Shipping a front end client inside a modular PHP application
● Customising JS is hard
Where the weirdness comes from
The UI stack
Modern Stack Legacy Stack
Dependency Yarn Manually managed + yarn
Build system Webpack+babel
Rendering React JQuery/Entwine
SS template
State management Redux Nothing
UI Library Bootstrap/Reactstrap Bootstrap + JQuery UI
Data communication Apollo+fetch JQuery
Data layer GraphQL+REST REST
CI Jest / Enzyme Nothing
silverstripe/admin
● LeftAndMain bits
● Core UI components
● Common helpers
● Shared libraries
Every other module
● Feature specific
components
● Feature specific
libraries
● Relies on admin
Sharing is
caring
The magical tale of
@silverstripe/webpack-config
and the expose-loader
Sharing is
caring
Registering resources with the
Injector
Sharing is
caring
Accessing resources with
registered with the Injector
Demo time
●  composer install --prefer-source 
● Remove packages first
● Do for silverstripe/admin as well
●  yarn install 
● On admin as well
●  yarn pattern-library 
● On admin only
●  yarn dev 
●  yarn watch 
●  yarn test 
●  yarn build 
Cheat sheet
What did we learn today?
● Don’t read the doc!
● Read Adrian’s blog post on how to create React Form Field
○ https://blog.jar.nz/posts/new-field-in-silverstripe
● Fork our module template
○ https://github.com/silverstripe/silverstripe-module
● Require maxime-rainville/recipe-react
○ https://github.com/maxime-rainville/recipe-react
What’s next?
Thank you!

More Related Content

PDF
Silverstripe CMS 4.9.0 release and beyound
PDF
React vs angular (mobile first battle)
PDF
Isolated React Js components
PDF
Angular 2 vs React
PDF
Angular 2 vs React. What to chose in 2017?
PDF
ReactJS or Angular
PDF
AngularJS + React
PDF
The WordPress Performance Team
Silverstripe CMS 4.9.0 release and beyound
React vs angular (mobile first battle)
Isolated React Js components
Angular 2 vs React
Angular 2 vs React. What to chose in 2017?
ReactJS or Angular
AngularJS + React
The WordPress Performance Team

What's hot (20)

PPTX
React in production (react global summit 2021)
PDF
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...
PPTX
Lagom framework
PDF
JHipster, modern web application development made easy
PPTX
React native - React(ive) Way To Build Native Mobile Apps
PDF
Tabtale story: Building a publishing and monitoring mobile games architecture...
PDF
Introduction to React Native
PDF
Node & Express as Workflow Tools
PDF
React vs angular
PDF
React.js - and how it changed our thinking about UI
PDF
VueJS Best Practices
PPTX
Reactjs workshop
PPTX
001. Introduction about React
PPTX
Gdg makurdi
PDF
React server side rendering performance
PPTX
Angular CLI : HelloWorld
PDF
Reactjs workshop (1)
PDF
React + Redux for Web Developers
PDF
WordPress as a Headless CMS - Bronson Quick
PPTX
React in production (react global summit 2021)
Server Side React for WordPress by Muhammad Muhsin @ The JavaScript for WordP...
Lagom framework
JHipster, modern web application development made easy
React native - React(ive) Way To Build Native Mobile Apps
Tabtale story: Building a publishing and monitoring mobile games architecture...
Introduction to React Native
Node & Express as Workflow Tools
React vs angular
React.js - and how it changed our thinking about UI
VueJS Best Practices
Reactjs workshop
001. Introduction about React
Gdg makurdi
React server side rendering performance
Angular CLI : HelloWorld
Reactjs workshop (1)
React + Redux for Web Developers
WordPress as a Headless CMS - Bronson Quick
Ad

Similar to Stripe con 2021 UI stack (20)

PPTX
Progressive Web Apps and React
PDF
"Crafting a Third-Party Banking Library with Web Components and React", Germa...
PDF
Integrating React.js Into a PHP Application: Dutch PHP 2019
PDF
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
PDF
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
PDF
Modern UI Development With Node.js
PDF
ReactJS - frontend web developing reactjs
PDF
Server side rendering with React and Symfony
PDF
Making sense of the front-end, for PHP developers
PDF
React in Action ( PDFDrive ).pdf
PPTX
React Django Presentation
PPTX
Isomorphic JavaScript – future of the web
PDF
Having Fun Building Web Applications (Day 1 Slides)
PDF
Intro to react_v2
PDF
Frontend as a first class citizen
PDF
Integrating React.js Into a PHP Application
KEY
Architecting single-page front-end apps
PDF
react hook and wesite making structure ppt
PDF
Exploring MERN Stack and Tech Stacks: A Comparative Analysis
PDF
Introduction to Functional Reactive Web with Clojurescript
Progressive Web Apps and React
"Crafting a Third-Party Banking Library with Web Components and React", Germa...
Integrating React.js Into a PHP Application: Dutch PHP 2019
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Modern UI Development With Node.js
ReactJS - frontend web developing reactjs
Server side rendering with React and Symfony
Making sense of the front-end, for PHP developers
React in Action ( PDFDrive ).pdf
React Django Presentation
Isomorphic JavaScript – future of the web
Having Fun Building Web Applications (Day 1 Slides)
Intro to react_v2
Frontend as a first class citizen
Integrating React.js Into a PHP Application
Architecting single-page front-end apps
react hook and wesite making structure ppt
Exploring MERN Stack and Tech Stacks: A Comparative Analysis
Introduction to Functional Reactive Web with Clojurescript
Ad

Recently uploaded (20)

PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Approach and Philosophy of On baking technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
A Presentation on Artificial Intelligence
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Mobile App Security Testing_ A Comprehensive Guide.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Approach and Philosophy of On baking technology
Dropbox Q2 2025 Financial Results & Investor Presentation
A Presentation on Artificial Intelligence
Understanding_Digital_Forensics_Presentation.pptx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
The AUB Centre for AI in Media Proposal.docx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Big Data Technologies - Introduction.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Building Integrated photovoltaic BIPV_UPV.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Electronic commerce courselecture one. Pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...

Stripe con 2021 UI stack

  • 2. Silverstripe CMS UI Stack Stripecon 2021
  • 3. About me Principal developer Silverstripe Ltd Core Committer on Silverstripe CMS project
  • 4. Overview ● A brief history of the Silverstripe CMS 4 UI ● Embracing the weirdness Disclaimer This is NOT a WebPack, React, Redux, GraphQL crash course.
  • 5. A brief history of the Silverstripe CMS 4 UI
  • 6. Let’s go back to March 2018 ...
  • 12. Silverstripe CMS UI was mismatch of legacy technologies ● JQuery ● Entwine ● SS templates ● undocumented REST API Speaking of kinks
  • 13. ● Webpack + Babel ● React ● Redux ● Redux/Forms ● GraphQL ● Bootstrap/Reactstrap ● SASS/CSS The shiny new thing
  • 14. Fast forward 3½ years ...
  • 15. ● Legacy stack is still around ● Our modern stack is dated Meet the new stack, same as the old stack
  • 16. Small wins ● Elemental Area ● CMS Page history
  • 17. ● New features trump refactoring old code ● Repeated some of the same mistake ● More urgent priorities came along What went wrong?
  • 18. ● Shock ● Denial ● Anger ● Bargaining ● Depression ● Testing ● Acceptance 7 stages of UI stack development grief
  • 19. ● Complete CMS UI refactor is not going to happen ● The Silverstripe CMS UI stack is weird Coming to terms with reality
  • 21. ● Shipping a front end client inside a modular PHP application ● Customising JS is hard Where the weirdness comes from
  • 22. The UI stack Modern Stack Legacy Stack Dependency Yarn Manually managed + yarn Build system Webpack+babel Rendering React JQuery/Entwine SS template State management Redux Nothing UI Library Bootstrap/Reactstrap Bootstrap + JQuery UI Data communication Apollo+fetch JQuery Data layer GraphQL+REST REST CI Jest / Enzyme Nothing
  • 23. silverstripe/admin ● LeftAndMain bits ● Core UI components ● Common helpers ● Shared libraries Every other module ● Feature specific components ● Feature specific libraries ● Relies on admin
  • 24. Sharing is caring The magical tale of @silverstripe/webpack-config and the expose-loader
  • 26. Sharing is caring Accessing resources with registered with the Injector
  • 28. ●  composer install --prefer-source  ● Remove packages first ● Do for silverstripe/admin as well ●  yarn install  ● On admin as well ●  yarn pattern-library  ● On admin only ●  yarn dev  ●  yarn watch  ●  yarn test  ●  yarn build  Cheat sheet
  • 29. What did we learn today?
  • 30. ● Don’t read the doc! ● Read Adrian’s blog post on how to create React Form Field ○ https://blog.jar.nz/posts/new-field-in-silverstripe ● Fork our module template ○ https://github.com/silverstripe/silverstripe-module ● Require maxime-rainville/recipe-react ○ https://github.com/maxime-rainville/recipe-react What’s next?