Explain Codes LogoExplain Codes Logo

How to delete a localStorage item when the browser window/tab is closed?

javascript
localstorage
sessionstorage
onbeforeunload
Alex KataevbyAlex Kataev·Aug 17, 2024
TLDR

To clear a specific localStorage item immediately once the browser window or the tab is closed, use the window.onbeforeunload event:

window.onbeforeunload = () => localStorage.removeItem('keyToDelete');

Replace 'keyToDelete' with the actual key name in your localStorage. This piece of code will make sure that this item is deleted as soon as you leave the page.

Working with onbeforeunload

The window.onbeforeunload event is not the most reliable. 😢 Browsers protect users from aggravating, intrusive dialogs by potentially ignoring or limiting onbeforeunload dialogs. This might be surprising, but we have to deal with it.

Utilizing sessionStorage

If your data doesn't need to stick around after the end of a browser session, consider using sessionStorage instead. It's automatically cleared once the browser or the tab is closed, which simplifies the data lifespan management. You don't need to do the cleaning job yourself! 🎉

Binding Removal to Specific Events

For a more fine-grained control over when your data gets deleted, bind the localStorage.removeItem(key) to very specific events, like a button click or a page navigation event. Because sometimes onbeforeunload just doesn't cut the mustard.

Clearing Out Multiple Keys

Sometimes, you just have too much stuff. If you need to get rid of multiple items from your localStorage, using a handy helper can be a great option:

function massRemoval() { const bagOfKeys = ['key1', 'key2', 'key3']; bagOfKeys.forEach((key) => { // It's cleaning day! localStorage.removeItem(key); }); } window.onbeforeunload = massRemoval;

Swap out 'key1', 'key2', 'key3' for your own localStorage keys. It's a clean slate every time you leave.

Full Wipe: Clear All

Got too much clutter? Hit the emergency button with localStorage.clear();. But be extra cautious: this isn't just spring cleaning, it's more like a volcano eruption — everything goes away! 🌋

Confirming User Action

If you want to be extra sure that the user really wants to leave (and delete their data), you can use a confirmation dialog that pops up when they try closing the tab:

window.onbeforeunload = function(e) { // Leaving so soon? 🥺 e.preventDefault(); e.returnValue = ''; // Optionally, trigger your cleaning procedure here };

Cross-Browser Compatibility

Just like our favourite TV shows, onbeforeunload may vary from browser to browser. Some browsers, I'm looking at you, Safari, can be a bit rebellious and not fully support this event. Make sure to test your exit cleaning strategy in all browser environments your users might use.