Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Harnessing the power of React in SilverStripe 4
Search
Robbie Averill
September 21, 2018
Programming
0
280
Harnessing the power of React in SilverStripe 4
Presentation given at StripeCon EU 2018 - Enschede, Netherlands
Robbie Averill
September 21, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
[FEConf 2025] 모노레포 절망편, 14개 레포로 부활하기까지 걸린 1년
mmmaxkim
0
1.1k
CSC305 Summer Lecture 12
javiergs
PRO
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
LLMOpsのパフォーマンスを支える技術と現場で実践した改善
po3rin
8
980
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
110
SOCI Index Manifest v2が出たので調べてみた / Introduction to SOCI Index Manifest v2
tkikuc
1
110
私の後悔をAWS DMSで解決した話
hiramax
4
140
兎に角、コードレビュー
mitohato14
0
150
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
200
Portapad紹介プレゼンテーション
gotoumakakeru
1
130
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
2
270
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Automating Front-end Workflow
addyosmani
1370
200k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
480
Docker and Python
trallard
45
3.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
A better future with KSS
kneath
239
17k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Transcript
React in SilverStripe 4 Harnessing its power 21st Sept 2018
• Robbie Averill
• Assets • Campaigns • History viewer • Archives •
Small components e.g. TreeDropdownField Where it's used already
• SilverStripe form schema • React 15 and Redux •
GraphQL and Apollo • Reactstrap • SilverStripe's JavaScript Injector What you get
• More of the CMS will be React driven •
Slowly phasing out Entwine • A new paradigm for frontend SilverStripe CMS development Where it's heading
• PHP, SilverStripe and entwine boilerplate • React components •
GraphQL queries • Injector transformations Example: new history viewer component
Injecting the component A PHP FormField with a SilverStripe template
Injecting the component
Injecting the component
Don't forget to unmount! • Prevent React components from continually
mounting into the document by unmounting it
From here on out, it's all React!
A "hello world" component example
Register with Injector
None
Cool man… give me a list!
None
Obviously I wanted some data in the list
Scaffolding a GraphQL query
Test it with GraphiQL
Make query a Higher Order Component • Use the "graphql"
HOC (Higher-Order-Component) from the react-apollo package • cms/client/src/state/history/readOnePageQuery.js
Inject the query into HistoryViewer
Here's your list!
Use the React and Redux dev tools • React dev
tools let you inspect component structures and props • Redux dev tools let you inspect the current state and how reducers change it over time
None
• Base module provides abstract components • It's up to
implementations to define the data queries • Use injector to hook it up • Implemented in the CMS and Elemental modules History Viewer: summary
Roadmap: progress since 4.0
• Content blocks • Improved versioning features • React and
GraphQL extensibility • Unified CMS search interface • Large UX focus Roadmap: progress since 4.0
Content blocks
React history viewer
Archive area
React and GraphQL extensibility
Unified CMS search interface
• SilverStripe 3 supported until Dec 2020 • SilverStripe 4
nears its first anniversary (Nov 2018) • New features built as opt-in SilverStripe 4 modules • More clarity on release expectations Release Management
None
• Mainstream use of APIs to decouple CMS • Focus
on managing digital experiences • Deeper integrations with other SaaS tools Analytics, targeting, campaigns, marketing automation, search, etc • Modernise CMS UI through React+GraphQL • New features into minor 4.x releases Coming up in 2019...
Q 4 ’ 1 8 Q 1 ’ 1 9
Q 2 ’ 1 9 Q 3 ’ 1 9 Near Future ✓ ISOLATED BUILDS SilverStripe Technology Roadmap API FOUNDATIONS INTEGRATION OF DIGITAL EXPERIENCE SYSTEMS DECOUPLED CONTENT MANAGEMENT SYNDICATED CONTENT PLATFORM AUTOMATION & SCALABILITY ✓ POPULARISE DECOUPLED USE CASE ✶ SILVERSTRIPE CONTENT API ✶ AUTHENTICATED APIS ✶ IDENTITY MANAGEMENT ✶ API INFRASTRUCTURE ✶ CONTENT SHARING ✓ UPGRADE PLATFORMS TO PHP 7 ✶ SURFACE EXISTING USAGE ✶ ANALYTICS MODERNISE CMS UI TECHNOLOGIES SILVERSTRIPE 6 ✓ CONVERT SECONDARY UIs TO REACT ✶ BLOCKS ECOSYSTEM ✓ REACT GRIDFIELD ✓ BLOCKS EDITOR ✓ PATTERN LIBRARY ✶ CONVERT PRIMARY UIs TO REACT ✓ STABILISE GRAPHQL ✶ MULTI CHANNEL Logging and metrics on SSP and CWP ✶ CWP CANDIDATES ON AWS ✶ EXPERIMENTATION AND TARGETING ✶ PERSONALISATION ✶ MARKETING AUTOMATION ✶ LOGGING EVALUATION SILVERSTRIPE 5 ✶ PERFORMANCE ✶ MAXIMISE REUSE ✶ METRICS EVALUATION ✶ AUTOMATED SSL CERT. ON SSP (LET'S ENCRYPT)
• 20-25 contributors/month • 500 commits/month • 63,936 total commits
• Over 11 years (on GitHub) • 583 total contributors • 828,462 lines of code • 879 open, 4,511 closed issues • 69 open, 9,465 closed PRs Contributions * Graph: OpenHub. Stats: GitHub.
• SilverStripe forums • GitHub issues • SilverStripe contributing guide
• SilverStripe DSM • Get involved! How to contribute
Thank you! Twitter: @robbieaverill Email:
[email protected]
21st Sept 2018 •
Robbie Averill