Prioritise Content Over Components

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

For developers and designers, components are unique, flexible units to compose complete layouts. For content creators, they can trap reusable data into single-use decorations.

This talk has been presented at React Advanced 2024, check out the latest edition of this React Conference.

FAQ

The speaker is Simeon Griggs from sanity.io.

'Content as data' refers to modeling content based on its meaning and intent rather than its appearance, allowing for flexible presentation and a better content authoring experience.

Content-driven designs are more adaptable and longer-lasting, allowing for easier updates and changes without needing to rebuild the entire structure.

Early conversations about content structure ensure that the content's intent and meaning are clearly defined, leading to a more effective design that can be easily adapted and maintained.

Separating content from its presentation allows for flexibility in how content is displayed across different platforms and devices, ensuring consistency and relevance regardless of design changes.

A content-driven approach allows all team members, including designers, developers, content authors, and business stakeholders, to focus on the content's intent and structure, facilitating easier collaboration and understanding.

A common issue with current CMSs is that they often model content based on its appearance rather than its actual meaning, leading to challenges in adapting content to different designs and contexts.

The focus should be on understanding and structuring the content based on its meaning and intent, rather than rushing to design components, ensuring a more adaptable and sustainable website.

The talk focuses on prioritizing content over components in web development, emphasizing the importance of content-driven design rather than design-focused approaches.

Focusing on design rather than content can lead to rigid structures that do not adapt well to changes, making it difficult to maintain and update content effectively. It also creates a disconnect between developers and content authors.

Simeon Griggs
Simeon Griggs
11 min
28 Oct, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hi there. I want to talk about content editable websites and the importance of understanding the content model of a web page. Separating the content from its presentation is the key thought behind this talk. But if we're looking at the content itself, we're actually focusing on what those things are, not what they happen to be rendered into. The outcome of this talk is to break the cycle of content management systems being used to house data for what it looks like. Instead, we should focus on explicit curation versus content-driven experiences, moving away from explicitly curated experiences towards content-driven experiences. Let's put this into practice and build a website. Components aren't bad, but we need to think about the props that go into them. The problem arises when the content structure is modified to match the appearance instead of prioritizing the content itself. Let's correct these mistakes and prioritize the content over the components. Modeling the content structure instead of specific components allows for flexibility and a better content editing experience. Prioritizing content over components ensures a more relatable authoring experience and longer-lasting designs. Start thinking about content early and have conversations before diving into design and development.

1. Introduction

Short description:

Hi there. I want to talk about content editable websites and the importance of understanding the content model of a web page. Separating the content from its presentation is the key thought behind this talk.

Hi there. Thanks for checking out my talk, Prioritize Content over Components. My name is Simeon Griggs, and I'm from sanity.io, and I primarily want to talk today about content editable websites. And before we get into that, let's have a look at a brief history of editable content when it works on computers.

So here's a very early word processor, perhaps the first on Windows 3.11. Microsoft Word, you might've used this back in the day. We also have Pagemaker. This is one of the first desktop publishing tools on computers. I used Quark Express at my first job. That's how old I am. But desktop publishing has always been concerned with how content looks, not necessarily what it is. And we repeated this when we got onto web publishing as well.

So content editable websites originally using WordPress kind of look like this, and then WordPress evolved to look like this. And now it looks like this. And as it's evolved more and more, it's still been very focused on what the content looks like, not necessarily what the content is. So the CMS, Content Management System Backed Web, it's very concerned with how content looks.

Now, in the second section, I want to talk about when we look at a web page, we might want to ask the question, what's the content model of this page? And this is perhaps a question we're not used to asking ourselves, but it is a really important one too. So if I was building a web page just like this one, and you've probably built web pages just like this one, if I was asked once upon a time, what's the content model of this page? I'd say, what do you mean it's a page? And not really put much more thought into it. Or now we're in a component-driven era for design and web development. I'd probably say, well, it's a header and a hero and a content and a sidebar. But if we have a look at this particular web page again, and really look at what's the actual text on the page? What is its meaning? What is its intent? We can actually break this down. And the data is actually a person's name, is a presenter. We've got a label for text here. We've got a lesson title and a course title. We've got language data. The content model is actually made up of many small individual pieces that happen to be rendered on a web page. And separating the content from its presentation is really the key thought behind this talk here. So when we've got a design focus on what we're doing versus a content focus on what we're doing, our design focus language would be this is a lesson page template. This is a course web page template. This is a presenter web page template.

2. Content-Driven Experiences

Short description:

But if we're looking at the content itself, we're actually focusing on what those things are, not what they happen to be rendered into. The outcome of this talk is to break the cycle of content management systems being used to house data for what it looks like. Instead, we should focus on explicit curation versus content-driven experiences, moving away from explicitly curated experiences towards content-driven experiences. Let's put this into practice and build a website.

