Happy new year. We’re pleased to announce our first release of 2022 and to start the year off on the right foot, we went big with under-the-hood performance improvements in Fleet 4.9.0. Check out the full [changelog](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.9.0) or read on for a summary of what’s new.
For update instructions, see our [upgrade guide](https://fleetdm.com/docs/using-fleet/updating-fleet) in the Fleet docs.
## Feature highlights
- We made many performance improvements, including improvements to loading states and latency in the UI and performance improvements of the MySQL database.
- Paginated live query results so the Fleet UI can handle 1,000+ results.
- We added support for applying a policy YAML document.
### Paginated live query results
Users can now navigate through thousands of results from live queries with ease. It’s a small but valuable UI change.
![Paginated live query results](../website/assets/images/articles/fleet-4.9.0-1-700x393@2x.png)
### Added support for a policy YAML document
We added support for applying a policy YAML document so users can take advantage of GitOps for their organization’s policies.
The `policy` YAML document allows users to specify the `name`, `query`, `description` , and `resolution` for each policy. Users can then run `fleetctl apply` to add these policies to Fleet.
![Applying policies from a YAML document with fleetctl](../website/assets/images/articles/fleet-4.9.0-2-700x393@2x.png)
### Performance improvements
As mentioned above, performance improvements were a theme for this release. As part of that we:
- Refactored async host processing to avoid Redis SCAN keys.
- Identified Datastore APIs that load unnecessary data for osquery hosts.
- Audited DB relationships and removed as many cleanups as possible.
- Removed Badger DB in Orbit, which was unused and sometimes troublesome for Windows users.
- Made sure that unit tests passed with the MySQL:8 docker image and added a new GitHub action to test with MySQL:8 on each PR.
- Made osquery logs pluggable for Windows users. We added a configuration option for writing logs to a file and ensured appropriate log rotation for any logs written directly to the filesystem.
- Made some improvements to determine the [jitter](https://www.youtube.com/watch?v=pIgZ7gMze7A) per host.
- Improved the frontend handling of non-JSON error responses.
- Evaluated and corrected all page-level components for unnecessary state reassertions.
- Improved the loading state of the Manage policies page to better handle load tests with a high volume of hosts.
- Improved empty state messaging on the Hosts page.
- Went pixel peeping and improved paddings, spacings, and alignments of various elements throughout Fleet UI.
- Improved consistency throughout the frontend codebase.
- Fleet UI now detects the correct compatibility for the “Detect active processes with Log4j running” query.
- Browser extensions are working as expected in software inventory.
- Requesting a query or policy ID that does not exist now returns the expected 404 response rather than a 500 error.
- Starting a Linux container in `fleetctl preview` now builds successfully when running `fleetctl.exe preview — orbit-channel edge`.
- Team Observers will be pleased to know that they will no longer receive a 403 response when retrieving a list of global policies.
- Live query result filtering in `fleetctl preview` is now working as expected.
- A user reported that `numLabels` in the anonymous usage statistics were not reporting correctly for them — this is fixed now.
- We fixed an issue where some Fleet UI pages made multiple requests to the same endpoints on page load.
## Ready to update?
Visit our [upgrade guide](https://fleetdm.com/docs/using-fleet/updating-fleet) in the Fleet docs for instructions on updating to Fleet 4.9.0.