This guide is for non-rooted, stock-firmware phones. It is geared more towards getting good stand-by times, but of course this will also benefit screen-on time. It has some OnePlus-specific things but also many non-specific to one manufacturer. It does not contain miracle information, but from my experience it can help quite a bit. It assumes that you keep phone, mobile data, Wi-Fi and sync enabled at all times. Those are core features of any phone and are not means to save battery. The optimization steps are listed in the order which I think impacts battery life. You may or may not apply some or all of the things listed, depending on your own needs.
1. Go to Settings->Battery->Battery optimization->[tap on the 3 vertical dots on the upper right corner] and enable the phone's "Advanced Battery Optimization" (aka. Aggressive Doze) feature, while at the same time whitelisting apps from which you need instant notifications, like Whatsapp or Outlook, etc. For other apps notifications may be delayed. Some applications like AdBlock Plus for Samsung browser also need whitelisting to work properly. Just go by trial and error with finding which applications need whitelisting.
2. Enable "Developer Mode" by going to Settings->About Phone and tapping 7 times on the "Build Number". Then go to Settings->Developer Options and enable the "App Wi-Fi Multi/Broadcasting Filter" option. I did not find any app impacted negatively by this, even casting to Chromecast works fine.
3. Go to Settings->Display->Ambient Display and disable the "Lift up display" and "Wake screen on notifications" options (which are useless compared to a true Always-On Display option anyway), and instead put the phone's RGB notification LED to good use. The Light Flow (one of many, but in my opinion the best) app can customize the LED color for different types of notifications, as well as setting a priority or cycling between colors. Since the LED's "always-on" nature, it is actually much more useful than a dead screen that only wakes up when lifted. When I use Light Flow, I set the LED blinking speed to "Always On" and a diffent color for each app. Works much better than any "ambient" mode.
4. Go to Settings->Display->Themes and enable the "Dark Theme". It reduces power consumption for OLED displays such as the one from the OnePlus 6.
5. Social media apps (especially Facebook) are battery hogs because they need to continuously gather your personal data and usage information. If you are only an occasional user, prefer uninstalling those apps and instead using the browser to access your account. This will also benefit you in other areas, like productivity
6. Keep Location off until you need it. This will ensure that the system does not wake up the GPS due to some obscure request from an app that can also work without knowing your location.
7. Go to Settings->Apps->Application list, tap on each app and review permissions. Remove Location permission for apps that you don't want to unknowingly wake up your GPS and draining your battery. I prefer to only allow Location access to Google Maps and Waze but your mileage may vary.
8. Disable Face Unlock. Activating the front camera so often does consume quite a bit of battery, as can be seen in battery stats. And as you may have read, it is not very secure anyway. As the rear-placed fingerprint sensor makes it almost unusable for me (for example I cannot unlock it while in the car cradle or on the desk), I chose to use the Smart Lock features with my Bluetooth smartwatch and my home Wi-Fi network and my phone stays unlocked while my smartwatch is around, which eliminates the necessity for both face unlock and fingerprint reader.
9. Prefer using software from companies that do not live from user data (like Google and Facebook). Collecting as much user information as possible requires wide system access and takes up a lot of battery. I like to replace Gmail with Microsoft Outlook (even for my Gmail addresses) and I use Samsung Internet instead of Chrome. The Samsung browser seems to be the most battery-efficient browser available, way above Firefox. Microsoft Edge may also be a good alternative.
10. Use an ad-blocker if supported by your browser. Animated ads and additional loading of ad-related content contributes quite a bit to the web browsing battery drain.
11. Go to Settings->Accounts->Google and for each Google account, tap on it and then disable syncing for information that you do not need synced. Clicking on a Google account shows you sections of info to be synced. Disable what you don't need. For example, you may only need Contacts syncing for your primary Gooogle account and not all of them. Same with Google Fit data, pictures, etc.
12. Go to Settings->Apps->Special Access->Usage Access and disable this access for OnePlus Switch and Google Play Store (not for Google Play Services, it may have unwanted side effects). This stops these apps from consuming system resources and battery to continuously collect usage data.
13. Go to Settings->Apps->Application list and disable applications that you don't need and can be disabled (some cannot be disabled).
14. Opt out of (do not enable) the "send diagnostic information" checkboxes whenever you are asked for, unless you are really selfless and want to give [a percentage of your battery life] to the community Go from app to app and see if it has this or similar setting (sometimes these settings are sugarcoated into "enhance your experience by sending your data to us"). Disable if found.
15. Do not enter your OnePlus account information. This will activate all kinds of data-sending services that will contribute to the battery drain.
16. Wipe cache after each update, especially if you notice worsened battery drain. To wipe cache, turn off the phone, then hold Power + VolDown buttons continuously until it starts, keep holding until a menu appears. After you enter your phone password you can choose "Wipe Cache/Data" section which brings another menu, choose "Wipe Cache" then after confirmation, choose Reboot.
17. If you are not using the landscape mode a lot, prefer to lock the phone rotation in portrait mode (the toggle is present among the quick toggles) and only unlock the rotation when needed. From what I have read, somehow the auto-rotation seems to unnecessarily cause some activity (even wake-locks), and from my experience I did see a bit of improvement from this tweak, looks like more than placebo.
18. If you already have a OnePlus 6, this does not apply. But if you are after ultimate battery life, keep in mind, less chips means less power draw if all else is equal, and RAM memory needs continuous refresh, so a model with 6GB of RAM may be a bit more power-efficient than one with 8GB RAM, especially given the fact that still-large 6GB of RAM virtually guarantees that there will be no extra overhead related too app reloading.
Hopefully this will help some people.
Below you will find some of my usual stand-by times after the optimization. Since update 5.1.7 battery life seems to be improved even further (see last 2 screenshots - with 5.1.7 and 5.1.8).