OK, I believe I have found the cause of the problem. The problem happens when I add a viewstack that is part of a container being added to a state with <mx:AddChild>
If I set up a sample app with a tab navigator and three canvases, each tracing preinit, init, and creationComplete then I get this: Canvas 1 preinit Canvas 2 preinit Canvas 3 preinit Canvas 1 init Canvas 1 creationComplete This is as expected. If however, I use states (create a new state, add the tabnavigator to the state with AddChild, then activate the state) I get this: Canvas 1 preinit Canvas 1 init Canvas 2 preinit Canvas 2 init Canvas 3 preinit Canvas 3 init Canvas 1 creationComplete Canvas 2 creationComplete Canvas 3 creationComplete This is the problem! The application is driven by states (init, login, and runtime) and each state "draws" the gui by adding a vbox container with the gui inside it. ALL of my viewstack containers are getting initialized because of creationComplete firing! How do I make navigator deferred instantiation work with states?