# What changed in djangorestframework-jsonapi

> 28 changes in djangorestframework-jsonapi 8 to 9 from its official release notes, upgrade guides and advisories: 12 breaking, 2 deprecations, 1 new APIs and options. Each one cited. Sources checked 2026-10-29. HTML: https://unstale.sh/pypi/djangorestframework-jsonapi/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## djangorestframework-jsonapi 9

### Breaking changes

- Add IncludedResourcesFilter to DEFAULT_FILTER_BACKENDS to retain included-resource validation and prefetching behavior. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- The minimum required django-filter version is now 25.1; the newest version is recommended. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Exposing Polymorphic resources through django-polymorphic as JSON:API endpoints is no longer supported. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Support for Django REST framework 3.15 and 3.16 was removed. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Support for Django 4.2 and 5.1 was removed. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Support for Python 3.9 and 3.10 was removed. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)

### Deprecations

- This mixin is deprecated; use IncludedResourcesFilter as a filter backend instead. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)

### New APIs and options

- Included-resource validation and prefetching moved to this filter class; add it to DEFAULT_FILTER_BACKENDS so validation runs before prefetching and avoids unnecessary database queries. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)

### Behavior and default changes

- The HTTP status code is now always added to the error object. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)

### Fixes and other changes

- The exception code is always added to the error object when set. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Support was added for Django 6.0 and 6.1. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Support was added for Django REST framework 3.17 and 3.18. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Empty responses carrying error codes are now allowed, such as returning Response(status=400) in a view. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- None validation errors, such as AuthenticationFailed, are now rendered correctly. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)
- Support was added for Python 3.15. (9.0.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v9.0.0)

## djangorestframework-jsonapi 8

### Breaking changes

- This is the final release supporting Python 3.9 and 3.10, Django 4.2 and 5.1, and Django REST framework 3.15 and 3.16. (8.1.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v8.1.0)
- Support for Django 5.0 was removed. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
- Support for Django REST framework 3.14 was removed. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
- Built-in support for generating OpenAPI schemas was removed; the notes recommend drf-spectacular-json-api instead. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
- The minimum required version of the optional package is now 4.0.0. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
- Support for Python 3.8 was removed. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)

### Deprecations

- Support for exposing Polymorphic resources as JSON:API endpoints through django-polymorphic is deprecated, with no replacement currently available. (8.1.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v8.1.0)

### Fixes and other changes

- Responses now include an empty included array when the include query parameter is present but no related resources exist. (8.1.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v8.1.0)
- Added support for Python 3.14. (8.1.0) — [release notes](https://github.com/django-json-api/django-rest-framework-json-api/releases/tag/v8.1.0)
- Added support for Django REST framework 3.16. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
- Added support for Django 5.2. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
- The sparse fieldset's fields query parameter fully supports JSON_API_FORMAT_FIELD_NAMES. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
- The compound documents' include query parameter fully supports JSON_API_FORMAT_FIELD_NAMES. (8.0.0) — [upgrade guide](https://github.com/django-json-api/django-rest-framework-json-api/blob/main/CHANGELOG.md)
