Change8

Migrating to Ruff 0.16.0

Version 0.16.0 introduces 3 breaking changes. This guide details how to update your code.

Released: 7/23/2026

3
Breaking Changes
2
Migration Steps
3
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

ruff formatruff checkJSON output format

Breaking Changes

Issue #1

Ruff now enables a much larger set of rules by default (413, up from 59). Users should consult the blog post for details and the new Default Rules page for a full listing of enabled rules.

Issue #2

Ruff can now format Python code blocks in Markdown files by default. Refer to the documentation for details on Markdown code formatting.

Issue #3

The `filename`, `location`, `end_location`, `fix.edits[].location`, and `fix.edits[].end_location` fields in the JSON output format may now be `null` instead of defaulting to the empty string and row 1, column 1, respectively.

Migration Steps

  1. 1
    Review the enabled rules due to the significant increase in default rules. Consult the blog post and the Default Rules documentation.
  2. 2
    Update configurations or scripts that rely on the previous behavior of `filename`, `location`, `end_location`, `fix.edits[].location`, and `fix.edits[].end_location` in JSON output to handle potential `null` values.

Release Summary

Ruff v0.16.0 significantly expands default rules, introduces Markdown code formatting, and enhances the `format --check` output. It also stabilizes several rules and behaviors.

Need More Details?

View the full release notes and all changes for Ruff 0.16.0.

View Full Changelog