SlideShare a Scribd company logo
Why UI developers love
GraphQL
Coursera, 9.20.16
A special place in the stack
Right between frontend and backend devs
Backend devs implement the API
GraphQL is an API technology, so it must make sense to backend people:
- Describe data with strong types
- Potential for more efficient responses because of explicit fields
- Easy to refactor backend to microservices
What do you get as a frontend dev?
Speed up your UI development workflow
GraphQL enables next-generation
tools that let you think less about
data fetching.
Think about what data you need,
and it’s there.
How do you query a GraphQL API?
// REST
fetch(`api.server.com/posts/1`).then(...)
// GraphQL - no special tools needed!
fetch(`api.server.com/graphql?
query={ post(id: 1) { title, content } }`).then(...)
Benefits over REST, without special client tools
- Know exactly which fields we are going to get
- Documentation and data exploration built in (something you usually only
get with BaaS!)
- Nested data fetching is trivial
Basic tooling
Realizing the query is more than just a string.
Getting at the query structure
- Tag the query to designate that it’s GraphQL
- Use a simple regex or AST traversal to find
all of the queries
- Alternative: put in .graphql files
Now the GraphQL query is far more than a “magic
string” -- it’s a semantic unit of data fetching
const query = gql`
query HumanQuery {
human(id: "1000") {
name
height(unit: FOOT)
}
}
`;
Static query validation and analysis
Without running the UI:
- Typos in fields
- Wrong arguments
- Deprecated fields
- Identify field usage
apollostack/eslint-plugin-graphql
In-editor autocomplete
- Today: in IntelliJ
- Tomorrow: everywhere
with the upcoming
GraphQL language
service
jimkyndemeyer/js-graphql-intellij-plugin
It’s super easy to build new tools
GraphQL.js: Facebook’s GraphQL tools platform, includes parsing, validation,
traversal, etc: graphql/graphql-js
GraphQL AST: Super nice to work with, matches up with the spec 1:1, you can
use AST explorer: astexplorer.net
Introspection: Every GraphQL server is required to provide info in a standard
format that works with all tools: graphql.org/learn/introspection/
Caching clients
Using the query structure on the client at runtime.
Relay
How might we cache REST?
1. Use URL as cache key
fetchOrLoadFromCache(`/posts/1`)
2. Write custom normalizer for Redux: decompose responses into objects, store
them in separate fields. Might need to handle different endpoints manually,
depending on your API design.
Caching GraphQL: Easier or harder?
Using URLs or queries isn’t great:
fetchOrLoadFromCache(`/graphql?query={...}`)
But we gain much more potential: A fancy query structure that tells us exactly what
fields we’re looking for.
Example: Overlapping queries
query bigQuery {
post(id: 1) {
title, content
author { name, age }
}
}
query smallQuery {
post(id: 1) {
title, content
}
}
Easy to prefetch data and get subsets of previous queries.
Formalize as paths
What’s the atom of GraphQL data? A leaf field.
post(id: 1) -> title // bigQuery, smallQuery
post(id: 1) -> content // bigQuery, smallQuery
post(id: 1) -> author -> name // bigQuery
post(id: 1) -> author -> age // bigQuery
Lets us easily reason about the data we have fetched, replaces the URLs from
REST. This is how Apollo Client works out of the box.
Cache consistency
query Sidebar {
postFeed {
title
}
}
query Post {
post(id: 1) {
title
content
}
}
How do we make the title field for the post refer to
one location in the cache?
Cache consistency
postFeed[0] -> title -> 'Original title'
post(id: 1) -> title -> 'New title'
How do we make the title field for the post refer to
one location in the cache?
Defining cache IDs for the client
Could be server-side like Relay or client-side like Apollo
(obj) => obj.__typename + ':' + obj.id
Paths with IDs
Now we can easily keep our cache consistent!
postFeed[0] -> (id: 1)
post(id: 1) -> (id: 1)
(id: 1) -> title -> 'New title'
Data flow
Now that we have a cache, let’s use it!
Updating the store updates the UI
Smart clients execute the queries when the store changes,
keeping your UI consistent
query Sidebar {
postFeed {
title
}
}
Full data loading path
Smart clients execute the queries when the store changes,
keeping your UI consistent
query Sidebar {
postFeed {
title
}
}
Fetcher
query Sidebar {
postFeed {
title
}
}
Normalizer
Updates can come from anywhere
It’s like automated Flux, which takes advantage of the
GraphQL query structure
query Sidebar {
postFeed {
title
}
}
Other
queries
Mutation
results
Subscription
results
Redux
actions
More tools
Today:
- Static code generation and native clients: apollo-ios
- Pub/sub GraphQL subscriptions: graphql-subscriptions
Tomorrow:
- Client-side data
- Cache expiration
- Building your own bespoke clients
Let’s build the future together!

More Related Content

PDF
GraphQL across the stack: How everything fits together
PDF
Adding GraphQL to your existing architecture
PDF
The Apollo and GraphQL Stack
PDF
GraphQL: Enabling a new generation of API developer tools
PDF
Modular GraphQL with Schema Stitching
PDF
GraphQL: The Missing Link Between Frontend and Backend Devs
PDF
GraphQL over REST at Reactathon 2018
PDF
Meteor MIT Tech Talk 9/18/14: Designing a New Platform For Modern Apps
GraphQL across the stack: How everything fits together
Adding GraphQL to your existing architecture
The Apollo and GraphQL Stack
GraphQL: Enabling a new generation of API developer tools
Modular GraphQL with Schema Stitching
GraphQL: The Missing Link Between Frontend and Backend Devs
GraphQL over REST at Reactathon 2018
Meteor MIT Tech Talk 9/18/14: Designing a New Platform For Modern Apps

What's hot (20)

PDF
GraphQL
PPTX
Taking Control of your Data with GraphQL
PDF
GraphQL + relay
PPT
Graphql presentation
PDF
Performance optimisation with GraphQL
PPTX
Into to GraphQL
PDF
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
PDF
Better APIs with GraphQL
PPTX
An intro to GraphQL
PPTX
GraphQL Introduction
PDF
London React August - GraphQL at The Financial Times - Viktor Charypar
PPTX
Introduction to GraphQL
PDF
Intro to GraphQL
PDF
GraphQL & Relay
PDF
PDF
Introduction to GraphQL at API days
PDF
Graphql
PDF
GraphQL in an Age of REST
PDF
Serverless GraphQL for Product Developers
PDF
React and GraphQL at Stripe
GraphQL
Taking Control of your Data with GraphQL
GraphQL + relay
Graphql presentation
Performance optimisation with GraphQL
Into to GraphQL
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Better APIs with GraphQL
An intro to GraphQL
GraphQL Introduction
London React August - GraphQL at The Financial Times - Viktor Charypar
Introduction to GraphQL
Intro to GraphQL
GraphQL & Relay
Introduction to GraphQL at API days
Graphql
GraphQL in an Age of REST
Serverless GraphQL for Product Developers
React and GraphQL at Stripe
Ad

Similar to Why UI developers love GraphQL (20)

PDF
Graphql usage
PDF
Tutorial: Building a GraphQL API in PHP
PPTX
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
PDF
Implementing OpenAPI and GraphQL services with gRPC
PDF
iOS Swift application architecture
PDF
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
PDF
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
PPTX
Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655
PDF
How easy (or hard) it is to monitor your graph ql service performance
PDF
Back-end (Flask_AWS)
PDF
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
PPTX
Scala Italy 2015 - Hands On ScalaJS
PPTX
Alberto Paro - Hands on Scala.js
PDF
PyconZA19-Distributed-workloads-challenges-with-PySpark-and-Airflow
PDF
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
PDF
GraphQL the holy contract between client and server
PDF
Modern APIs with GraphQL
PDF
Composable Parallel Processing in Apache Spark and Weld
PDF
API workshop by AWS and 3scale
PDF
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
Graphql usage
Tutorial: Building a GraphQL API in PHP
apidays LIVE Australia 2020 - Have your cake and eat it too: GraphQL? REST? W...
Implementing OpenAPI and GraphQL services with gRPC
iOS Swift application architecture
Your API on Steroids - Retrofitting GraphQL by Code, Cloud Native or Serverless
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655
How easy (or hard) it is to monitor your graph ql service performance
Back-end (Flask_AWS)
Sashko Stubailo - The GraphQL and Apollo Stack: connecting everything together
Scala Italy 2015 - Hands On ScalaJS
Alberto Paro - Hands on Scala.js
PyconZA19-Distributed-workloads-challenges-with-PySpark-and-Airflow
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
GraphQL the holy contract between client and server
Modern APIs with GraphQL
Composable Parallel Processing in Apache Spark and Weld
API workshop by AWS and 3scale
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
Ad

Recently uploaded (20)

PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
top salesforce developer skills in 2025.pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
AI in Product Development-omnex systems
PDF
medical staffing services at VALiNTRY
PPTX
ISO 45001 Occupational Health and Safety Management System
PPTX
ai tools demonstartion for schools and inter college
PPTX
L1 - Introduction to python Backend.pptx
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
Introduction to Artificial Intelligence
PDF
Nekopoi APK 2025 free lastest update
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
System and Network Administration Chapter 2
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Internet Downloader Manager (IDM) Crack 6.42 Build 41
top salesforce developer skills in 2025.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
AI in Product Development-omnex systems
medical staffing services at VALiNTRY
ISO 45001 Occupational Health and Safety Management System
ai tools demonstartion for schools and inter college
L1 - Introduction to python Backend.pptx
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Design an Analysis of Algorithms II-SECS-1021-03
VVF-Customer-Presentation2025-Ver1.9.pptx
Introduction to Artificial Intelligence
Nekopoi APK 2025 free lastest update
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
System and Network Administration Chapter 2
Odoo POS Development Services by CandidRoot Solutions
Upgrade and Innovation Strategies for SAP ERP Customers
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Operating system designcfffgfgggggggvggggggggg
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025

