[OnePlus 3 & 3T Cross Device Themes, Apps & Mods] :
I am on NOS 10 at the moment and started with a new, in fact my old approach.

Not using Magisk or SuperSU and keeping it as default as possible.

Using adb to disable packages without removing, next step will be a short twrp cleanup script once a month for cache and other crap files.

Using the following bat file for disabling packages and setting some optimised doze settings:

:setup

@echo off
color 0A
cls

echo.
echo Connect device...
adb devices

:packages

echo.
echo Disable packages...

:: Tag
adb shell pm disable-user --user 0 com.android.apps.tag
adb shell am force-stop com.android.apps.tag
adb shell pm clear com.android.apps.tag

:: BackupRestoreConfirmation
adb shell pm disable-user --user 0 com.android.backupconfirm
adb shell am force-stop com.android.backupconfirm
adb shell pm clear com.android.backupconfirm

:: BuiltInPrintService
adb shell pm disable-user --user 0 com.android.bips
adb shell am force-stop com.android.bips
adb shell pm clear com.android.bips

:: BluetoothMidiService
adb shell pm disable-user --user 0 com.android.bluetoothmidiservice
adb shell am force-stop com.android.bluetoothmidiservice
adb shell pm clear com.android.bluetoothmidiservice

:: BookmarkProvider
adb shell pm disable-user --user 0 com.android.bookmarkprovider
adb shell am force-stop com.android.bookmarkprovider
adb shell pm clear com.android.bookmarkprovider

:: Calendar
adb shell pm disable-user --user 0 com.android.calendar
adb shell am force-stop com.android.calendar
adb shell pm clear com.android.calendar

:: CallLogBackup >> HAVE TO TEST!!
adb shell pm disable-user --user 0 com.android.calllogbackup
adb shell am force-stop com.android.calllogbackup
adb shell pm clear com.android.calllogbackup

:: CaptivePortalLogin
adb shell pm disable-user --user 0 com.android.captiveportallogin
adb shell am force-stop com.android.captiveportallogin
adb shell pm clear com.android.captiveportallogin

:: CellBroadcastReceiver
adb shell pm disable-user --user 0 com.android.cellbroadcastreceiver
adb shell am force-stop com.android.cellbroadcastreceiver
adb shell pm clear com.android.cellbroadcastreceiver

:: CompanionDeviceManager
adb shell pm disable-user --user 0 com.android.companiondevicemanager
adb shell am force-stop com.android.companiondevicemanager
adb shell pm clear com.android.companiondevicemanager

:: Contacts
adb shell pm disable-user --user 0 com.android.contacts
adb shell am force-stop com.android.contacts
adb shell pm clear com.android.contacts

:: CtsShimPrebuilt
adb shell pm disable-user --user 0 com.android.cts.ctsshim
adb shell am force-stop com.android.cts.ctsshim
adb shell pm clear com.android.cts.ctsshim

:: CtsShimPrivPrebuilt
adb shell pm disable-user --user 0 com.android.cts.priv.ctsshim
adb shell am force-stop com.android.cts.priv.ctsshim
adb shell pm clear com.android.cts.priv.ctsshim

:: DocumentsUI
adb shell pm disable-user --user 0 com.android.documentsui
adb shell am force-stop com.android.documentsui
adb shell pm clear com.android.documentsui

:: BasicDreams
adb shell pm disable-user --user 0 com.android.dreams.basic
adb shell am force-stop com.android.dreams.basic
adb shell pm clear com.android.dreams.basic

:: PhotoTable
adb shell pm disable-user --user 0 com.android.dreams.phototable
adb shell am force-stop com.android.dreams.phototable
adb shell pm clear com.android.dreams.phototable

:: DynamicSystemInstallationService
adb shell pm disable-user --user 0 com.android.dynsystem
adb shell am force-stop com.android.dynsystem
adb shell pm clear com.android.dynsystem

