Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions website-next/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ This version has breaking changes — APIs, conventions, and file structure may

<!-- END:nextjs-agent-rules -->

# Writing documentation
# Authoring markdown content
Comment thread
tobias-tengler marked this conversation as resolved.

When creating or editing docs under `content/docs/`, follow the conventions in
[README.md → Writing Documentation](./README.md#writing-documentation). It covers
frontmatter, `structure.yaml` sidebars, links, images, YouTube videos,
When creating or editing content under `content/docs/` or `content/blog/`, follow
the conventions in [README.md → Authoring Markdown Content](./README.md#authoring-markdown-content).
It covers frontmatter, `structure.yaml` sidebars, links, images, YouTube videos,
admonitions, Mermaid diagrams, and MDX gotchas.
17 changes: 10 additions & 7 deletions website-next/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ yarn
yarn dev
```

## Writing Documentation
## Authoring Markdown Content

Docs live in `content/docs/<product>/...` as Markdown (`.md`) files and are
compiled with a custom MDX pipeline (`src/mdx-plugins.ts`). The rules below are
Expand Down Expand Up @@ -78,24 +78,27 @@ items:

### Links

Link directly to the target Markdown file using a **relative filesystem path**.
The `rewriteMdLinks` remark plugin rewrites these to the correct route at build
time, and **fails the build on broken links**.
Link to other docs and blog pages directly by their target Markdown file using a
**relative filesystem path**. The `rewriteMdLinks` remark plugin rewrites these to
the correct route at build time, and **fails the build on broken links**.

```markdown
[Sibling page](./other-page.md)
[Sibling blog post](./2026-05-11-hot-chocolate-16.md)
[Page in another section](../guides/first-party-api.md)
[Cross-product page](../../hotchocolate/index.md)
[Deep link with anchor](./other-page.md#a-section)
[Same-page anchor](#a-section) <!-- just the hash, no file -->
```

- Always point at the `.md` file (e.g. `./cli.md`, not `/docs/.../cli`).
- Always point at the `.md` file (e.g. `./cli.md`, not `/docs/.../cli`; and
`./2026-05-11-hot-chocolate-16.md`, not `/blog/2026/05/11/hot-chocolate-16`).
- For a directory/section landing page, link to its `index.md`
(e.g. `./guides/index.md`).
- Same-page anchors are just `#anchor` (no file path).
- Links to **other doc versions** (not present in this repo) or external sites use
absolute URLs, e.g. `https://chillicream.com/docs/hotchocolate/v13/...`.
- Links to **product/marketing pages** (which have no Markdown source) use a
**relative root-relative path**, e.g. `/products/nitro`, not an absolute
`https://chillicream.com/products/nitro` URL.
Comment thread
tobias-tengler marked this conversation as resolved.

### Images

Expand Down
4 changes: 2 additions & 2 deletions website-next/content/blog/2022-01-13-hot-chocolate-12-5.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ With all this in place, we can execute requests against our demo server and insp

The complete example can be found [here](https://github.com/ChilliCream/hotchocolate-examples/tree/master/misc/OpenTelemetry).

Docs can be found [here](https://chillicream.com/docs/hotchocolate/v12/server/instrumentation/#opentelemetry).
Docs can be found [here](../docs/hotchocolate/server/instrumentation.md#opentelemetry).

# `OneOf` Input Objects

Expand Down Expand Up @@ -127,7 +127,7 @@ builder.Services

The complete example can be found [here](https://github.com/ChilliCream/hotchocolate-examples/tree/master/misc/OneOf).

Docs can be found [here](https://chillicream.com/docs/hotchocolate/v12/defining-a-schema/input-object-types/#oneof-input-objects).
Docs can be found [here](../docs/hotchocolate/defining-a-schema/input-object-types.md#oneof-input-objects).

The current GraphQL spec RFC can be found [here](https://github.com/graphql/graphql-spec/pull/825).

Expand Down
2 changes: 1 addition & 1 deletion website-next/content/blog/2024-08-30-hot-chocolate-14.md
Original file line number Diff line number Diff line change
Expand Up @@ -806,7 +806,7 @@ GraphQL, as Facebook created and used it, was built around flexibility during de

In the build pipeline, operations are stripped from the frontend code and replaced with a unique identifier. The stripped operation documents are stored in an operation store. In production, the frontend sends the unique identifier to the GraphQL server instead of a full operation. The GraphQL server only executes operations stored in the operations store and will deny execution of an arbitrary GraphQL requests.

This is the BEST way to do GraphQL and provides the best approach for schema evolvability, as operations are centrally known and can be statically analyzed. It also ensures that you know the performance characteristics and impact of operations on your backend. With Banana Cake Pop, you can set up a schema registry and an operation store in less than 5 minutes. Have a look [here](https://chillicream.com/docs/bananacakepop/v2/apis/schema-registry) for more information.
This is the BEST way to do GraphQL and provides the best approach for schema evolvability, as operations are centrally known and can be statically analyzed. It also ensures that you know the performance characteristics and impact of operations on your backend. With Banana Cake Pop, you can set up a schema registry and an operation store in less than 5 minutes. Have a look [here](../docs/nitro/apis/schema-registry.md) for more information.

However, most new developers are not aware of how to do this or do not understand why they should do it in the first place. Another problem is that there is no easy path from an open GraphQL server to a closed system once you have clients working against your API.

Expand Down
12 changes: 6 additions & 6 deletions website-next/content/blog/2026-06-06-newsletter-may-2026.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,27 +35,27 @@ That performance comes from a brand-new execution engine. Fusion 16 is no longer

The result is a fast gateway without giving up the .NET platform. Your gateway remains an ASP.NET Core application running on .NET 8, 9, and 10. Authentication, configuration, resilience, and observability stay in your hands, and you automatically inherit every Kestrel and runtime improvement Microsoft ships.

Read the full post: [What's new in Fusion 16](/blog/2026/05/15/fusion-16).
Read the full post: [What's new in Fusion 16](./2026-05-15-fusion-16.md).

# Hot Chocolate 16

Hot Chocolate 16 is our first major GraphQL server release in over a year, and it touches some of the deepest parts of the server. We reworked the type system, tightened scalar contracts, improved batching, adopted new GraphQL spec proposals, and made the defaults safer.

Read the full post: [What's new for Hot Chocolate 16](/blog/2026/05/11/hot-chocolate-16).
Read the full post: [What's new for Hot Chocolate 16](./2026-05-11-hot-chocolate-16.md).

# OpenAPI adapter

Every GraphQL project eventually meets a consumer that needs REST: a partner integration, a legacy system, or a tool that cannot speak GraphQL. The new OpenAPI adapter lets you expose selected parts of your graph as REST endpoints without building and maintaining a second API.

Read the full post: [Open Your GraphQL API for the REST](/blog/2026/06/11/open-your-graphql-api-for-the-rest).
Read the full post: [Open Your GraphQL API for the REST](./2026-06-11-open-your-graphql-api-for-the-rest.md).

# MCP adapter

Agents are becoming API consumers, and with v16 you can give them an MCP server built directly on top of your data graph. Tools are authored as GraphQL operations, so they reuse the schema, validation, authorization, and execution pipeline you already have.

But that is not all. The new MCP adapter also supports the MCP Apps standard, so you can colocate UI with your tools and return richer, agentic experiences directly from your GraphQL server or gateway.

Read the full post: [From GraphQL to MCP in Two Lines](/blog/2026/05/28/mcp-hotchocolate-fusion).
Read the full post: [From GraphQL to MCP in Two Lines](./2026-05-28-mcp-hotchocolate-fusion.md).

# skillz

Expand All @@ -67,7 +67,7 @@ Alongside the CLI, we are publishing our first skill for the platform: `graphql-
dnx skillz add ChilliCream/agent-skills --skill graphql-schema-design
```

Read the announcement: [Introducing skillz](/blog/2026/06/05/introducing-skillz).
Read the announcement: [Introducing skillz](./2026-06-05-introducing-skillz.md).

# Semantic Introspection

Expand All @@ -77,7 +77,7 @@ Hot Chocolate 16 and Fusion 16 include this through `__search` and `__definition

With Nitro, Semantic Introspection can go beyond BM25 by adding embeddings to your schema, giving agents true semantic search across your API. That can make agent interaction dramatically cheaper than loading full API descriptions into context, while keeping GraphQL's precision intact. For the first time, you can really talk to your data.

Read the full post: [Semantic Introspection](/blog/2026/04/22/semantic-introspection).
Read the full post: [Semantic Introspection](./2026-04-22-semantic-introspection.md).

# From the community

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ services

After migrating the schema configuration, the next area that has fundamentally changed is the schema middleware.

Hot Chocolate server now embraces the new endpoint routing API from ASP.NET core and with that brings a lot of new features. Head over [here](https://chillicream.com/docs/hotchocolate/v11/api-reference/aspnetcore) to read more about the ASP.NET Core integration.
Hot Chocolate server now embraces the new endpoint routing API from ASP.NET core and with that brings a lot of new features. Head over [here](../server/index.md) to read more about the ASP.NET Core integration.

**Old:**

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ public class Person
}
```

[Reference](https://chillicream.com/docs/hotchocolate/v12/fetching-data/pagination#naming)
[Reference](../fetching-data/pagination.md#connection-naming)

## MongoDB Paging

Expand All @@ -161,7 +161,7 @@ services
...
```

[Reference](https://chillicream.com/docs/hotchocolate/v12/fetching-data/pagination#providers)
[Reference](../fetching-data/pagination.md)

# Records

Expand All @@ -175,7 +175,7 @@ public record Foo([property: ID] string Id);

We added more instrumentation events and generalized more how one can tap into our internal events. The class `DiagnosticEventListener` is now obsolete and replaced with `ExecutionDiagnosticEventListener`. This is due to new event listener classes like `DataLoaderDiagnosticEventListener`. Most virtual methods previously returning IActivityScope now return IDisposable.

[Learn more about instrumentation](https://chillicream.com/docs/hotchocolate/v12/server/instrumentation)
[Learn more about instrumentation](../server/instrumentation.md)

# Relay

Expand Down Expand Up @@ -203,7 +203,7 @@ services
.AddGlobalObjectIdentification();
```

[Learn more about Global Object Identification](https://chillicream.com/docs/hotchocolate/v12/defining-a-schema/relay#global-object-identification)
[Learn more about Global Object Identification](../defining-a-schema/relay.md#global-object-identification)

## Query field in Mutation payloads

Expand Down Expand Up @@ -238,7 +238,7 @@ If you just want to enable the feature without further configuration, you can om
> [!WARNING]
> Since `EnableRelaySupport()` previously always implied the usage of Global Object Identification, you might have to enable Global Object Identification separately as well.

[Learn more about Query field in Mutation payloads](https://chillicream.com/docs/hotchocolate/v12/defining-a-schema/relay#query-field-in-mutation-payloads)
[Learn more about Query field in Mutation payloads](../defining-a-schema/relay.md#query-field-in-mutation-payloads)

# DataLoader

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ TODO: mention change in errors due to non-null fields

## RegisterDbContext

We changed the default [DbContextKind](https://chillicream.com/docs/hotchocolate/v13/fetching-data/entity-framework#dbcontextkind) from [DbContextKind.Synchronized](https://chillicream.com/docs/hotchocolate/v13/fetching-data/entity-framework#dbcontextkindsynchronized) to [DbContextKind.Resolver](https://chillicream.com/docs/hotchocolate/v13/fetching-data/entity-framework#dbcontextkindresolver). If the instance of your `DbContext` doesn't need to be the same for each executed resolver during a request, this should lead to a performance improvement.
We changed the default [DbContextKind](../fetching-data/integrations/entity-framework.md) from [DbContextKind.Synchronized](../fetching-data/integrations/entity-framework.md) to [DbContextKind.Resolver](../fetching-data/integrations/entity-framework.md). If the instance of your `DbContext` doesn't need to be the same for each executed resolver during a request, this should lead to a performance improvement.

To restore the v12 default behavior, pass the [DbContextKind.Synchronized](https://chillicream.com/docs/hotchocolate/v13/fetching-data/entity-framework#dbcontextkindsynchronized) to the `RegisterDbContext<T>` call.
To restore the v12 default behavior, pass the [DbContextKind.Synchronized](../fetching-data/integrations/entity-framework.md) to the `RegisterDbContext<T>` call.

**Before**

Expand Down Expand Up @@ -124,12 +124,12 @@ services.AddHttpResultSerializer(batchSerialization: HttpResultSerialization.Jso

This option has been removed in this release and batch results are now always being delivered through `multipart/mixed` responses. This allows us to send the batch results back to the client as soon as they are ready, without having to hold on to the result and performing a JSON array aggregation on the server. If you need an aggregated batch result, you should do the aggregation on the client instead.

[Learn more about the batching](https://chillicream.com/docs/hotchocolate/v13/server/batching)
[Learn more about the batching](../server/batching.md)

## Nodes batch size

The number of nodes that can be requested through the `nodes` field is limited to 10 by default.
See [Nodes batch size](https://chillicream.com/docs/hotchocolate/v13/security#nodes-batch-size) for the details.
See [Nodes batch size](../security/request-limits.md#nodes-batch-size) for the details.

You can change this default to suite the needs of your application as shown below:

Expand Down Expand Up @@ -212,7 +212,7 @@ IPAddress --> ipAddress
PLZ --> plz
```

If you need to retain the old naming behavior or the inferred field name doesn't match your expectation, you can still [explicitly override the name of the fields in question](https://chillicream.com/docs/hotchocolate/v13/defining-a-schema/object-types#naming).
If you need to retain the old naming behavior or the inferred field name doesn't match your expectation, you can still [explicitly override the name of the fields in question](../defining-a-schema/object-types.md#renaming-fields).

## IHttpResultSerializer

Expand Down Expand Up @@ -286,11 +286,11 @@ builder.Services.AddHttpResponseFormatter(new HttpResponseFormatterOptions {

An `Accept` header with the value `application/json` will opt you out of the [GraphQL over HTTP](https://github.com/graphql/graphql-over-http/blob/a1e6d8ca248c9a19eb59a2eedd988c204909ee3f/spec/GraphQLOverHTTP.md) specification. The response `Content-Type` will now be `application/json` and a status code of 200 will be returned for every request, even if it had validation errors or a valid response could not be produced.

[Learn more about the HTTP transport](https://chillicream.com/docs/hotchocolate/v13/server/http-transport)
[Learn more about the HTTP transport](../server/http-transport.md)

## DataLoaderAttribute

Previously you might have annotated [DataLoaders](https://chillicream.com/docs/hotchocolate/v13/fetching-data/dataloader) in your resolver method signature with the `[DataLoader]` attribute. This attribute has been removed in v13 and can be safely removed from your code.
Previously you might have annotated [DataLoaders](../fetching-data/batching/dataloader.md) in your resolver method signature with the `[DataLoader]` attribute. This attribute has been removed in v13 and can be safely removed from your code.

**Before**

Expand Down Expand Up @@ -427,7 +427,7 @@ Things that will continue to function this release, but we encourage you to move

In this release, we are deprecating the `[ScopedService]` attribute and encourage you to use `RegisterDbContext<T>(DbContextKind.Pooled)` instead.

Checkout [this part of our Entity Framework documentation](https://chillicream.com/docs/hotchocolate/v13/fetching-data/entity-framework#registerdbcontext) to learn how to register your `DbContext` with `DbContextKind.Pooled`.
Checkout [this part of our Entity Framework documentation](../fetching-data/integrations/entity-framework.md) to learn how to register your `DbContext` with `DbContextKind.Pooled`.

Afterward you just need to update your resolvers:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,14 @@ Things that have been removed or had a change in behavior that may cause your co
2. On a per-resolver basis, with the `[UseRequestScope]` or `[UseResolverScope]` attribute.
- Note: The `[UseServiceScope]` attribute has been removed.

For more information, see the [Dependency Injection](https://chillicream.com/docs/hotchocolate/v14/server/dependency-injection) documentation.
For more information, see the [Dependency Injection](../resolvers/dependency-injection.md) documentation.

## Entity framework integration changes

- The `RegisterDbContext` method is no longer required, and has therefore been removed, along with the `DbContextKind` enum.
- Use `RegisterDbContextFactory` to register a DbContext factory.

For more information, see the [Entity Framework integration](https://chillicream.com/docs/hotchocolate/v14/fetching-data/entity-framework) documentation.
For more information, see the [Entity Framework integration](../fetching-data/integrations/entity-framework.md) documentation.

## New GID format

Expand Down Expand Up @@ -165,7 +165,7 @@ The Operation Complexity Analyzer in v13 has been replaced by Cost Analysis in v
- The `Complexity` property on `RequestExecutorOptions` (accessed via `ModifyRequestOptions`) has been removed.
- Cost analysis is enabled by default.

Please see the [documentation](https://chillicream.com/docs/hotchocolate/v14/security/cost-analysis) for further information.
Please see the [documentation](../security/cost-analysis.md) for further information.

## DateTime scalar enforces a specific format

Expand Down
2 changes: 1 addition & 1 deletion website-next/content/docs/nitro/apis/client-registry.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ The operations file typically adopts the JSON format as used by Relay. It compri

Several GraphQL clients have built-in support for this Relay-style operations file format. This compatibility allows for a standardized way of handling persisted operations across different clients. For more details on how various clients implement and work with persisted operations, consider referring to their respective documentation:

- [StrawberryShake](https://chillicream.com/docs/strawberryshake/v14/performance/persisted-operations)
- [StrawberryShake](../../strawberryshake/performance/persisted-operations.md)
- [URQL](https://nearform.com/open-source/urql/docs/advanced/persistence-and-uploads/)
- [Relay](https://relay.dev/docs/guides/persisted-queries/)

Expand Down
2 changes: 1 addition & 1 deletion website-next/content/docs/nitro/apis/fusion.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ dotnet tool install HotChocolate.Fusion.CommandLine

All changes to the gateway originate from a subgraph. Once the subgraph is ready to be deployed, you need to pack it. Packing a subgraph will create a subgraph package file that contains the schema, the extensions and the configuration of the subgraph.

To easily access the newest schema and extensions, you can use the `schema export` command from the [Command Line Extension](https://chillicream.com/docs/hotchocolate/v13/server/command-line). This command exports your current schema into a specified output file.
To easily access the newest schema and extensions, you can use the `schema export` command from the [Command Line Extension](../../hotchocolate/server/command-line.md). This command exports your current schema into a specified output file.

```bash
dotnet run -- schema export --output schema.graphql
Expand Down
2 changes: 1 addition & 1 deletion website-next/content/docs/nitro/apis/schema-registry.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ One of the simplest ways to extract the schema is by using the `schema export` c
dotnet run -- schema export --output schema.graphql
```

For more details about this command and how to setup the command line extension, please refer to the [Command Line Extension documentation](https://chillicream.com/docs/hotchocolate/v13/server/command-line).
For more details about this command and how to setup the command line extension, please refer to the [Command Line Extension documentation](../../hotchocolate/server/command-line.md).
Comment thread
tobias-tengler marked this conversation as resolved.

### Utilizing Snapshot Testing

Expand Down
Loading
Loading