But if we're looking at the content itself, and that's what we're focused on, we're actually focusing on what those things are, not what they happen to be rendered into at this point in time. It's a lesson, it's a course, and it's a presenter. This is data we're dealing with, not just web pages in presentation or components in presentation. So tell me if this sounds familiar in your career at the moment.

Step one, you need to rebuild a website. What's step two often when it's a content backed website? It's you need to rebuild the CMS because the CMS was locally developed on the previous design only to match that design at that point in time. The content management system wasn't used to house data for what it is. It was used to house data for what it looks like. So let's break that cycle. That's the outcome of this talk today.

So in step three here, explicit curation versus content driven experiences. Again, perhaps some big words that need unpacking. So let's look at it. Here's a mock up for maybe what the next website is going to look like. If we apply an explicit curation lens, we might say this is the hero block because I made it so. I put the hero at the top of the page. I wrote things into it. That's what I want to be there. So that's what it is. And what if we have a web page which actually should be more dynamic? What if we want to customize what we see at any point in time because it's more relevant to the user? If I'm in a part of the world where it's currently summer, which I'm not, perhaps it would be best to put that in the hero. What if I was near a new location that's opening? It would be better if that were the hero. So that thought of having explicit curation, like putting the hero, what it is, because I put it there at this moment in time, it's actually detrimental to your users who might be more benefited by seeing the right content instead of your preferred design at this point in time.

A content-driven application says this is the hero because it's the most relevant. So that's at the top of the page because it's the best content for that user to see at that point in time. And we'll never get this 100% correct. But what I hope you take away from this today is we want to move away just as far as possible, just further to the right here on this diagram, away from explicitly curated experiences and towards content-driven experiences. And you're always going to get asked at the end of the day, but I want to add an auto-playing carousel and a video and add those things. And you're going to have to do those to some small amount, but whatever you can do in your web applications to make them content-driven instead of explicitly curated, like a fine piece of Lego that you've got to click every piece into place, as much as you can make that content-driven and dynamic, the better and longer live that application will be.

So let's put this into practice. Let's build a website.

3. Component Prioritization

Short description:

Components aren't bad, but we need to think about the props that go into them. The problem arises when the content structure is modified to match the appearance instead of prioritizing the content itself. Let's correct these mistakes and prioritize the content over the components.

Here's a website. You've probably built websites like this before. And perhaps your first intention as a designer or a developer is to break this into components. And components aren't bad, but we just need to think about the props that go into those components. So we might break this down as a hero, a banner, a call to action and a label. And these are reasonable. So then we build our code here, and here we have our layout and hero, banner, call to action and label.

And we build those TSX components and we put them in order and style them with classes. And then we need to inject them with some data. So here on the left-hand side, I've got my data and it matches those components. And here is actually where the problem begins, because I've got my hero and banner and call to action, but what's going to happen next? I've taken my data, I've put it into props. Those components render as it is on the right-hand side. And perhaps we take that data structure and put that into a content management system. And so it ends up something like this. And this is great. Your authors are able to modify the text as they need it to be. But what's the next thing that is absolutely going to happen? I guarantee it will happen the day after, maybe the day of launching this website, someone will ask for a change. Actually, the distance doesn't make any sense down there. Can we put it in the subtitle? And actually, can we move the subtitle then down into the image caption, and the date actually needs to be above the folds. We need to move that. And now, so we're sort of moving the props around and our content editable parts are no longer matching what the initial intention of those props were. And now everything works, and we're able to modify and make those changes to the front end as requested, but the data model now makes no sense compared to the front end. Now, you're editing this field called caption, and that happens to be editing the subtitle instead. This is not a good place to be, and the reason why we've got this problem, and so here's the solution, we made it work, but the reason why I've got this problem is because we've modified this, or we've set up this content structure rather, to model what it looked like instead of what all of this content was. So let's go and correct all these mistakes, because this is no way to live.

The problem was not the components. The problem was actually the content. We didn't prioritize the thinking there. If you race to build and design components, and leave the content as an afterthought, this is the sort of trap it's very easy to get yourself into. And it's not the content itself on the right hand side, but rather the structure of the content.

4. Content Modeling and Prioritization

Short description:

Modeling the content structure instead of specific components allows for flexibility and a better content editing experience. Prioritizing content over components ensures a more relatable authoring experience and longer-lasting designs. Start thinking about content early and have conversations before diving into design and development.

These keys are the problem. We shouldn't be modeling a hero or a banner or a call to action, because we don't actually know what any of those things mean without the values, but if instead we modeled an event, which is what we actually were looking at, and model the title and the subtitle, the distance of that event, then it doesn't actually matter where we put those things on the front end, and the content editing experience of it will always make sense, because I'm not editing a hero subtitle. I'm actually modifying the subtitle of the thing, and it doesn't matter where it's going to be rendered on the front end, because it's always going to be the subtitle of an event.

