Modifying custom fields after a managed package is released

This is old news to those who read release notes carefully, but in case you (like me) missed this important (for managed package publishers) improvement:

Starting with Spring ‘12, you can make changes to some properties of custom fields, such as the length of text fields or the precision of numeric fields, after a package is released. This feature enables greater flexibility in upgrading packages. However, it must be used with caution as some types of changes can lead to data loss or cause existing API or Apex requests to break.

The following changes are allowed to custom fields in a package, after it is released.

  • The length of a text field can be increased or decreased.
  • The number of digits to the left or right of the decimal point in a number field can be increased or decreased.
  • A required field can be made non-required and vice-versa. If a default value was required for a field, that restriction can be removed and vice-versa.

Before this improvement it was necessary to add a new field to change these properties which had many negative consequences.

Note that these changes are possible in patch releases as well as in normal releases.