When you open an asset (like a Blueprint) which has a viewport, a new world is created.

The world is initialized by the FPreviewScene in the constructor (FPreviewScene::FPreviewScene) using UWorld::InitializeNewWorld.

The FSCSEditorViewportClient::Tick ticks the preview scene’s world.

See also Thumbnail renderer

Actor & Components in preview

The preview actor is made on first tick (FBlueprintEditor::Tick FBlueprintEditor::UpdatePreviewActor). It is spawning the actor from the GeneratedClass of the Blueprint. You can get this preview actor instance from the Simple Construction Script with GetComponentEditorActorInstance

The components are made by the SCS in USimpleConstructionScript::ExecuteScriptOnActor by using the USCS_Node::ExecuteNodeOnActor calls, which are called on child nodes for each given node.

This function uses AActor::CreateComponentFromTemplate to construct the actual UActorComponent object.

Refresh/Invalidation

When you do things in the Blueprint Editor (ex: in the UI, Compiling) or when you reopen the viewport tab FSCSEditorViewportClient::InvalidatePreview will be called.

This will call FBlueprintEditor::UpdatePreviewActor. Which calls AActor::ReregisterAllComponents and AActor::RerunConstructionScripts. This will run again the SCS and spawn the components as explained in the above section.