I always found that how Syncthing handles symlinks to be a little surprising. For example when syncthing between Linux and Android, the sync simply fails.
As specimen on why this is important: the software I code frequently uses symlinks on “/usr/bin”, and it’s backed up on my phone. I had to resort to substitute those links for plain scripts, and my programs now have to run an extra process due to that.
I have been reading your post about how implementing symlinks is problematic among platforms.
Maybe the answer is simpler, doing something worse but effective. That is not syncing symlinks on platforms that don’t support it. But instead substituting the symlink for a plain text file, with a specific extension, with the link reference in it.
file → file.link
#symlink [path to target]
Hence when that file is synced into a platform that supports symlinks it is converted into a symlink, but if the platform doesn’t support them it’s simply the plain text file.
That way you give up those links to be functional, but you can retain the capability of syncing them consistently and in a simple manner among platforms.