The major takeaway I'd like you to take from this talk today is that when we've got a hero title or an event title, these are the two data structures that we could have. On the left-hand side, that's our presentation as data. We've modeled what this thing looks like in this component, in this design, at this point in time. The content's unknown. A hero title could be literally any piece of text, and we don't know. The display is rigid. If you're not rendering the hero.title data structure into the hero title, you've got a complete disconnect between your developers and your authors, and the meaning is implied, but it's not explicit.

If instead, on the right-hand side, we're thinking about content for what it is, instead of what it looks like, this is called content as data. The presentation is unbounded. We can render the event title in the h1. We could also render it in a sidebar, where it makes sense, and it doesn't actually matter, because it's always going to be the event title. The display is flexible. The meaning is explicit, and so that content authoring experience is much more relatable for content authors, and the front end can still be rendered as you need it to be.

In summary, consider what something is, not what it looks like. Treat your website as just one outlet for your content. Content-driven designs are so much longer lasting than curated designs. The only way to approach this is to think about it very early. Have conversations before the first pixel is pushed, before the first line of code is written. This talk is mostly based off of a blog post I wrote a short time ago called Prioritize Content Over Components if you'd like to read more about that.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Apache Kafka Simply Explained With TypeScript Examples
JSNation 2023JSNation 2023
27 min
Apache Kafka Simply Explained With TypeScript Examples
Top Content
Apache Kafka is a distributed, scalable, and high-throughput event streaming platform that plays a key role in event-driven architecture. It allows for the division of monolithic applications into independent microservices for scalability and maintainability. Producers and consumers are the key components in Kafka, allowing for a decoupled system. Kafka's replication and persistent storage capabilities set it apart from alternatives like Redis and RabbitMQ. Kafka provides easy access to real-time data and simplifies real-time data handling.
Safely Handling Dynamic Data with TypeScript
Node Congress 2021Node Congress 2021
29 min
Safely Handling Dynamic Data with TypeScript
Top Content
This Talk discusses the safe handling of dynamic data with TypeScript using JSON Schema and TypeBox. Fastify, a web framework, allows developers to validate incoming data using JSON schema, providing type safety and error handling. TypeBox is a powerful library that allows developers to define JSON schemas and derive static types in TypeScript. The combination of JSON schema, TypeBox, and Fastify provides powerful tools for type safety and validation of dynamic data.
The Art of Functional Programming
React Summit 2022React Summit 2022
26 min
The Art of Functional Programming
Functional programming is a beautiful paradigm that allows us to understand programs and how entities behave and interact. It has nice characteristics like predictability, which makes testing and debugging easier. We explore how functional programming handles side effects and generative art. We learn about drawing patterns and grids with recursive functions, handling state in functional programming, and creating fashion using functional programming techniques. We also discuss handling randomness in functional programming and how to introduce organic variation and randomness to art while maintaining predictability.
Content Modeling for React Developers
React Summit 2022React Summit 2022
7 min
Content Modeling for React Developers
Haushal, a Developer Advocate at Contentful, discusses content modeling and its importance in providing a great user experience. He uses his Cookbook web app as an example to explain how he structures and organizes content. The overall content model emphasizes reusability and considerations for content governance and platform selection. Content modeling is an iterative process, and Haushal provides resources for further learning and development.
How Realm by MongoDB is Testing Native Modules “on device”
React Summit US 2023React Summit US 2023
11 min
How Realm by MongoDB is Testing Native Modules “on device”
Watch video: How Realm by MongoDB is Testing Native Modules “on device”
The speaker works on the Atlas Device SDKs, which allows testing code across multiple platforms and has support for multiple programming languages. They also built Mocha Remote CLI, a tool for running tests on Node.js and in a browser. The speaker mentions the popularity of Jest and the alternative Vitest for running tests on platforms like Android and iOS.
Mastering Web Scraping with Scrapoxy: Unleash Your Data Extraction Wizardry!
Node Congress 2024Node Congress 2024
21 min
Mastering Web Scraping with Scrapoxy: Unleash Your Data Extraction Wizardry!
Fabien Vauchel is a software developer passionate about web scraping and the creator of Scrapoxy, a proxy aggregator. Isabella, a student, used web scraping to gather data for her trip tool. The talk discusses various techniques for web scraping, including using language models and proxies to bypass website protections. The speaker also introduces ScrapOxy, a super proxy aggregator, and explains how to integrate it into web scraping projects. The use of Playwright, a headless browser, is highlighted for handling fingerprint errors. Ultimately, the talk emphasizes the importance of adjusting time zones to successfully complete web scraping requests.

