Forem

Cover image for GraphQL Nexus has reached version 1.0
Tomek Poniatowicz for GraphQL Editor

Posted on • Originally published at blog.graphqleditor.com

4 3

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' 
Enter fullscreen mode Exit fullscreen mode

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).


Want to speed up your GraphQL schema development?

GraphQL Editor is a supportive tool for both advanced GraphQL users as well as those taking their first steps with GraphQL APIs. Our all-in-one development environment for GraphQL will help you build, manage & deploy your GraphQL API much faster. Try GraphQL Editor for free!

New features of GraphQL Editor gif

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay