That could mess up versioning.
Lets say you update that schematic from a different project, then the project changes silently, but the PCB file doesn’t update, and even when you would update it, the physical PCB doesn’t update, so you would have to create a new version but without actually making a PCB. And then how do you go back to view the older version? You have to go back in 2 different projects. (What do you use for version controlling?)
I just copy the files, when something changes it can be done in the schematic and the PCB and i have to touch only one project.
If you have a lot of them, you can make a new folder, with its own version controlling, where you only have common sheets stored and when you update something you update it there, the newest version is always there. When you work on a project you check if the version in your project is still up to date with the one in this folder, and if not you copy it and make sure everything is consistent on your current project.
This is a bit more manual work, but it is always clear which version contained what and you schematic and PCB don’t go out of sync in a uncontrolled way.
but it is also helpful for sub testing PCB purposes.
I am realized that the insert schematic content method it actually allowing reuse other schematic files, but it seems to have some bugs for finding referenced files
How?
It needs more manual work but you can do changes without messing up any project.
Why do you think the footprints are not automatically updated from the library? Because it would mess up your PCB versions. We need to do controlled changes that don’t change anything we don’t know.
but it seems to have some bugs for finding referenced files
The other problem with file links are problems where the path changes, where you change the operating system and the link doesn’t work anymore, …
I once tried this for C source code.
It turns out that some of the IDE’s can not work with this.
What probably happens, when a modified file is saved:
The old file is renamed to a backup file.
The data is written to a new file, with the name of the original file.
For “normal” use the difference is negligible, but when you are using file links (Either hard or soft), then this breaks. I do not know how KiCad handles this, but it should be quite easy to check for yourself.