Concerning flext, it uses g_canvas.h quite conservatively and i think it would be even possible to avoid it with the loss of some comfort (attribute editor).
I think this is a very wise decision.
First, the user should decide - i'm not about to throw it out, but there should be a preprocessor definition for it. Second, it's not as easy as i thought because the whole attribute mechanism depends on $-aware saving and reloading. canvas_realizedollar is needed for that, like in the iem-guis. It's one of the examples where internals are obviously differently treated from externals. It seems a solution would be that all externals are put into pd itself, so there's no need for an API.
best greetings, Thomas