         self.userDefaults.register(defaults: [ThemeKeys.systemThemeIsOn: true,
                                               ThemeKeys.NightMode.isOn: NSNumber(value: false)])
 
-        self.currentTheme = generateInitialTheme()
+        changeCurrentTheme(loadInitialThemeType())
 
         setupNotifications(forObserver: self,
                            observing: [UIScreen.brightnessDidChangeNotification,


    func changeCurrentTheme(_ newTheme: ThemeType) {
        guard currentTheme.type != newTheme else { return }
        // TODO: Check for nightmode FXIOS-4910
        currentTheme = newThemeForType(newTheme)
        appDelegate?.window??.overrideUserInterfaceStyle = currentTheme.type.getInterfaceStyle()



    // MARK: - Private methods

    private func loadInitialThemeType() -> ThemeType {
        if let nightModeIsOn = userDefaults.object(forKey: ThemeKeys.NightMode.isOn) as? NSNumber,
           nightModeIsOn.boolValue == true {
            return .dark
        }
        var themeType = getSystemThemeType()

        // TODO: Temporarily use user defaults directly until we figure out how to manage these values FXIOS-5058
        if let savedThemeDescription = UserDefaults.standard.string(forKey: ThemeKeys.themeName),
           let savedTheme = ThemeType(rawValue: savedThemeDescription) {
            themeType = savedTheme
        }
        return themeType
    }

    private func getSystemThemeType() -> ThemeType {
