I use SPI NOR flash chips, like Winbond W25Q line. Same advantages of SD card but significantly smaller, cheaper, and no connector to worry about.
Instead of using the SDFAT library, I use this library:
Of course you need a way to load it from the MCU since you can’t just eject it and put it into a computer, so that would be a downside I guess.