I have a global class member in a managed package that I am working on with type Id. Can this member be changed to a type String in a future release of the package?
Once it has been released to production via a managed package my understanding is that it is locked in from that point forward.
You will get an error along the lines of:
Save error: Global/WebService identifiers cannot be removed from managed application: Method: foo bar
There are a couple of suggestions via Remove 'Public and Private' tagging from being required in managed package
'Roll-back', ask all managed package installations to uninstall the package. At which point the elements in question will be unlocked and allowed to be re-added as beta components.
Create a new 'Namespaced' package based on the original code, resubmit for security review, and ask any users whom you wish to have the updated code, to uninstall your original package, and than install this new package.
Another option would be to annotate the variable with
@deprecated and then switch to a new variable.