I have an older XPS where where the CPU still supports deep sleep (S3).
Most distros have it disabled by default now because neither AMD not Intel seem to officially support it in new CPUs (so windows will have the same problem)
To check if your cpu supports it, you can run:
journalctl | grep S1
You should see a message that says something like CPU supports S1 S2 S3 etc. if S3 is there then deep sleep is supported and can be enabled.
Ubuntu instructions: https://askubuntu.com/questions/1029474/ubuntu-18-04-dell-xps13-9370-no-longer-suspends-on-lid-close/1036122#1036122
Fedora desktop or atomic instructions: https://discussion.fedoraproject.org/t/laptop-appears-to-sleep-but-not-suspend/77193/4
Note, this is purely the fault of CPU manufacturers for being so shitty about proper sleep and yet another point that has to be conceeded to apple. Imagine explaining to a normal person that your XPS is really good and way cheaper than a Mac...but the batter will die overnight when you need it in the morning. Literally just shooting themselves in the foot.
Hibernate works as well but takes a bit longer. Hibernate also crashes in many modern systems but again works great in my older XPS. You have to manually activate this as well and it's really not to bad with a good ssd.
That being said his should all be very basic functionality so why do I have to do this manually. This shit is why people buy Macs.
There's also room for distros to improve here. The installer can probe the CPU and see if S3 is supported, if so it can use deep sleep automatically. Why do I have to mess with Kernal arguments?
Similar for hibernate, why doesn't the installer just have a check box that sets up the hibernate file/partition?