Every feature that the server code knows about can be UI-Relevant or Public. You'll see this in code like:

public static FeatureList Catalog = new FeatureList(new List<Feature>
{
// released features
new Feature(FeatureIds.PublicForms, true, false),
new Feature(FeatureIds.PublicUpload, true, false),

...

Here's what it means:

  • UI means that this information is needed by the normal edit-ui, because this feature status will be needed in JavaScript. Setting it to true means that it will be provided in the features webapi for lookup.
  • Public means that this information will also be given to JavaScript in cases where the user is not logged in. So some UI features may be important, but we don't want to have public users know that it's activated or not, so we won't let them know this.