Hello,
I have written a bootloader but also rely on interrupts for UART, etc.
What might seem confusing is that the actual flash command processing must occur in SRAM (e.g., FlashCommandSequence), but separately if you are going to overwrite your ROM vector table, it has to get relocated to SRAM as well.
For my bootloader, if I'm going to flash sections like my boot config tables, I have to ensure that all of this is running in SRAM as well. I use scatter loading and have a dedicated region in SRAM to hold a copy of my main bootloader application. I copy all of my flash memory over to the SRAM location and adjust the SRAM copy of the vector table to be offset by the SRAM base (see below).

Once you relocate your code and change VTOR to point to the newly updated vector table, you can "jump" to the bootloader in SRAM and re-enable interrupts. Your UART ISR, etc. will get called from your relocated copy in SRAM.