лейтинит тебе просто замаскировал nullable-at-start переменную под обычную not-nullable, а в коде ты без заглядывания в декларацию и не поймешь этого, и иде даже не подскажет
У вебввью да, у всяких volley/retrofit хоть доли секунды ставь. И это надо дополнить обычными проверками связи от системы через коллбэки нетворк менеджера - если по нему сети нет то точно нет
и т.к. это еще и ЖЦ где оно не с начала существования обьекта живет - и умирать должно не с обьектом (а раньше) чтобы избежать утечек - нах этот лейтинит вообще тогда нужен? если в нулабл ты запишешь null, что ты запишешь в лейтинит свойство? NullObject?
На джаве же эту проблему решают. Инить в onCreate, в конструкторе, в методе который делает сетап класса бросай исключение или обрабатывай если не установлено.