---
url: /reference/InputOptions.devtools.md
---
# devtools

* **Type**: object with the properties below
* **Optional**
* **Experimental**

Devtools integration options.

In the default `'full'` mode, Rolldown writes JSON-lines devtools output under
`node_modules/.rolldown/{session_id}/`, resolved against [`cwd`](./InputOptions.cwd).
Consumers can parse the output with `@rolldown/debug` after
`await bundle.close()` resolves.

`sessionId` replaces the generated session id. It must be one path segment: not empty, not
`.` or `..`, and without `/`, `\` or NUL. Rolldown does not check that it is unique: give each
bundler that runs at the same time its own `sessionId`, or their devtools output mixes.
The name `unknown-session` is reserved regardless of case.

In `'report'` mode, Rolldown writes a small build report instead of the multi-GB
`logs.json`: Markdown views, `metrics.json` with a build-over-build `delta`,
`module-graph.json`, `chunk-graph.json` and `history.jsonl`. The report goes to
`node_modules/.rolldown/report/<output dir>`, resolved against [`cwd`](./InputOptions.cwd), where
`<output dir>` is the output folder relative to `cwd` (each `..` becomes `__`). Rolldown
writes it when the bundle closes. `watch()` and the dev engine write no report. See the
[Build Report guide](/in-depth/build-report) for the files and how to compare builds.

## mode?

* **Type**: `"full"` | `"report"`
* **Optional**

`'full'` (default): write JSON-lines devtools logs.
`'report'`: write a small build report to `node_modules/.rolldown/report/` instead.
Any other value fails the build.

## sessionId?

* **Type**: `string`
* **Optional**