:: EasterEgg
adb shell pm disable-user --user 0 com.android.egg
adb shell am force-stop com.android.egg
adb shell pm clear com.android.egg

:: Email
adb shell pm disable-user --user 0 com.android.email
adb shell am force-stop com.android.email
adb shell pm clear com.android.email

:: ExternalStorageProvider
adb shell pm disable-user --user 0 com.android.externalstorage
adb shell am force-stop com.android.externalstorage
adb shell pm clear com.android.externalstorage

:: Gallery2
adb shell pm disable-user --user 0 com.android.gallery3d
adb shell am force-stop com.android.gallery3d
adb shell pm clear com.android.gallery3d

:: InputDevices
adb shell pm disable-user --user 0 com.android.inputdevices
adb shell am force-stop com.android.inputdevices
adb shell pm clear com.android.inputdevices

:: DisplayCutoutEmulationCorner
adb shell pm disable-user --user 0 com.android.internal.display.cutout.emulation.corner
adb shell am force-stop com.android.internal.display.cutout.emulation.corner
adb shell pm clear com.android.internal.display.cutout.emulation.corner

:: DisplayCutoutEmulationDouble
adb shell pm disable-user --user 0 com.android.internal.display.cutout.emulation.double
adb shell am force-stop com.android.internal.display.cutout.emulation.double
adb shell pm clear com.android.internal.display.cutout.emulation.double

:: DisplayCutoutEmulationTall
adb shell pm disable-user --user 0 com.android.internal.display.cutout.emulation.tall
adb shell am force-stop com.android.internal.display.cutout.emulation.tall
adb shell pm clear com.android.internal.display.cutout.emulation.tall

:: LocalTransport
adb shell pm disable-user --user 0 com.android.localtransport
adb shell am force-stop com.android.localtransport
adb shell pm clear com.android.localtransport

:: ManagedProvisioning
adb shell pm disable-user --user 0 com.android.managedprovisioning
adb shell am force-stop com.android.managedprovisioning
adb shell pm clear com.android.managedprovisioning

:: Music
adb shell pm disable-user --user 0 com.android.music
adb shell am force-stop com.android.music
adb shell pm clear com.android.music

:: MusicFX
adb shell pm disable-user --user 0 com.android.musicfx
adb shell am force-stop com.android.musicfx
adb shell pm clear com.android.musicfx

:: NfcNci
adb shell pm disable-user --user 0 com.android.nfc
adb shell am force-stop com.android.nfc
adb shell pm clear com.android.nfc

:: OneTimeInitializer
adb shell pm disable-user --user 0 com.android.onetimeinitializer
adb shell am force-stop com.android.onetimeinitializer
adb shell pm clear com.android.onetimeinitializer

:: PrintRecommendationService
adb shell pm disable-user --user 0 com.android.printservice.recommendation
adb shell am force-stop com.android.printservice.recommendation
adb shell pm clear com.android.printservice.recommendation

:: QuickSearchBox
adb shell pm disable-user --user 0 com.android.quicksearchbox
adb shell am force-stop com.android.quicksearchbox
adb shell pm clear com.android.quicksearchbox

:: SettingsIntelligence
adb shell pm disable-user --user 0 com.android.settings.intelligence
adb shell am force-stop com.android.settings.intelligence
adb shell pm clear com.android.settings.intelligence

:: SharedStorageBackup
adb shell pm disable-user --user 0 com.android.sharedstoragebackup
adb shell am force-stop com.android.sharedstoragebackup
adb shell pm clear com.android.sharedstoragebackup

:: SimAppDialog
adb shell pm disable-user --user 0 com.android.simappdialog
adb shell am force-stop com.android.simappdialog
adb shell pm clear com.android.simappdialog

:: Stk
adb shell pm disable-user --user 0 com.android.stk
adb shell am force-stop com.android.stk
adb shell pm clear com.android.stk

:: Terminal
adb shell pm disable-user --user 0 com.android.terminal
adb shell am force-stop com.android.terminal
adb shell pm clear com.android.terminal

