|
| 1 | +# What's New in graphql-js v17? |
| 2 | + |
| 3 | +## Specification Changes |
| 4 | + |
| 5 | +### New Experimental Features |
| 6 | + |
| 7 | +#### Experimental Support for Incremental Delivery |
| 8 | + |
| 9 | +- enabled only when using `experimentalExecuteIncrementally()`, use of a schema or operation with `@defer`/`@stream` directives within `execute()` will now throw. |
| 10 | +- enable early execution with the new `enableEarlyExecution` configuration option for `experimentalExecuteIncrementally()`. |
| 11 | + |
| 12 | +#### Experimental Support for Fragment Arguments |
| 13 | + |
| 14 | +- enable with the new `experimentalFragmentArguments` configuration option for `parse()`. |
| 15 | +- new experimental `Kind.FRAGMENT_ARGUMENT` for visiting |
| 16 | +- new experimental `TypeInfo` methods and options for handling fragment arguments. |
| 17 | +- coerce AST via new function `coerceInputLiteral()` with experimental fragment variables argument (as opposed to deprecated `valueFromAST()` function). |
| 18 | + |
| 19 | +### Clarifications |
| 20 | + |
| 21 | +- Fix ambiguity around when schema definition may be omitted (#3839) |
| 22 | +- No reusing root types (#3453) |
| 23 | + |
| 24 | +## New API features |
| 25 | + |
| 26 | +- Use `coerceInputLiteral()` instead of `valueFromAST()`. |
| 27 | +- Support for resolver functions returning async iterables. |
| 28 | +- Expose `printDirective()` helper function. |
| 29 | + |
| 30 | +## API Changes: |
| 31 | + |
| 32 | +- Changes to the `subscribe()` function: |
| 33 | + - `subscribe()` may now return a non-promise. |
| 34 | + - When a subscription root field errors, `subscribe()` now returns a well-formatted `GraphQLError` rather than throwing. |
| 35 | +- Properly type `IntrospectionType` using `TypeKind` Enum. |
| 36 | + |
| 37 | +## Deprecations |
| 38 | + |
| 39 | +- `valueFromAST()` is deprecated, use `coerceInputLiteral()` instead. |
| 40 | + |
| 41 | +## Removals |
| 42 | + |
| 43 | +- Removed deprecated `graphql/subscription` module, use `graphql/execution` instead |
| 44 | +- Removed deprecated `getOperationRootType()` #3571, use `schema.getRootType()` instead. |
| 45 | +- Remove deprecated `assertValidName()` and `isValidNameError()`, use `assertName()` instead. |
| 46 | +- Removed deprecated custom `TypeInfo` argument for `validate()`. |
| 47 | +- Remove deprecated custom `getFieldDefFn()` argument for `TypeInfo` constructor. To customize field resolution, one can subclass the `GraphQLSchema` class and override the `getField()` method. |
| 48 | +- Remove deprecated positional arguments for the `GraphQLError` constructor. |
| 49 | +- Remove deprecated distinct Enum types: `KindEnum`, `TokenKindEnum`, and `DirectiveLocationEnum`. |
| 50 | +- Remove deprecated `getVisitFn()` helper function, use `getEnterLeaveForKind()` instead. |
| 51 | +- Remove deprecated `formatError()` and `printError()` helper sfunctions, use `error.toString()` and `error.toJSON()` methods instead. |
| 52 | +- Remove deprecated positional arguments for `createSourceEventStream()`. |
0 commit comments