GraphQL vs REST API: Why We Chose GraphQL for FlatWP
WordPress offers both REST API and GraphQL for headless implementations. We deliberately chose GraphQL for FlatWP, and here’s why.
The Over-Fetching Problem
WordPress REST API returns everything about a post, whether you need it or not:
GET /wp-json/wp/v2/posts/123
You get the author object, meta fields, embedded media, comment stats, and dozens of other fields you’ll never use. This bloats response sizes and slows down your site.
GraphQL’s Precision
With GraphQL, you request exactly what you need:
query GetPost($id: ID!) {
post(id: $id) {
title
content
featuredImage {
url
alt
}
}
}
The response contains only those fields. Nothing more, nothing less.
TypeScript Integration
GraphQL’s typed schema enables automatic TypeScript generation. Our codegen process creates perfect types from your queries:
// Auto-generated from GraphQL schema
interface GetPostQuery {
post: {
title: string;
content: string;
featuredImage: {
url: string;
alt: string;
};
};
}
This is nearly impossible with REST API without manually maintaining types.
Nested Data in One Request
REST API requires multiple requests for nested data:
// Get post
GET /wp-json/wp/v2/posts/123
// Get author
GET /wp-json/wp/v2/users/5
// Get categories
GET /wp-json/wp/v2/categories?post=123
GraphQL fetches everything in one query:
query GetPost($id: ID!) {
post(id: $id) {
title
author {
name
avatar
}
categories {
name
slug
}
}
}
Better Performance
Fewer requests = faster page loads. We measured:
- REST API: 3 requests, 45KB total, 280ms
- GraphQL: 1 request, 12KB, 95ms
The WPGraphQL Plugin
WPGraphQL is mature, well-maintained, and has a huge ecosystem:
- WPGraphQL for ACF
- WPGraphQL for WooCommerce
- WPGraphQL for Yoast SEO
- WPGraphQL JWT Authentication
Popular plugins have GraphQL extensions, making integration seamless.
When to Use REST API
GraphQL isn’t always the answer. Use REST API when:
- You need file uploads (GraphQL doesn’t handle multipart well)
- Your WordPress host doesn’t support WPGraphQL
- You’re building a simple integration with minimal data needs
But for full-featured headless sites, GraphQL’s benefits are undeniable.
FlatWP Team
Related Posts
Building FlatWP – Our Headless WordPress Journey
After building dozens of headless WordPress sites, we created the production-ready starter kit we wished existed. Here's why FlatWP is different.
ISR Deep Dive: Making Headless WordPress Lightning Fast
ISR is the secret weapon for fast headless WordPress sites. Learn how FlatWP uses on-demand revalidation to keep content fresh without sacrificing speed.