Log in to GraphQL Editor
GraphQL Nexus has reached version 1.0
Tomek

Tomek Poniatowicz

1/4/2021

GraphQL Nexus has reached version 1.0

GraphQL Nexus is a library to build code-first GraphQL APIs that relies on Node.js and TypeScript. The code-first approach prioritizes the process of developing schema resolvers over the process of designing the schema. This approach puts resolvers in a leading position of a GraphQL project and making a schema shape dependent on resolvers (schema is implemented programmatically).

The key features provided by Nexus are:

  • Type-Safety - type-definitions are being generated as you proceed with the development process & inferred in your code, providing you with auto-completion and error catching,
  • Data-Agnostic - GraphQL Nexus is a declarative syntax layered on the top of the graphql-js means you can do with it all the same that you can accomplish with graphql-js or apollo-tools.

Having figured out all the types you need for your schema all you need to do is simply use makeSchema function to create the schema instance that would be used as the foundation for your GraphQL server.

What's new in version 1.0 of GraphQL Nexus

Besides the fresh package name nexus which implicates the new way of importing things (use nexus instead of @nexus/schema)

import { makeSchema } from 'nexus'

GraphQL Nexus 1.0 provides some important improvements and changes to the project among which we can find:

  • Changes to Nullability - in previous versions of GraphQL Nexuls fields were marked by default as non-nullable, but version 1.0 requires to mark non-nullable fields explicitly.

Redefined nullability in GraphQL Nexus 1.0

Source: prisma.io
  • Changes to the List API - Nexus 1.0 introduces a new function for working with list types. The list function can be applied to inputs and outputs similar to how the nonNull and nullable functions are. The same chaining API for creating lists still remains, but the list function exists to help for situations where chaining is not ideal. Changes to the List API in GraphQL Nexus 1.0
Source: prisma.io
  • Abstract Types - version 1.0 offers API for implementing three approaches to abstract types (unions & interfaces) known from the official graphql-js package:

    • Centralized Strategy (resolveType) - discriminating union member types in a centralized way,
    • Discriminant Model Field (DMF) Strategy (__typename) - discriminating union member types in a modular way.
    • Modular Strategy (isTypeOf) - discriminating union member types in a modular way. All along with the type safety.
  • Changes to Backing Types - in version 1.0 backing and root types are globally referred to as Source Types.

Along with this spotlight changes version 1.0 introduced some smaller ones, not directly connected to the project codebase, but not less important i.e. upgraded documentation, guides and new codesandbox examples (intro, subscriptions, next.js).

Check out our other blogposts

GraphQL documentation generator
Tomek Poniatowicz
Tomek Poniatowicz
GraphQL documentation generator
2 min read
almost 4 years ago
Canvas node graph in typescript
Artur Czemiel
Artur Czemiel
Canvas node graph in typescript
3 min read
over 5 years ago
GraphQL - schema-first vs code-first
Tomek Poniatowicz
Tomek Poniatowicz
GraphQL - schema-first vs code-first
6 min read
over 3 years ago

Ready for take-off?

Elevate your work with our editor that combines world-class visual graph, documentation and API console

Get Started with GraphQL Editor