Quick answer: Unity build stripping keywords specified in a ShaderVariantCollection? Collection must be referenced from a Resources folder or registered in Always Included.

Authored variant collection; build strips the variants; runtime hits black pink because keyword not compiled.

Place in Resources

Resources/ShaderVariants.shadervariants. Auto-included; variants compiled.

Or add to graphics settings

Project Settings > Graphics > Preloaded Shaders. Explicit reference; preserved.

Verify in build log

Build report shows variants. Missing = the strip happened; reference wasn't enough.

“Stripping is reachability-based. Variant collections need reachability.”

If you author variant collections, place them where stripping respects. Document.

Related reading