I actually have the same problem; but after some investigation, I just use it's recommended way, to create a wrap endpoint like /assets/image/<path> or something, here it can read R2 stuff and return it back to frontend, so you can have a customized url to use
Might not be the best, but it works