SAMD21 custom bootloader doesn't work after first upload

We have a bootloader for SAMD21J18A microcontroller with a custom board and pinout. We can upload a single program but the USB serial connection goes down and doesn't come back up. I can't access the bootloader through the Arduino IDE or the serial connection that should be available once my program is uploaded (simple hello world program). The power is fully removed between programming and attempting to open the serial port.

Is this a problem with the bootloader?

Does your simple program include a USB driver? Usually once the bootloader is done and your application is running, whatever USB (or SERCOM) code the bootloader used is inactivated. In an actual Arduino sketch, the sketch will always include a minimal CDC driver so that it can detect the "upload" requests.