As the Apollo ecosystem evolves we find ourselves relying extensively on the underlying functionality it provides. The recent version 3 has highlighted this with the introduction of domain driven type policies and local state management. This enables engineers to consolidate business logic, centralise state and perform advanced data manipulation. However, we now enter dangerous territory where our apps are heavily dependent on external data and the Apollo library.

Writing tests is essential for any Apollo application that aims to be scalable, robust and allows its developers to sleep soundly at night. …

The best thing about software engineering is that we get to build things. Cool, cutting-edge and complex things! Whenever I see a shiny new technical task I want to get my hands dirty straight away. From the outset it usually looks like it will only take a couple hours. I wave goodbye to my product manager and without much of a plan dive right into the code base, confident and full of hope.

Days later I emerge tired, defeated and with a monolithic commit that my team members refuse to review.

This is a common story in software development. Underestimated…

This article will provide some practical tips that will help you design an intuitive, scalable and powerful GraphQL schema.

What is a GraphQL schema?

A schema is a structural representation of a product domain. It describes the key concepts of your product, the relations between these concepts and the core actions your system supports.

GraphQL is simply a tool that lets us interact with the schemas we define in an easy to use syntax. It does not enforce any standards around where the data comes from or the way we define our schema.

Because there are no enforced guidelines, good schema design is often forgotten…

The introduction of React Hooks has sought a more declarative style of programming and promoted the use of functional components.

However, as our applications scale, our code becomes harder to understand and maintain. Issues of duplicate code, out of sync data and incomprehensible tree structures quickly plague our nicely designed components.

By introducing programming patterns we can improve the architecture of our application and ensure that our components do not get bloated with irrelevant logic.


  1. What is a programming pattern?
  2. Why use programming patterns?
  3. Observer pattern with React Hooks.
  4. Provider pattern with React Hooks.
  5. Disclaimer!

What is a programming pattern?

A software design pattern is…

The introduction of GraphQL has enabled front-end engineers to craft powerful requests for data without needing to follow a strict back-end response. As Eric Bauer elegantly puts in ‘The Evolution of API design’— GraphQL allows us to ‘express the data as naturally as you can, then work backwards’, thus giving the consumer more control over the data they receive. In order to interpret and understand these unique and complex requests, GraphQL employs the use of an Abstract Syntax Tree (AST) to structure the incoming requests. …

Adam Hannigan

Team Lead at Assignar. Sydney, Australia. We’re hiring

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store