CM6: Dynamically change extensions based on state field

I’m trying to configure my editor state so that the language and theme change when a specific state field changes. I tried creating a Facet and using compute() to return the correct extension based on the state field, but that seems to just register a FacetProvider in the extensions instead of the extension itself. Is there a way to do this, or do I always need to manually reconfigure the extensions?

You need to reconfigure them, probably using a labeled extension. See this for an example.