I'm adding messages to FacesMessages from within a factory method (@Factory)
The issue is that the messages appear only at the next browser request.
i tried both to bind facesmessages with injection and using FacesMessages.instance().
Yes, this is expected. Once your factory method is called the render has already started. Seam enqueues the message until the next render. Probably adding the messages directly to the faces context should work.