Skip to Content

Houdini or: How I Learned to Stop Worrying and Love GraphQL exploding-head

It’s finally here: a fully-featured GraphQL framework that actually saves you time

Houdini is a web application framework built from the ground up for GraphQL. It unifies your GraphQL client and application router so you can stop worrying about waterfalls, code-splitting, and so much more. Fully automatic and totally customizable. Declarative, Composable, Typesafe. First-class support for Fragments, Subscriptions, Pagination, List Mutations, Optimistic Responses. You didn’t know you needed this.

+page.gql
src > routes > items > +page.gql
1
2
3
4
5
query AllItems {
  items {
    text
  }
}
+page.jsx
src > routes > items > +page.jsx
1
2
3
4
5
6
7
8
9
export default function({ AllItems }) {
    return (
      <>
        {AllItems.items.map(item => (
          <div>{item.text}</div>
        ))}
      </>
    )
  }

Streaming SSR, automatic code-splitting, and so much more 🚀

Used in Production By

Logo Schneider-Electric Logo hussle Logo Punchup Logo Dynamic-Process

GraphQL, simplified

GraphQL makes a lot of promises but the other clients expect you to go though a silly amount of ceremony to see the benefits. By unifying your GraphQL client and application router, Houdini removes as much of the complexity as possible without compromising on features.

Declarative

Updates to your application cache are made with a set of declarative fragments that avoid the surgical logic necessary to keep your application up to date.

Great for Simple Cases, Amazing for Complex Ones

Whether you are a seasoned GraphQL developer or just starting out on your journey, Houdini will feel like a superpower. It leverages battle-tested patterns like fragment composition and connection-based pagination to deliver a developer experience you might not have known was even possible.

100% Typesafe

Houdini generates types for every document in your application. If you are a TypeScript person, you won't have to juggle any generic parameters or mess with complicated paths. If you prefer JSDocs, eveything just works.