Well, there are the xtypes which are IMHO a good way to define your component tree (as they are created on demand).
But I cannot understand why the built-in ExtJS widgets are registered to the Ext.Loader. It would be good if there's a registration for xtypes like
Ext.registerClassForXType ('grid', 'Ext.grid.Panel');
So, if an xtype isn't found and Ext.Loader is activated the class will be loaded first. The standard widgets should be registered by default.
It seems that Ext.ClassManager.instantiateByAlias does this. It's not used internally I think. Why?
P.S.: Same problem exists with layouts as "layout:'border'" does not work without an Ext.require.