ember-optional-features icon indicating copy to clipboard operation
ember-optional-features copied to clipboard

Expose a module for runtime detection of opt-in/opt-out.

Open rwjblue opened this issue 7 years ago • 5 comments

At times, addons will need to know if specific optional features are enabled or not. With the current architecture it is only possible to detect at runtime via window.EmberENV._SOME_FLAG_HERE, but we should not encourage that type of coupling to EmberENV.

As I see it we have a few options:

  • Provide a @ember/optional-features module that can be imported and checked for various opt-in's. This would allow consumers to use an import and conditionals in their code based on a given optional flag value.
  • Expose a custom babel plugin that can be used when an addon includes @ember/optional-features as a direct dependency. This babel plugin would provide custom build time replacement of @ember/optional-features based conditionals, and would therefore allow addons to include support for multiple variations of features without bloating the total asset size.

rwjblue avatar Feb 10 '18 14:02 rwjblue

@chancancode - Thoughts?

rwjblue avatar Feb 10 '18 14:02 rwjblue

Oh, also, IMHO we should do both options...

rwjblue avatar Feb 10 '18 14:02 rwjblue

This should probably also expose whether the user explicitly opted in/out (as opposed to simply accepting the default), so it can be used to address https://github.com/emberjs/ember.js/issues/16849.

bendemboski avatar Sep 13 '18 23:09 bendemboski

Ya, agreed, though I think that it may need to be a separate API. I think most of the time you just want to know enabled or disabled, but in a somewhat rare set of cases you care if the user explicitly chose the setting or not...

rwjblue avatar Sep 17 '18 20:09 rwjblue

As there has been no movement on this, Ember Twiddle will be using EmberENV as an intimate api.

Gaurav0 avatar Mar 05 '20 23:03 Gaurav0