With new VR headsets over the horizon rumored to include eye and face tracking, more and more avatars will release with the required blendshapes already created, whether for SRanipal, ARKit, or future systems. This is great for expressivity, but all of those extra blendshapes will start to have an impact on the download size of avatars, but most importantly VRAM, since meshes live in VRAM when they need to be rendered.
I propose a system where the VRCSDK could scan an avatar's animations on upload and note all of the blendshapes used in any animation (this would also include the ones in the avatar descriptor). Then, it would create copies of the skinned meshes found on the avatar, swap them for the duplicates, and remove every unused blendshape. Because those blendshapes are not being animated in any way, and there is no way to drive blendshapes besides animations, it doesn't make sense for them to exist on the avatar in game, so this should not affect functionality.
This system should be opt-out and not opt-in, since people would not use it unless they know about it. This would also give the option to turn it off if there is a specific reason to do so.