So, we're heavily using our own packages (with our own registry etc) in our workflow. Some of those are used over quite a range of Unity versions. In fact, right now I'm trying to extend support "backwards" in Unity versions, e.g. some packages currently support 2019.1+ and I want them to support 2018.1+. This has lead to a number of questions: asmdefs default to "Use GUIDs" but that is not available e.g. on 2018.1. What's the advantage of using it? What's the downside to disabling it? some Unity packages (com.unity.timeline; com.unity.ui; com.unity.ugui) are not available in earlier versions. What's the right way to support both "old" and "new" Unity versions with the same package version? How do I specify those dependencies in a backwards-compatible way? some Unity packages use C#7 features but < 2018.3 does not support that (com.unity.mathematics). No idea how to handle that, as mathematics actually pretends to be working on 2018.1. Mesh.Optimize ist obsolete in 2018.3, but came back later (?), definitely alive and kicking in 2019.2; is there a list of such things or will I have to just find that on a case-by-case basis? Another fun thing: I can't find a version of Package Manager UI that works on 2018.3.14f1. 1.2.0 has no asmdef files (which are required for that Unity version in Packages) while 1.3.0 seems to use types only available in 2018.4. Most versions that I can find in the Changelog seem to have been unpublished already. EDIT: found a version that works by creating an entirely new project on 2018.3.14f1. It's the much newer 2.0.7.