How do you detect the designer host getting loaded for the first time in your designer
Subscribe to IDesignerHost.LoadComplete event. Make any changes to the designerhost (like adding/deleting component, etc.) only after this event, or else the design document will not be made "dirty".
(IdesignerSerializationManager.SerializationComplete will tell you when Code is deserialized into design time components).