depending on which browser you are using there are slight changes to the api's accessable to web sites depending if you are in private mode or not. For example, in firefox private mode service workers are not avalable so a simple check to see if navigator.serviceWorker is undefined is all you need. Other browsers have other tells such as what types of storage are avilable, the size of storage (if avalable).