NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1573 most downloaded on PyPI
A library for creating GraphQL APIs
Last release today
04 Oct 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
1125 releases · first in 2019
Fix execution of async resolvers.
Fix execution of async resolvers.
Typo fix - changed the spelling from ‘follwing’ to ‘following’.
Typo fix - changed the spelling from ‘follwing’ to ‘following’.
Updated docs to provide reference on how to use Django view.
Updated docs to provide reference on how to use Django view.
One column per quarter.
Removed custom representation for Strawberry types, this should make using types much nicer.
Removed custom representation for Strawberry types, this should make using types much nicer.
Switched from graphql-core-next dependency to graphql-core@^3.0.0a0 .
Switched from graphql-core-next dependency to graphql-core@^3.0.0a0 .
Fixes MYPY plugin
Fixes MYPY plugin
Add the flake8-bugbear linting plugin to catch likely bugs
Add the flake8-bugbear linting plugin to catch likely bugs
Fixed conversion of enum when value was falsy.
Fixed conversion of enum when value was falsy.
Fixed issue when trying to convert optional arguments to a type
Fixed issue when trying to convert optional arguments to a type
Fix issue with converting arguments with optional fields.
Fix issue with converting arguments with optional fields.
Thanks to @sciyoshi for the fix!
Added a Django view that allows you to query the schema and interact with it via GraphiQL
Added a Django view that allows you to query the schema and interact with it via GraphiQL
Usage:
settings.py
INSTALLED_APPS = [
...,
"strawberry.django" ,
]
from strawberry.django.views import GraphQLView
from your_project.schema import schema
urlpatterns = [
path( "graphql/" , GraphQLView.as_view( schema =schema)),
]
This release doesn’t add any feature or fixes, but it fixes an issue with checking for release files when submitting PRs ✨.
This release doesn’t add any feature or fixes, but it fixes an issue with checking for release files when submitting PRs ✨.
Fixes the conversion of Enums in resolvers, arguments and input types.
Fixes the conversion of Enums in resolvers, arguments and input types.
Add a mypy plugin that enables typechecking Strawberry types
Add a mypy plugin that enables typechecking Strawberry types
Fix List types being converted to Optional GraphQL lists.
Fix List types being converted to Optional GraphQL lists.
This release doesn’t add any feature or fixes, it only introduces a GitHub Action to let people know how to add a RELEASE.md file when submitting a PR
This release doesn’t add any feature or fixes, it only introduces a GitHub Action to let people know how to add a RELEASE.md file when submitting a PR.
Added support for defining query directives, example:
Added support for defining query directives, example:
import strawberry
from strawberry.directive import DirectiveLocation
@strawberry.type
class Query :
cake: str = "made_in_switzerland"
@strawberry.directive (
locations =[DirectiveLocation.FIELD], description = "Make string uppercase"
)
def uppercase ( value : str , example : str ):
return value.upper()
schema = strawberry.Schema( query =Query, directives =[uppercase])
Improve dict_to_type conversion by checking if the field has a different name or case
Improve dict_to_type conversion by checking if the field has a different name or case
Fix field initialization not allowed when using strawberry.field in an input type
Fix field initialization not allowed when using strawberry.field in an input type
@strawberry.input
class Say :
what = strawberry.field( is_input = True )
Allow the usage of Union types in the mutations
Allow the usage of Union types in the mutations
@strawberry.type
class A :
x: int
@strawberry.type
class B :
y: int
@strawberry.type
class Mutation :
@strawberry.mutation
def hello ( self , info ) -> Union[A, B]:
return B( y = 5 )
schema = strawberry.Schema( query =A, mutation =Mutation)
query = """
mutation {
hello {
__typename
... on A {
x
}
... on B {
y
}
}
}
"""
Fix missing fields when extending a class, now we can do this:
Fix missing fields when extending a class, now we can do this:
@strawberry.type
class Parent :
cheese: str = "swiss"
@strawberry.field
def friend ( self , info ) -> str :
return "food"
@strawberry.type
class Schema ( Parent ):
cake: str = "made_in_swiss"
This release adds field support for permissions
This release adds field support for permissions
import strawberry
from strawberry.permission import BasePermission
class IsAdmin ( BasePermission ):
message = "You are not authorized"
def has_permission ( self , info ):
return False
@strawberry.type
class Query :
@strawberry.field ( permission_classes =[IsAdmin])
def hello ( self , info ) -> str :
return "Hello"
This releases adds support for ASGI 3.0
This releases adds support for ASGI 3.0
from strawberry.asgi import GraphQL
from starlette.applications import Starlette
graphql_app = GraphQL(schema_module.schema, debug = True )
app = Starlette( debug = True )
app.add_route( "/graphql" , graphql_app)
app.add_websocket_route( "/graphql" , graphql_app)
Added support for optional fields with default arguments in the GraphQL schema when default arguments are passed to the resolver.
Added support for optional fields with default arguments in the GraphQL schema when default arguments are passed to the resolver.
Example:
@strawberry.type
class Query :
@strawberry.field
def hello ( self , info , name : str = "world" ) -> str :
return name
type Query {
hello ( name : String = "world" ): String
}
Fixed issue that was prevent usage of InitVars. Now you can safely use InitVar to prevent fields from showing up in the schema:
Fixed issue that was prevent usage of InitVars. Now you can safely use InitVar to prevent fields from showing up in the schema:
@strawberry.type
class Category :
name: str
id : InitVar[ str ]
@strawberry.type
class Query :
@strawberry.field
def category ( self , info ) -> Category:
return Category( name = "example" , id = "123" )
Fixed logo on PyPI
Fixed logo on PyPI
Added support for passing resolver functions
Added support for passing resolver functions
def resolver ( root , info , par : str ) -> str :
return f "hello { par } "
@strawberry.type
class Query :
example: str = strawberry.field( resolver =resolver)
Also we updated some of the dependencies of the project
Added support for renaming fields. Example usage:
Added support for renaming fields. Example usage:
@strawberry.type
class Query :
example: str = strawberry.field( name = "test" )
Added support for declaring interface by using @strawberry.interface Example:
Added support for declaring interface by using @strawberry.interface Example:
@strawberry.interface
class Node :
id : strawberry.ID
This changes field to be lazy by default, allowing to use circular dependencies when declaring types.
This changes field to be lazy by default, allowing to use circular dependencies when declaring types.
Improve listing on pypi.org
Improve listing on pypi.org
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →