server.compress
- Type:
- Default:
true
Configure whether to enable gzip compression for static assets served by the dev server or preview server.
Disable compression
To disable the gzip compression, set compress to false:
Options
filter
- Type:
(req: IncomingMessage, res: ServerResponse) => boolean - Default:
undefined - Version:
>= v1.4.4
A function that determines whether a response should be compressed.
Returns true to compress the response, false to skip compression.
level
- Type:
number - Default:
- Dev server:
1(zlib.constants.Z_BEST_SPEED) - Preview server:
6(zlib.constants.Z_DEFAULT_COMPRESSION)
- Dev server:
- Version:
>= v1.4.4
Used to set the level of zlib compression applied to responses. A higher level will result in better compression, but will take longer to complete; a lower level will result in less compression, but will be much faster. This value is an integer in the range of 0 (no compression) to 9 (maximum compression).
Rsbuild dev server uses zlib.constants.Z_BEST_SPEED as the default compression level, which provides the best compression performance. The preview server sets level to zlib.constants.Z_DEFAULT_COMPRESSION by default.
In actual production environments, web servers like Nginx or Apache are commonly used, which may use different compression levels. Therefore, you might observe differences between the file sizes after gzip compression in your local environment compared to production.
Streaming responses
Gzip compression may buffer data, delaying delivery of streamed HTML. To send a chunk without waiting for the response to end, call res.flush?.() after res.write().
res.flush() flushes the gzip buffer without ending the response. It is provided by the compression middleware, so use optional chaining (?.) to handle cases where the method is unavailable, such as when compression is disabled.
When using server.setup, register your streaming handler with server.middlewares.use() inside the returned callback so the compression middleware runs first. See Middleware execution order.

