# What changed in django-crispy-forms

> 13 changes in django-crispy-forms 1 to 2 from its official release notes, upgrade guides and advisories: 4 breaking, 3 new APIs and options. Each one cited. Sources checked 2026-10-26. HTML: https://unstale.sh/pypi/django-crispy-forms/

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

## django-crispy-forms 2

### Breaking changes

- Support for Django 4.2, 5.0 and 5.1 was dropped, so projects using those versions are no longer supported. (2.6) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases/tag/2.6)
- Python 3.8 is no longer supported. (2.5) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases/tag/2.5)

### Fixes and other changes

- Support is confirmed for Django 6.1. (2.7) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases/tag/2.7)
- Django 6.0 support is confirmed. (2.5) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases/tag/2.5)
- Python 3.14 support is confirmed. (2.5) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/releases/tag/2.5)

## django-crispy-forms 1

### Breaking changes

- The project moved from django-uni-form to django-crispy-forms, renaming tags, filters, and modules; migration instructions were added. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)
- Layouts are rendered strictly: fields omitted from the layout are not rendered, and Meta fields or exclude follow Django standards. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)

### New APIs and options

- BaseInput subclasses such as Submit can now have IDs set using css_id. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)
- A Field layout object lets you wrap name fields, set attributes, or override the widget template. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)
- The helper attribute controls whether form.errors is rendered. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)

### Performance

- Checking rendered_fields is faster. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)

### Behavior and default changes

- The template tag can render a form using its attached helper when that FormHelper attribute is named helper, without passing form.helper explicitly. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)

### Fixes and other changes

- The filter now renders all classes. (1.0.0) — [release notes](https://github.com/django-crispy-forms/django-crispy-forms/blob/HEAD/CHANGELOG.md)
