PKCE and Authorization Extension: required or optional?

I’m confused on reading the documentation for PKCE. Its possible that some documents refer to earlier versions of the flow as well.
The question is whether we can implement PKCE without Authorization Extension? As it stands now the problems with the Authorization Extension seem to follow from a server error that I don’t see how to debug. So, a workaround might involve simply running PKCE without the Authorization Extension
This is for Swift 4, iOS 11 using Xcode 9 and we are eager to get this solved for our self-imposed deadline of the end of the week for release. So, any suggestions on how to implement the PKCE flow correctly would be ideal.

This mostly seems a duplicate of (http://community.auth0.com/questions/11935/authorization-extension-and-non-interactive-client), but just to make it clear. The authorization extension is completely optional; there are authentication flows that can leverage that extension functionality, but the extension itself and its use is completely optional.