I have a reasonably complex ContentPanel with about 50 widgets on it.
When the panel is opened via dialog box then there is no problem. Firefox renders the widgets off-screen and then shows the whole dialog box at once. Its fast.
However, when I dynamically create TabItem and add this panel to it then Firefox renders everything on the screen. This shows down opening the TabItem and does not look good.
Other browsers (IE, Chrome, Opera, Safari) don't do it.
Sorry, answer to what? The original post is almost three years old, no code was provided, and the sample doesn't exist anymore. Do you have your own sample you can share? And how does the dialog '[render] the widgets off-screen'? GXT supports lazy rendering, hideMode=OFFSETS, but any way that does a render and can measure things must be more expensive than rendering without displaying content.
TabPanel in 2.x has setDeferredRender to ask the content to render as much as possible before drawing anything on the screen - was that tried, or did it not work?