Why does Refind break when upgrading from Mac OS High Sierra (HFS) to Mojave (APFS) on NVMexpress Macs?
Solution: 

EDIT: Thank you to @DavidAnderson for pointing out that the driver file "hfs_x64.efi" is what causes the Mac to be able to see the bootable container on the mac. Please see his answer for a better explanation.

The solution is very brief and involves installing the "driver_x64" folder included with the refind download in refind-bin_X/refind/drivers_x64.

Simply drag and drop this "drivers_x64" folder into the EFI/EFI/refind directory after mounting the EFI. Your EFI refind folder should look like this:



Below are some useful commands that helped me.

How to check which mac model I have

You can enter the following in terminal to see your model number:

system_profiler SPHardwareDataType | grep "Model Identifier:"


How to check if my Mac has NVMExpress

Newer macs will most likely have the NVMExpress SSD Controller. But if you are curious in learning what kind of connection you are using, you can input the following commands, separately. 

If your device is SATA it will return the info regarding your SATA hard drive and the connection. 

If your device is NVMExpress then it will return info regarding your NVMExpress Hard drive and the connection. Of course if your device is not NVMexpress then it will return nothing.

system_profiler SPNVMeDataType
system_profiler SPSerialATADataType


Example: 



Please note that the version of Refind will affect which Volumes you would be able to boot up from. I tested this on Refind version 10.4 and 11.4.

From my testing I found that with 10.4 you will only be able to see the "Macintosh HD" volume.

Any version after and including 11.1 are designed to see the Preboot Volume that comes installed with the upgrade to Mac Os Mojave. For more info regarding Refind revisions you can go here:

http://www.rodsbooks.com/refind/revisions.html

I do find it strange that within the driver folder there is no explicit mention of an "apfs.efi" driver. I probably plan to bring this up to the developer. But it still seems to fix this issue. See below for what I mean:



I hope this helps! This was breaking my head for over a week until this simple solution occurred to me. Hopefully it helps you as well.