Harnessing the power of React in SilverStripe 4

Harnessing the power of React in SilverStripe 4

Presentation given at StripeCon EU 2018 - Enschede, Netherlands

B7dd5c76fea6c94c1eb6c755b70c4543?s=128

Robbie Averill

September 21, 2018
Tweet

Transcript

  1. React in SilverStripe 4 Harnessing its power 21st Sept 2018

    • Robbie Averill
  2. • Assets • Campaigns • History viewer • Archives •

    Small components e.g. TreeDropdownField Where it's used already
  3. • SilverStripe form schema • React 15 and Redux •

    GraphQL and Apollo • Reactstrap • SilverStripe's JavaScript Injector What you get
  4. • More of the CMS will be React driven •

    Slowly phasing out Entwine • A new paradigm for frontend SilverStripe CMS development Where it's heading
  5. • PHP, SilverStripe and entwine boilerplate • React components •

    GraphQL queries • Injector transformations Example: new history viewer component
  6. Injecting the component A PHP FormField with a SilverStripe template

  7. Injecting the component

  8. Injecting the component

  9. Don't forget to unmount! • Prevent React components from continually

    mounting into the document by unmounting it
  10. From here on out, it's all React!

  11. A "hello world" component example

  12. Register with Injector

  13. None
  14. Cool man… give me a list!

  15. None
  16. Obviously I wanted some data in the list

  17. Scaffolding a GraphQL query

  18. Test it with GraphiQL

  19. 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
  20. Inject the query into HistoryViewer

  21. Here's your list!

  22. 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
  23. None
  24. • 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
  25. Roadmap: progress since 4.0

  26. • Content blocks • Improved versioning features • React and

    GraphQL extensibility • Unified CMS search interface • Large UX focus Roadmap: progress since 4.0
  27. Content blocks

  28. React history viewer

  29. Archive area

  30. React and GraphQL extensibility

  31. Unified CMS search interface

  32. • 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
  33. None
  34. • 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...
  35. 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)
  36. • 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.
  37. • SilverStripe forums • GitHub issues • SilverStripe contributing guide

    • SilverStripe DSM • Get involved! How to contribute
  38. Thank you! Twitter: @robbieaverill Email: robbie@silverstripe.com 21st Sept 2018 •

    Robbie Averill