# Introducing .discourse-compatibility: pinned plugin/theme versions for older Discourse versions

**URL:** <https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971>\
**Category:** Announcements\
**Tags:** new-feature\
**Created:** [July 6, 2020, 10:51pm UTC](https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971 "2020-07-06T22:51:07Z")\
**Posts on this page:** 1\
**Showing post:** 18

<div class="post-metadata">

**Author:** ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)\
**Post date:** [September 9, 2020, 11:28pm UTC](https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971/18 "2020-09-09T23:28:09Z")

</div>

More edge cases, more hidden features: You can actually “unset” the pin with a blank entry:

With a compatibility file of:

```plaintext
        2.6.0.beta1: twofiveall
        2.4.4.beta6: ~
        2.4.2.beta1: twofourtwobetaone

```

Anything between 2.4.2.beta1 to 2.4.4.beta6 will not be pinned back. Anything after up to 2.6.0.beta1 will e pinned. After that will be unpinned again.

Underneath, anything that evaluates to a nil value will be untouched/be on latest. A blank entry or `~` evaluates to nil (via ruby’s yaml parser), which bypasses the pinning function.

---

_[View the full topic](https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971)._