Workshops on related topic

Build a powerful DataGrid in few hours with Ag Grid
React Summit US 2023React Summit US 2023
96 min
Build a powerful DataGrid in few hours with Ag Grid
Top Content
WorkshopFree
Mike Ryan
Mike Ryan
Does your React app need to efficiently display lots (and lots) of data in a grid? Do your users want to be able to search, sort, filter, and edit data? AG Grid is the best JavaScript grid in the world and is packed with features, highly performant, and extensible. In this workshop, you’ll learn how to get started with AG Grid, how we can enable sorting and filtering of data in the grid, cell rendering, and more. You will walk away from this free 3-hour workshop equipped with the knowledge for implementing AG Grid into your React application.
We all know that rolling our own grid solution is not easy, and let's be honest, is not something that we should be working on. We are focused on building a product and driving forward innovation. In this workshop, you'll see just how easy it is to get started with AG Grid.
Prerequisites: Basic React and JavaScript
Workshop level: Beginner
Build a Powerful Datagrid With AG Grid
React Summit 2024React Summit 2024
168 min
Build a Powerful Datagrid With AG Grid
Top Content
WorkshopFree
Brian Love
Brian Love
Does your React app need to efficiently display lots (and lots) of data in a grid? Do your users want to be able to search, sort, filter, and edit data? AG Grid is the best JavaScript grid in the world and is packed with features, highly performant, and extensible. In this workshop, you’ll learn how to get started with AG Grid, how we can enable sorting and filtering of data in the grid, cell rendering, and more. You will walk away from this free 3-hour workshop equipped with the knowledge for implementing AG Grid into your React application.
Get started with AG Grid Angular Data Grid
JSNation 2022JSNation 2022
116 min
Get started with AG Grid Angular Data Grid
Workshop
Stephen Cooper
Stephen Cooper
Get started with AG Grid Angular Data Grid with a hands-on tutorial from the core team that will take you through the steps of creating your first grid, including how to configure the grid with simple properties and custom components. AG Grid community edition is completely free to use in commercial applications, so you’ll learn a powerful tool that you can immediately add to your projects. You’ll also discover how to load data into the grid and different ways to add custom rendering to the grid. By the end of the workshop, you will have created and customized an AG Grid Angular Data Grid.
Contents:- getting started and installing AG Grid- configuring sorting, filtering, pagination- loading data into the grid- the grid API- add your own components to the Grid for rendering and editing- capabilities of the free community edition of AG Grid
Live Coding Workshop to Setup Rollbar Error Monitoring
TypeScript Congress 2023TypeScript Congress 2023
48 min
Live Coding Workshop to Setup Rollbar Error Monitoring
WorkshopFree
Nico Krüger
Nico Krüger
During this session you will learn how to create a new Rollbar account and integrate the Rollbar SDK with your application to monitor errors in real-time and respond and fix those errors. We will also cover how to customize payload data sent to Rollbar to extend your monitoring capabilities.

Agenda:- Create a Rollbar Account (Free Account)- Integrate your application with the Rollbar SDK- Send handled and unhandled errors to Rollbar- Add Custom payload data to your configuration.
Building a Serverless GraphQL API For Any Datasource With StepZen
GraphQL Galaxy 2021GraphQL Galaxy 2021
75 min
Building a Serverless GraphQL API For Any Datasource With StepZen
Workshop
Roy Derks
Roy Derks
Want to get started with building a GraphQL server but have no idea where to begin? Every (frontend) developer asks for a GraphQL API but often lacks the backend knowledge to create a performant one. There are many different flavours in creating the perfect GraphQL server, ranging from schema-first to code-first or even auto-generated solutions.

In this interactive workshop, you will learn about building a serverless GraphQL API using StepZen. With StepZen, you can create a GraphQL for any data source (SQL, NoSQL & REST) and even other GraphQL APIs within minutes. And even handle more complicated use cases such as authentication and deployment. Using little code, you'll get to combine different data sources in one fully performant API that you can use in your applications from day one.

Table of contents:
- What is StepZen?
- Connecting to a data source (SQL, NoSQL & REST)
- Using custom directives
- Handle sequence flows
- Deployment
Painting with Data: Intro to d3.js
JSNation Live 2021JSNation Live 2021
130 min
Painting with Data: Intro to d3.js
Workshop
Ian Johnson
Ian Johnson
D3.js is a powerful JavaScript library for building data visualizations, but anyone who has tried to use it quickly finds out that it goes deeper picking your favorite chart type. This workshop is designed to give you a hands-on introduction to the essential concepts and techniques for creating custom data visualizations with d3.js. By the end of this workshop you will have made an interactive and animated visualization on a realistic dataset that you can easily swap out with your own.