IMHO, there's nothing wrong with using RegisterComponents in your runtime package. No designtime code is involved. It's even useful when you want to have a single runtime and designtime package: At designtime, the IDE will call your Register procedure and register your components. At runtime, Register procedure is not called, except if you call it yourself, but then you'd get an EComponentError with message 'Invalid component registration' because RegisterComponentsProc is nil outside of the IDE.