Try to preserve custom icon even if image file is moved
We had an issue with someone using custom icons for folders quite massively, then the icons all broke when the image folders got relocated. https://girinstud.io/news/2018/01/how-to-fix-broken-custom-file-icons-gio-nautilus/
This is not nice because: (1) You can't expect people to never ever change their organization. So custom icons should not rely on the images never moving/being renamed. (2) When this happens, you may have hundreds of broken icons and no easy way to fix them. You could do one by one in Nautilus, but even this doesn't give you the name of the previous icon (when used as status as was the case here, you want to know the previous icon name).
Only way out of it was by a script calling
gio directly. But that's not for everyone to be done.
I propose that Nautilus actually save a copy of the image (or smaller "thumbnails" version of it) used as icons under a subfolder of $XDG_CONFIG_HOME, using some hash to find if the image has previously being used (similarly to how thumbnails are saved in $XDG_CACHE_HOME).
That could be $XDG_CONFIG_HOME/icons/ or something similar (a generic name would allow for further Freedesktop standardization). Subsequentely the metadata could still point to the original path, but would fallback to use the copy in $XDG_CONFIG_HOME/icon when the original path doesn't exist anymore.