Configuration values required by a component can change over time. Because some configuration fields can be modified by other components it is important to take care when changing a component's configuration schema to avoid breaking other components that may depend on it.
This guidance only applies to configuration fields that have a mutability specifier. Modifying fields without mutability does not require special care, as the values are always provided by the component's configuration value file.
No special considerations are required, as all configuration fields require a base/default value to be in a component's configuration value file and there will be no existing providers of the configuration from outside that component.
Safely removing a mutable configuration field from a component's schema will require first working with configuration providers to ensure they are no longer passing any overrides for the field that will be removed.
If as a component author you want to remove a configuration field from your component that has a mutability specifier:
mutability: [ "parent" ] then you should identify any parent components that provide values for that field.mutability specifier.Renaming a field is equivalent to adding a newly named field and removing the existing field.
If as a component author you want to rename a configuration field that has a mutability specifier:
Changing a mutable field's type requires either using a new name or eliminating all overriders before changing the type.
Increasing a field's max_len or max_size constraint is always safe.
Reducing a field's max_len or max_size constraint is only safe if all externally-provided values are within the new range.