Do we also want a dedicated method to restore tabs again (use case e.g. https://addons.mozilla.org/en-US/android/addon/tabpreloader/), or just allow e.g. the reload method to handle that case (which might or might not still require some code changes to correctly restore unloaded tabs)?
No, there's a corresponding tab `discarded` property that they should be able to set via `tabs.update` if we want to support that functionality. I'm frankly annoyed that even this method exists, rather than just the ability to set that property via `tabs.update` in the first place. I'm considering just implementing it as a compatibility stub that calls `tabs.update`.
I've got no real experience of that API, so thanks very much for the answer, sounds okay.
Just FYI, since I'm guessing that people will be less familiar with Android: At least for the time being (until somebody gets around to implementing unlinked browsers on Android as well) an unloaded tab on Android can be recognised by looking for tab.browser.__SS_restore and/or tab.browser.getAttribute("pending"). As for the actual act of discarding/restoring a tab, the tab object on Android has "zombify"/"unzombify" methods (https://dxr.mozilla.org/mozilla-central/rev/96e18bec9fc8a5ce623c16167c12756bbe190d73/mobile/android/chrome/content/browser.js#3813) which will do all the necessary work. Also, I've no idea in how far this might be relevant, but zombifying a tab involves destroying the original browser, so any event listeners that were attached directly to that browser become invalid. We've got TabPreZombify/TabPostZombify events so anybody affected can remove and re-add its event listeners again.