The PKCE flow made absolutely no sense to me so I didn’t bother with it. The “code_challenge” made no sense on what it is, how you get it or make it, or what you ultimately do with it that makes this process different. So I stuck to the Code Flow.
I do start from within the user’s own WordPress website on my plugin settings page. Setting up my own proxy site is fine as I already do that for my Stripe connection integration as well.
I just read this post - OAuth now supports PKCE - and I think how the “code_challenge” works makes sense more now, but I already built it all yesterday with the code flow and it works.