:: Traceur
adb shell pm disable-user --user 0 com.android.traceur
adb shell am force-stop com.android.traceur
adb shell pm clear com.android.traceur

:: UserDictionaryProvider
adb shell pm disable-user --user 0 com.android.providers.userdictionary
adb shell am force-stop com.android.providers.userdictionary
adb shell pm clear com.android.providers.userdictionary

:: VpnDialogs
adb shell pm disable-user --user 0 com.android.vpndialogs
adb shell am force-stop com.android.vpndialogs
adb shell pm clear com.android.vpndialogs

:: WallpaperBackup
adb shell pm disable-user --user 0 com.android.wallpaperbackup
adb shell am force-stop com.android.wallpaperbackup
adb shell pm clear com.android.wallpaperbackup

:: LiveWallpapersPicker
adb shell pm disable-user --user 0 com.android.wallpaper.livepicker
adb shell am force-stop com.android.wallpaper.livepicker
adb shell pm clear com.android.wallpaper.livepicker

:: AntHalService
adb shell pm disable-user --user 0 com.dsi.ant.server
adb shell am force-stop com.dsi.ant.server
adb shell pm clear com.dsi.ant.server

:: HTMLViewer
adb shell pm disable-user --user 0 com.android.htmlviewer
adb shell am force-stop com.android.htmlviewer
adb shell pm clear com.android.htmlviewer

:: WfdService
adb shell pm disable-user --user 0 com.qualcomm.wfd.service
adb shell am force-stop com.qualcomm.wfd.service
adb shell pm clear com.qualcomm.wfd.service

:: datastatusnotification
adb shell pm disable-user --user 0 com.qti.qualcomm.datastatusnotification
adb shell am force-stop com.qti.qualcomm.datastatusnotification
adb shell pm clear com.qti.qualcomm.datastatusnotification

:: CNEService
adb shell pm disable-user --user 0 com.quicinc.cne.CNEService
adb shell am force-stop com.quicinc.cne.CNEService
adb shell pm clear com.quicinc.cne.CNEService

:: SoterService
adb shell pm disable-user --user 0 com.tencent.soter.soterserver
adb shell am force-stop com.tencent.soter.soterserver
adb shell pm clear com.tencent.soter.soterserver

:: Unknown
adb shell pm disable-user --user 0 org.chromium.webview_shell
adb shell am force-stop org.chromium.webview_shell
adb shell pm clear org.chromium.webview_shell

:: DO NOT DISABLE WHEN USING PASSWORD:
:: LatinIME - com.android.inputmethod.latin

:: DO NOT DISABLE WHEN NO OTHER LAUNCHER IS USED:
:: Launcher3QuickStep - com.android.launcher3

:: DO NOT DISABLE AT FIRST BOOT:
:: OneTimeInitializer - com.android.onetimeinitializer

:: DO NOT DISABLE ON NITROGEN BECAUSE OF CRASH ON BOOT:
:: WallpaperCropper - com.android.wallpapercropper

:doze

echo.
echo Modify doze settings...

:: Remove old modified settings
adb shell settings delete global device_idle_constants

:: Enable doze
adb shell dumpsys deviceidle enable

:: To put phone in deep sleep immediately
adb shell dumpsys deviceidle force-idle

:: Modified doze settings
adb shell settings put global device_idle_constants inactive_to=15000,sensing_to=0,locating_to=0,location_accuracy=20.0,motion_inactive_to=0,idle_after_inactive_to=0,idle_pending_to=60000,max_idle_pending_to=120000,idle_pending_factor=2.0,idle_to=900000,max_idle_to=86400000,idle_factor=2.0,min_time_to_alarm=600000,max_temp_app_whitelist_duration=10000,mms_temp_app_whitelist_duration=10000,sms_temp_app_whitelist_duration=10000

:reboot

echo.
echo Press button to reboot phone...
pause

adb reboot