Why UI developers love GraphQL

  • 1. Why UI developers love GraphQL Coursera, 9.20.16
  • 2. A special place in the stack Right between frontend and backend devs
  • 3. Backend devs implement the API GraphQL is an API technology, so it must make sense to backend people: - Describe data with strong types - Potential for more efficient responses because of explicit fields - Easy to refactor backend to microservices What do you get as a frontend dev?
  • 4. Speed up your UI development workflow GraphQL enables next-generation tools that let you think less about data fetching. Think about what data you need, and it’s there.
  • 5. How do you query a GraphQL API? // REST fetch(`api.server.com/posts/1`).then(...) // GraphQL - no special tools needed! fetch(`api.server.com/graphql? query={ post(id: 1) { title, content } }`).then(...)
  • 6. Benefits over REST, without special client tools - Know exactly which fields we are going to get - Documentation and data exploration built in (something you usually only get with BaaS!) - Nested data fetching is trivial
  • 7. Basic tooling Realizing the query is more than just a string.
  • 8. Getting at the query structure - Tag the query to designate that it’s GraphQL - Use a simple regex or AST traversal to find all of the queries - Alternative: put in .graphql files Now the GraphQL query is far more than a “magic string” -- it’s a semantic unit of data fetching const query = gql` query HumanQuery { human(id: "1000") { name height(unit: FOOT) } } `;
  • 9. Static query validation and analysis Without running the UI: - Typos in fields - Wrong arguments - Deprecated fields - Identify field usage apollostack/eslint-plugin-graphql
  • 10. In-editor autocomplete - Today: in IntelliJ - Tomorrow: everywhere with the upcoming GraphQL language service jimkyndemeyer/js-graphql-intellij-plugin
  • 11. It’s super easy to build new tools GraphQL.js: Facebook’s GraphQL tools platform, includes parsing, validation, traversal, etc: graphql/graphql-js GraphQL AST: Super nice to work with, matches up with the spec 1:1, you can use AST explorer: astexplorer.net Introspection: Every GraphQL server is required to provide info in a standard format that works with all tools: graphql.org/learn/introspection/
  • 12. Caching clients Using the query structure on the client at runtime. Relay
  • 13. How might we cache REST? 1. Use URL as cache key fetchOrLoadFromCache(`/posts/1`) 2. Write custom normalizer for Redux: decompose responses into objects, store them in separate fields. Might need to handle different endpoints manually, depending on your API design.
  • 14. Caching GraphQL: Easier or harder? Using URLs or queries isn’t great: fetchOrLoadFromCache(`/graphql?query={...}`) But we gain much more potential: A fancy query structure that tells us exactly what fields we’re looking for.
  • 15. Example: Overlapping queries query bigQuery { post(id: 1) { title, content author { name, age } } } query smallQuery { post(id: 1) { title, content } } Easy to prefetch data and get subsets of previous queries.
  • 16. Formalize as paths What’s the atom of GraphQL data? A leaf field. post(id: 1) -> title // bigQuery, smallQuery post(id: 1) -> content // bigQuery, smallQuery post(id: 1) -> author -> name // bigQuery post(id: 1) -> author -> age // bigQuery Lets us easily reason about the data we have fetched, replaces the URLs from REST. This is how Apollo Client works out of the box.
  • 17. Cache consistency query Sidebar { postFeed { title } } query Post { post(id: 1) { title content } } How do we make the title field for the post refer to one location in the cache?
  • 18. Cache consistency postFeed[0] -> title -> 'Original title' post(id: 1) -> title -> 'New title' How do we make the title field for the post refer to one location in the cache?
  • 19. Defining cache IDs for the client Could be server-side like Relay or client-side like Apollo (obj) => obj.__typename + ':' + obj.id
  • 20. Paths with IDs Now we can easily keep our cache consistent! postFeed[0] -> (id: 1) post(id: 1) -> (id: 1) (id: 1) -> title -> 'New title'
  • 21. Data flow Now that we have a cache, let’s use it!
  • 22. Updating the store updates the UI Smart clients execute the queries when the store changes, keeping your UI consistent query Sidebar { postFeed { title } }
  • 23. Full data loading path Smart clients execute the queries when the store changes, keeping your UI consistent query Sidebar { postFeed { title } } Fetcher query Sidebar { postFeed { title } } Normalizer
  • 24. Updates can come from anywhere It’s like automated Flux, which takes advantage of the GraphQL query structure query Sidebar { postFeed { title } } Other queries Mutation results Subscription results Redux actions
  • 25. More tools Today: - Static code generation and native clients: apollo-ios - Pub/sub GraphQL subscriptions: graphql-subscriptions Tomorrow: - Client-side data - Cache expiration - Building your own bespoke clients Let’s build the future together!