The conversation scope can be a problematic scope for FacesMessages. Often the developer may wish to end a conversation "before-redirect" and communitcate a message to the next page. However, this doesn't work since by default FacesMessages is a conversation scoped component.
If FacesMessages were allowed to be a Session scoped component project wouldn't have this issue at the expense of a less correct concurrency situation (multiple pages rendered at the same time from the same session may mix up messages).
That said it would be nice to give the project a choice. The scope for FacesMessages can be overridden to be Session scoped, however, the static :"instance()" method currently only looks in the conversation scope so the scope essentially cannot be overridden.
This feature request is to change FacesMessages.instance() to not force lookup in the conversation scope allowing projects if they wish to override FacesMessages' scope if they wish.
I will plan on committing the change myself for 2.2.1 unless someone objects.