As swap is recommended just in case all RAM is maxed it's better to have a swap partition as swap files have certain limitations when in combined use with BTRFS:
"subvolume - cannot be snapshotted if it contains any active swapfiles"
has a chance to fragment
has issues with hibernation (that I've personally encountered multiple times)
I don't see how swap has much chance to fragment. A swapfile has to be fully allocated up front and cannot be CoW. If it's allocated well in the first place, it will stay that way.
The swap code doesn't really do I/O through the filesystem. AIUI, it locks the file, gets the disk block #s from the FS, and after that it accesses those blocks directly.
doesn't this kinda defeat the purpose/benefits of using a swapfile?
This is true for all files. Is it a bigger problem for swap?
specificly swapfiles yes, for swap partitions nope
How long ago did you have these issues?
Dec 2022, was still using and testing with swapfiles then and said fuck it as it caused too much problems.
I can't rule out user error till I retest and strictly "follow the guide to the T" as I made modifications while following the same Arch guide for swapfile with BTRFS
edit:
also for clarification, I'm still not sure which one is optimal/best as I initially thought that using swapfile was forward thinking for the future, I'm using and recommending swap partitions as it seems to be the easiest to implement once and use continuously without any problems atm.
The reason I use a swap file is so that I can have only one partition backed by LUKS disk encryption, rather than having to screw around with lvm which comes with its own performance overhead and all. I've personally never had issues hibernating to.it, but given how much buggy uefi firmware is out there I'm not surprised to hear that other have issues