# Extending

The Wagtail admin interface is a suite of Django apps, and so the familiar concepts from Django development - views, templates, URL routes and so on - can be used to add new functionality to Wagtail. Numerous [third-party packages](https://wagtail.org/packages/) can be installed to extend Wagtail’s capabilities.

This section describes the various mechanisms that can be used to integrate your own code into Wagtail’s admin interface.

#### NOTE
The features described in this section and their corresponding reference
documentation are not subject to the same level of stability described in our
[Deprecation policy](../releases/release_process.md#deprecation-policy). Any backwards-incompatible changes to these features
will be called out in the upgrade considerations of the [Release notes](../releases/index.md).

* [Creating admin views](admin_views.md)
  * [Defining a view](admin_views.md#defining-a-view)
  * [Registering a URL route](admin_views.md#registering-a-url-route)
  * [Adding a template](admin_views.md#adding-a-template)
  * [Adding a menu item](admin_views.md#adding-a-menu-item)
  * [Adding a group of menu items](admin_views.md#adding-a-group-of-menu-items)
  * [Using `ViewSet` to group custom admin views](admin_views.md#using-viewset-to-group-custom-admin-views)
  * [Combining multiple `ViewSet`s using a `ViewSetGroup`](admin_views.md#combining-multiple-viewsets-using-a-viewsetgroup)
  * [Adding links in admin views](admin_views.md#adding-links-in-admin-views)
* [Generic views](generic_views.md)
  * [ModelViewSet](generic_views.md#modelviewset)
  * [ChooserViewSet](generic_views.md#chooserviewset)
* [Template components](template_components.md)
  * [`render_html()`](template_components.md#render_html)
  * [`media`](template_components.md#media)
  * [Creating components](template_components.md#creating-components)
  * [Passing context to the template](template_components.md#passing-context-to-the-template)
  * [Adding media definitions](template_components.md#adding-media-definitions)
  * [Using components on your own templates](template_components.md#using-components-on-your-own-templates)
* [Using forms in admin views](forms.md)
  * [Defining admin form widgets](forms.md#defining-admin-form-widgets)
  * [Panels](forms.md#panels)
* [Adding reports](adding_reports.md)
  * [Reporting reference](adding_reports.md#reporting-reference)
  * [Example report for pages with unpublished changes](adding_reports.md#example-report-for-pages-with-unpublished-changes)
* [Adding new Task types](custom_tasks.md)
  * [Task models](custom_tasks.md#task-models)
  * [Custom TaskState models](custom_tasks.md#custom-taskstate-models)
  * [Customizing behavior](custom_tasks.md#customizing-behavior)
  * [Adding notifications](custom_tasks.md#adding-notifications)
* [Audit log](audit_log.md)
  * [`log()`](audit_log.md#log)
  * [Log actions provided by Wagtail](audit_log.md#log-actions-provided-by-wagtail)
  * [Log context](audit_log.md#log-context)
  * [Log models](audit_log.md#log-models)
* [Customizing the user account settings form](custom_account_settings.md)
  * [Adding new panels](custom_account_settings.md#adding-new-panels)
  * [Operating on the `UserProfile` model](custom_account_settings.md#operating-on-the-userprofile-model)
  * [Creating new tabs](custom_account_settings.md#creating-new-tabs)
  * [Customizing the template](custom_account_settings.md#customizing-the-template)
* [Customizing group edit/create views](customizing_group_views.md)
  * [Custom edit/create forms](customizing_group_views.md#custom-edit-create-forms)
  * [Customizing the group editor permissions ordering](customizing_group_views.md#customizing-the-group-editor-permissions-ordering)
* [Custom image filters](custom_image_filters.md)
* [Extending client-side behavior](extending_client_side.md)
  * [Adding custom JavaScript](extending_client_side.md#adding-custom-javascript)
  * [Extending with DOM events](extending_client_side.md#extending-with-dom-events)
  * [Extending with Stimulus](extending_client_side.md#extending-with-stimulus)
  * [Extending with React](extending_client_side.md#extending-with-react)
  * [Extending Draftail](extending_client_side.md#extending-draftail)
  * [Extending StreamField](extending_client_side.md#extending-streamfield)
  * [Extending the editor](extending_client_side.md#extending-the-editor)
* [Accessing the editor programmatically](editor_api.md)
  * [The editor’s `<form>` element](editor_api.md#the-editor-s-form-element)
  * [The preview panel](editor_api.md#the-preview-panel)
  * [Example: generating meta description](editor_api.md#example-generating-meta-description)
* [Accessing panels from client-side code](client_side_panels.md)
  * [`Panel`](client_side_panels.md#panel)
  * [`PanelGroup`](client_side_panels.md#panelgroup)
  * [`FieldPanel`](client_side_panels.md#fieldpanel)
  * [`InlinePanel`](client_side_panels.md#inlinepanel)
* [Rich text internals](rich_text_internals.md)
  * [Data format](rich_text_internals.md#data-format)
  * [The feature registry](rich_text_internals.md#the-feature-registry)
  * [Rewrite handlers](rich_text_internals.md#rewrite-handlers)
  * [Editor widgets](rich_text_internals.md#editor-widgets)
  * [Editor plugins](rich_text_internals.md#editor-plugins)
  * [Format converters](rich_text_internals.md#format-converters)
* [Extending the Draftail editor](extending_draftail.md)
  * [Formatting extensions](extending_draftail.md#formatting-extensions)
  * [Other editor extensions](extending_draftail.md#other-editor-extensions)
  * [Integration of the Draftail widgets](extending_draftail.md#integration-of-the-draftail-widgets)
* [Adding custom bulk actions](custom_bulk_actions.md)
  * [Registering a custom bulk action](custom_bulk_actions.md#registering-a-custom-bulk-action)
  * [Adding bulk actions to the page explorer](custom_bulk_actions.md#adding-bulk-actions-to-the-page-explorer)
  * [Adding bulk actions to the Images listing](custom_bulk_actions.md#adding-bulk-actions-to-the-images-listing)
  * [Adding bulk actions to the documents listing](custom_bulk_actions.md#adding-bulk-actions-to-the-documents-listing)
  * [Adding bulk actions to the user listing](custom_bulk_actions.md#adding-bulk-actions-to-the-user-listing)
  * [Adding bulk actions to the snippets listing](custom_bulk_actions.md#adding-bulk-actions-to-the-snippets-listing)
