Onboarding VC?

At the end of my app's development now (a simple single view app) I am trying to write the steps to an interractive onboarding experience and quickly realised that it should be inside its own ViewController.

I haven't used storyboards for this project and would like to keep it this way, what tutorial would I best use to programatically switch to the onboarding VC for that first time and am I going about this the right way ?

I learnt that placing a segue to a VC in the viewDidLoad will rip it away before the current view controller's view has been added to the view hierarchy and it best to add it into the viewDidAppear method instead:

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        let newViewController = Onboarding()
        self.present(newViewController, animated: true, completion: nil)
    }

Of course, it best to prevent any actions on the main VC from executing in its respective viewDidLoad until onboarding is completed.