---
author: SchrodingersGat
title: 0.9.0 Stable Release
---

The InvenTree team is very excited to announce the InvenTree 0.9.0 Stable Release!

This release is the culmination of many hours of work from multiple developers, providing numerous new features and bug fixes. We extend our thanks to the contributors who have helped on this release, as well as the users who have suggested new features or helped us track down outstanding software issues.

## New Features

The 0.9.0 release introduces many new features - some of the major ones are outlined briefly below:

### Installer

We now have a packaged command-line installer for simplified setup (on supported platforms), using the [packager.io](https://packager.io/) service. The installer is targeted for users who are installing InvenTree on a bare metal system (separate installers are available for container environments).

You can find more information about the installer at [docs.inventree.org](https://docs.inventree.org/en/stable/start/installer/).

### Backup and Restore

Database backup and restore functionality has been improved, using the [dbbackup library](https://django-dbbackup.readthedocs.io/en/master/). A backup of database records (and uploaded media files) can be performed with a simple command line action. Backup can also be configured to occur periodically, serviced by the background worker.

### Pricing Overhaul

This release provides a major overhaul for how pricing data is managed. The new pricing system calculates various pricing information (such as BOM cost or purchase price range) and caches this data in the database. This means that the efficiency of accessing pricing data in real time is greatly improved. For complex bills of material, viewing pricing data was (before this update) extremely prohibitive, due to the recursive calculations which were being performed "on the fly". The new architecture makes use of the background worker to recalculate pricing information whenever the underlying data changes, ensuring that "up to date" pricing is readily available.

![BOM Pricing](/assets/blog/bom-pricing.png)

Additionally, more options for controlling how pricing information is calculated and handled have been implemented.

You can read more about managing pricing data in InvenTree at [docs.inventree.org](https://docs.inventree.org/en/stable/part/pricing/).

### Barcode Refactor

Barcode support has been significantly improved, allowing custom barcode functionality for a greater range of database model types, and simplifying the API.

- Custom barcodes can now be assigned to *Part* instances
- Custom barcodes can now be assigned to *Stock Location* instances
- Custom barcodes can now be assigned to *Supplier Part* instances

Read more about the updated barcode support in [the InvenTree documentation](https://docs.inventree.org/en/stable/barcodes/barcodes/).

### Builtin Plugins

As part of the ongoing improvements to the plugin system, InvenTree now features a number of "builtin" plugins. These plugins are always active (even if custom plugin support is disabled for the server) and provide core InvenTree functionality in a way which aligns with the operation of the plugin system. This is intended to streamline the way in which plugins are implemented, as core components of the code are now offloaded to the plugin with a simpler interface.

We have also made some significant improvements to the [plugin system documentation](https://docs.inventree.org/en/stable/extend/plugins/).

### Validation Plugins

A completely new type of plugin introduced in this release is the [validation plugin mixin](https://docs.inventree.org/en/stable/extend/plugins/validation/). This plugin allows users to implement custom validation methods for various database fields. In addition to allowing validation of field values against complex custom rules, this plugin allows automated generation of the "next value" for certain fields, such as serial numbers and batch codes.

### News Reader

Now that the new website is live, a [news feed](/news) is available. If enabled, news about InvenTree can be displayed in the InvenTree dashboard.

*Note that this feature is disabled by default, and must be enabled by a staff user*

![News Reader](/assets/blog/news-reader.png)

### Part Scheduling

The [Part Scheduling](https://docs.inventree.org/en/stable/part/scheduling/) functionality has received some updates in this release. If enabled, the *Part Scheduling* tab shows predicted future stock levels, based on incoming and outgoing orders.

### Supplier Part Pack Size

A major improvement to the way supplier parts are handled is the addition of "pack size" for supplier parts. While internally, parts are represented using "unit quantity", they can be sourced from suppliers in larger pack quantities. Pack sizing is also taken into quantity when calculating unit pricing. 

### Data Sanitization

A number of security related changes have been implemented, providing multiple improvements related to input data sanitization. Some of these updates include:

- Remove invisible ASCII and unicode characters from user submitted data
- Sanitize uploaded SVG files
- Remove malicious HTML from form fields

More generally, a number of security fixes have been made for this release, following vulnerability reports received from the InvenTree community. You can view information on all our [security advisory notices on GitHub](https://github.com/inventree/InvenTree/security/advisories).

### Customizing

Further customization of InvenTree is now available, with custom splash screens and application icons supported in this release.

### Bug Fixes

In addition to many new features, this release also provides fixes for a number of bugs, of varying severity! Refer to the [release notes](#release-notes) for further information.

### Release Notes

This list covers only a fraction of the exciting new features. You can view the [full release notes](https://github.com/inventree/InvenTree/releases/tag/0.9.0) on our GitHub page.
