 #  WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers 

 

  ![WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers](https://cdn.richeyweb.com/images/articles/windownamestore/windownamestore.webp)    - [MDN: window.name](https://developer.mozilla.org/en-US/docs/Web/API/Window/name)
 


In an era where privacy laws like the [GDPR](/blog/development/new-geoip-coming-soon "New GeoIP Coming Soon") (General Data Protection Regulation) and the [EU e-Privacy Directive](/blog/development/server-timing-for-geoip-data-delivery-to-achieve-gdpr-compliance "Server-Timing for GeoIP Data Delivery to Achieve GDPR Compliance") are reshaping how web applications handle user data, [developers](/blog/personal/joomla-numbers-dont-lie "Joomla Numbers Don’t Lie") face a growing challenge: how to manage temporary session data without tripping over cookie consent banners or risking non-compliance. Traditional tools like [cookies](/blog/hosting/varnish-and-joomla "Varnish and Joomla") and localStorage often require explicit user consent in Europe, as they persist data across sessions and can be used for [tracking](/blog/personal/someone-elses-code "Someone Else’s Code"). Enter WindowNameStore—a lightweight JavaScript class that leverages the quirky window.name property to provide a volatile, privacy-conscious alternative for temporary storage, all released under the GPL-v3 license to empower developers everywhere.

## What Is WindowNameStore?

WindowNameStore is a simple, [open-source](/blog/personal/joomla-community-magazine-mention "Joomla Community Magazine Mention!") JavaScript class that wraps the browser’s window.name property into an easy-to-use key-value store. Unlike cookies or sessionStorage, it’s inherently volatile: data lives only as long as the [browser](/test-article "Shader BG Test") window or tab remains open and is wiped when the user navigates to a different domain or closes the tab. Here’s the code:

 ```javascript

class WindowNameStore {
  constructor() {
    try {
      const rawData = window.name || '{}'; // Default to empty object if unset
      this._data = JSON.parse(rawData);
    } catch (e) {
      console.warn('Invalid window.name data, resetting to empty object', e);
      this._data = {};
      this._sync();
    }
  }

  _sync() {
    window.name = JSON.stringify(this._data);
  }

  get(key, defaultValue = null) {
    return key in this._data ? this._data[key] : defaultValue;
  }

  set(key, value) {
    this._data[key] = value;
    this._sync();
  }

  clear() {
    this._data = {};
    this._sync();
  }

  delete(key) {
    delete this._data[key];
    this._sync();
  }
}

// Usage
const store = new WindowNameStore();
store.set('userPrefs', { theme: 'dark', lang: 'en' });
console.log(store.get('userPrefs')); // { theme: 'dark', lang: 'en' }

```

## Why WindowNameStore Shines in Privacy-Restrictive Environments

Under GDPR and the e-Privacy Directive, any mechanism that stores data on a user’s device—especially if it can be used to identify or track them—requires careful consideration. Cookies, even session cookies, often fall under scrutiny because they’re stored on disk and can persist beyond a single interaction unless explicitly configured otherwise. The e-Privacy Directive, in particular, mandates user consent for non-essential cookies, leaving developers scrambling for alternatives when they just need short-term, functional storage.

WindowNameStore sidesteps these issues entirely:

1. Volatility Is Built-In: Data in window.name exists only in memory and vanishes when the window closes or the user navigates to a different domain. There’s no persistence, no disk writes—nothing for regulators to flag as a privacy risk.
2. No Consent Required: Since it’s not a cookie and doesn’t track users across sessions or domains, it qualifies as a “strictly necessary” tool under most interpretations of EU law—think temporary form state or UI preferences that don’t outlive the user’s visit.
3. Tab Isolation: Each tab gets its own window.name, so there’s no cross-tab leakage. Open a new tab, and it’s a clean slate—perfect for keeping data scoped to a single interaction.
4. GDPR-Friendly: With no personal data stored long-term and no ability to profile users without explicit re-implementation, it aligns with GDPR’s data minimization principle.
 
Imagine a multi-step form on an e-commerce site. In Europe, saving progress via cookies might trigger a consent popup, while localStorage could raise eyebrows if it lingers. With WindowNameStore, you can stash the user’s input as they go, let them finish (or abandon) the form, and let the data evaporate when they close the tab—all without a single compliance headache.

In the first version of my [EU e-Privacy Directive](/software/joomla/packages/eu-e-privacy-directive) [Joomla extension](/blog/development/the-humbling-art-of-free-software "The Humbling Art of Free Software"), I used this method to store consent state information before before consent was given. Users could decline consent, and the extension would remember that decision - without creating a cookie or using localStorage.

## Use Cases in Action

- Form Progress: Store user inputs across a wizard-style checkout without hitting a server or bothering with cookies.
- UI Preferences: Save a dark mode toggle or language choice for the session, resetting on tab close.
- A/B Testing: Track variant exposure within a single visit without persistent identifiers.
- Cart Drafts: Keep items in a shopping cart until the tab closes, no consent required.
 
It’s not a replacement for all storage needs—window.name has a size limit (typically 2-10 MB, browser-dependent) and resets on cross-domain navigation—but for same-domain, short-lived tasks, it’s a gem.

## Open Source Under GPL-v3

WindowNameStore is released under the GNU General Public License v3, a deliberate choice to make it freely available to all developers. The GPL-v3 ensures you can [use](/blog/personal/east-mini-dachshunds-texas-logo-work "East Mini Dachshunds Texas (Logo Work)"), modify, and distribute this code in your projects, as long as any derivative works remain open-source under the same license. This aligns with the spirit of privacy-focused development: a tool that respects users shouldn’t be locked behind proprietary walls.

For developers in privacy-restrictive regions—or anywhere users demand transparency—this licensing means you can adopt WindowNameStore, tweak it to your needs (say, adding size checks or event triggers), and share it back with the community. It’s a collective win: you [get](/joomla-techniques/show-your-sites-last-updated-date-with-a-simple-module-override "Show Your Site’s Last Updated Date with a Simple Module Override") a compliant storage option, and others benefit from your improvements.

## Why Not Cookies or SessionStorage?

Cookies come with baggage—consent banners, expiration management, and a tracking stigma. SessionStorage is closer, but it’s still part of the Web Storage API, which some privacy advocates argue falls under e-Privacy rules if used beyond strict necessity. Plus, it persists across same-domain page loads in a tab, which might be more than you need. WindowNameStore is leaner, simpler, and dodges the regulatory gray areas.

## Getting Started

Grab the class, drop it into your project, and start using it. Test it in your browser—most (Chrome, Firefox, Safari) handle window.name generously with megabytes of capacity. If you hit an edge case (like a corporate lockdown disabling window.name), it’ll gracefully fall back to an empty object, keeping your app humming.

In a world where privacy isn’t just a feature but a legal mandate, WindowNameStore offers a practical, open-source lifeline. It’s not flashy, but it’s effective—and that’s what counts when you’re building for users who expect both functionality and respect.



- [      email ](mailto:?subject=WindowNameStore%3A+A+Privacy-Friendly+Volatile+Storage+Solution+for+Web+Developers&body=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fwindownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers)
- [      facebook ](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fwindownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers)
- [      x-twitter ](https://twitter.com/intent/tweet?text=WindowNameStore%3A+A+Privacy-Friendly+Volatile+Storage+Solution+for+Web+Developers%3A+https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fwindownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers)
- [      linkedin ](http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fwindownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers&title=WindowNameStore%3A+A+Privacy-Friendly+Volatile+Storage+Solution+for+Web+Developers&summary=In+an+era+where+privacy+laws+like+the+GDPR+%28Genera...)
- [      pinterest ](http://pinterest.com/pin/create/button/?url=https%3A%2F%2Fwww.richeyweb.com%2Fblog%2Fdevelopment%2Fwindownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers&media=https%3A%2F%2Fcdn.joomla.org%2Fimages%2Fjoomla-org-og.jpg&description=WindowNameStore%3A+A+Privacy-Friendly+Volatile+Storage+Solution+for+Web+Developers)
 


 

   [  Previous article: Joomla’s Canonical URL Chaos   Joomla’s Canonical URL Chaos ](/blog/development/joomlas-canonical-url-chaos) [  Next article: My Software Powers Joomla’s Volunteer Portal  My Software Powers Joomla’s Volunteer Portal  ](/blog/development/my-software-powers-joomlas-volunteer-portal)  

##### We Value Your Privacy

 

We use cookies to enhance your experience and for traffic analysis. By continuing to visit this site you agree to our use of cookies.

[Privacy Policy](/privacy-policy)

 Details 

###### Google Tag Manager Items

- Ad Storage
- Ad User Data
- Ad Personalization
- Analytics Storage
- Functionality Storage
- Personalization Storage
- Security Storage
 
 

 

 

 

 

 Decline Accept
```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.richeyweb.com/#organization","name":"RicheyWeb","url":"https://www.richeyweb.com/","logo":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/logo/richeyweb.svg","contentUrl":"https://www.richeyweb.com/images/logo/richeyweb.svg","width":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"@id":"https://www.richeyweb.com/#logo"},"image":{"@id":"https://www.richeyweb.com/#logo"},"sameAs":["https://x.com/ComRicheyweb","https://www.facebook.com/RicheyWebDev/","https://www.youtube.com/channel/UCxnVG8BwOvQRO7hVqNX7T2g","https://community.joomla.org/service-providers-directory/listings/115:richeyweb.html"],"description":"RicheyWeb is a custom software developer specializing in Joomla extensions.","ContactPoint":[{"@type":"ContactPoint","url":"https://www.richeyweb.com/contact-us","telephone":"903-873-8460","contactType":"Owner/Administrator","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"},{"@type":"ContactPoint","url":"https://www.richeyweb.com/bugs","telephone":"903-873-8460","contactType":"Technical Support","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"}],"knowsAbout":["Computer programming",{"@type":"Thing","name":"Computer programming","sameAs":["https://en.wikipedia.org/wiki/Computer_programming","https://www.wikidata.org/wiki/Q80006","https://g.co/kg/m/01mf_"]},"PHP",{"@type":"Thing","name":"PHP","sameAs":["https://en.wikipedia.org/wiki/PHP","https://www.wikidata.org/wiki/Q59","https://g.co/kg/m/060kv"]},"JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"arduino","Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"White hat",{"@type":"Thing","name":"White hat","sameAs":["https://en.wikipedia.org/wiki/White_hat_(computer_security)","https://www.wikidata.org/wiki/Q7995625","https://g.co/kg/m/03ns_5"]},"Search engine optimization",{"@type":"Thing","name":"Search engine optimization","sameAs":["https://en.wikipedia.org/wiki/Search_engine_optimization","https://www.wikidata.org/wiki/Q180711","https://g.co/kg/m/019qb_"]},"Search engine marketing",{"@type":"Thing","name":"Search engine marketing","sameAs":["https://en.wikipedia.org/wiki/Search_engine_marketing","https://www.wikidata.org/wiki/Q846132","https://g.co/kg/m/06mw8r"]},"Digital marketing",{"@type":"Thing","name":"Digital marketing","sameAs":["https://en.wikipedia.org/wiki/Digital_marketing","https://www.wikidata.org/wiki/Q1323528","https://g.co/kg/g/122hcnps"]},"Web hosting service",{"@type":"Thing","name":"Web hosting service","sameAs":["https://en.wikipedia.org/wiki/Web_hosting_service","https://www.wikidata.org/wiki/Q5892272","https://g.co/kg/m/014pz4"]},"Email hosting service",{"@type":"Thing","name":"Email hosting service","sameAs":["https://en.wikipedia.org/wiki/Email_hosting_service","https://www.wikidata.org/wiki/Q5368818","https://g.co/kg/m/09w60m"]},"Internet hosting service",{"@type":"Thing","name":"Internet hosting service","sameAs":["https://en.wikipedia.org/wiki/Internet_hosting_service","https://www.wikidata.org/wiki/Q1210425","https://g.co/kg/m/09w5yw"]},"Virtual hosting",{"@type":"Thing","name":"Virtual hosting","sameAs":["https://en.wikipedia.org/wiki/Virtual_hosting","https://www.wikidata.org/wiki/Q588365","https://g.co/kg/m/024mvh"]},"Web performance",{"@type":"Thing","name":"Web performance","sameAs":["https://en.wikipedia.org/wiki/Web_performance","https://www.wikidata.org/wiki/Q7978612","https://g.co/kg/m/0gfj3f1"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"General Data Protection Regulation",{"@type":"Thing","name":"General Data Protection Regulation","sameAs":["https://en.wikipedia.org/wiki/General_Data_Protection_Regulation","https://www.wikidata.org/wiki/Q1172506","https://g.co/kg/m/0pk_7xs"]},"SERP",{"@type":"Thing","name":"SERP","sameAs":["https://en.wikipedia.org/wiki/SERP","https://www.wikidata.org/wiki/Q2205811","https://g.co/kg/g/11c5szp7kc"]},"Artificial intelligence",{"@type":"Thing","name":"Artificial intelligence","sameAs":["https://en.wikipedia.org/wiki/Artificial_intelligence","https://www.wikidata.org/wiki/Q11660","https://g.co/kg/m/0mkz"]},"Prompt engineering",{"@type":"Thing","name":"Prompt engineering","sameAs":["https://en.wikipedia.org/wiki/Prompt_engineering","https://www.wikidata.org/wiki/Q108941486","https://g.co/kg/g/11p6kpgt_n"]},"E-learning",{"@type":"Thing","name":"E-learning","sameAs":["https://en.wikipedia.org/wiki/E-learning_(theory)","https://www.wikidata.org/wiki/Q182250","https://g.co/kg/g/122czm1f"]},"Sharable Content Object Reference Model",{"@type":"Thing","name":"Sharable Content Object Reference Model","sameAs":["https://en.wikipedia.org/wiki/Sharable_Content_Object_Reference_Model","https://www.wikidata.org/wiki/Q827811","https://g.co/kg/m/06_40"]},"Experience API",{"@type":"Thing","name":"Experience API","sameAs":["https://en.wikipedia.org/wiki/Experience_API","https://www.wikidata.org/wiki/Q7807728","https://g.co/kg/g/1yw9ktxr8"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]},"Nginx",{"@type":"Thing","name":"Nginx","sameAs":["https://en.wikipedia.org/wiki/Nginx","https://www.wikidata.org/wiki/Q306144","https://g.co/kg/m/02qft91"]},"MySQL",{"@type":"Thing","name":"MySQL","sameAs":["https://en.wikipedia.org/wiki/MySQL","https://www.wikidata.org/wiki/Q850","https://g.co/kg/m/04y3k"]}],"areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"memberOf":["Mensa International",{"@type":"Organization","name":"Mensa International","sameAs":["https://en.wikipedia.org/wiki/Mensa_International","https://www.wikidata.org/wiki/Q184194","https://g.co/kg/m/0140pf"]},"National Rifle Association",{"@type":"Organization","name":"National Rifle Association","sameAs":["https://en.wikipedia.org/wiki/National_Rifle_Association","https://www.wikidata.org/wiki/Q863259","https://g.co/kg/m/0j6f9"]},"CompTIA",{"@type":"Organization","name":"CompTIA","sameAs":["https://en.wikipedia.org/wiki/CompTIA","https://www.wikidata.org/wiki/Q597534","https://g.co/kg/m/040shq"]},"ISFCE LLC",{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://isfce.com","https://g.co/kg/g/11wxm5r0rg"]}],"hasCredential":[{"@type":"EducationalOccupationalCredential","name":"Joomla 3 Certified Administrator","credentialCategory":"Certification","description":"Administrator Exam is the first available Joomla! certification exam","recognizedBy":{"@type":"Organization","name":"Open Source Matters, Inc.","sameAs":["https://en.wikipedia.org/wiki/Open_Source_Matters,_Inc.","https://g.co/kg/g/11f00wvjhz"]},"url":"https://certification.joomla.org/certified-user-directory/michael-richey","about":["Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/badge.webp","contentUrl":"https://www.richeyweb.com/images/contact/badge.webp","width":{"@type":"QuantitativeValue","value":300,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":86,"unitCode":"PX"},"caption":"Joomla 3 Certified Administrator"}},{"@type":"EducationalOccupationalCredential","name":"Certified Computer Examiner","credentialCategory":"Certification","description":"Internationally recognized computer forensics certifiecation","recognizedBy":{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://en.wikipedia.org/wiki/ISFCE_LLC","https://g.co/kg/g/11wxm5r0rg"]},"url":"https://isfce.com/","about":["Digital forensics",{"@type":"Thing","name":"Digital forensics","sameAs":["https://en.wikipedia.org/wiki/Digital_forensics","https://www.wikidata.org/wiki/Q3246940","https://g.co/kg/m/0cnxzfx"]},"Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"Mobile device forensics",{"@type":"Thing","name":"Mobile device forensics","sameAs":["https://en.wikipedia.org/wiki/Mobile_device_forensics","https://www.wikidata.org/wiki/Q6887097","https://g.co/kg/m/06zp3tp"]},"Network forensics",{"@type":"Thing","name":"Network forensics","sameAs":["https://en.wikipedia.org/wiki/Network_forensics","https://www.wikidata.org/wiki/Q7001032","https://g.co/kg/m/05pb280"]},"Database forensics",{"@type":"Thing","name":"Database forensics","sameAs":["https://en.wikipedia.org/wiki/Database_forensics","https://www.wikidata.org/wiki/Q5227405","https://g.co/kg/m/0cgqsy"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/isfce-cce.webp","contentUrl":"https://www.richeyweb.com/images/contact/isfce-cce.webp","width":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"caption":"Certified Computer Examiner"}}],"hasOfferCatalog":{"@type":"OfferCatalog","name":"Web Services","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Hosting"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Development"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Search Engine Optimization"}}]}},{"@type":"WebSite","@id":"https://www.richeyweb.com/#website","url":"https://www.richeyweb.com/","name":"RicheyWeb","publisher":{"@id":"https://www.richeyweb.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.richeyweb.com/search?q={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string","valueMaxLength":256,"valueMinLength":2,"valuePattern":"^[A-Za-z0-9\\s]+$"}},"creator":{"@id":"https://www.richeyweb.com/#organization"},"copyrightHolder":{"@id":"https://www.richeyweb.com/#organization"}},{"@type":"WebPage","@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#webpage","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers","name":"WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers","description":"\"WindowNameStore: A GPL-v3 JS class for volatile, GDPR-friendly storage using window.name. Ideal for privacy-restrictive environments like Europe, no cookies needed.","isPartOf":{"@id":"https://www.richeyweb.com/#website"},"about":{"@id":"https://www.richeyweb.com/#organization"},"inLanguage":"en-GB"},{"@type":"Article","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/windownamestore/windownamestore.webp","contentUrl":"https://www.richeyweb.com/images/articles/windownamestore/windownamestore.webp","width":{"@type":"QuantitativeValue","value":666,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":375,"unitCode":"PX"},"caption":"WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers","representativeOfPage":true},"headline":"WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers","description":"\"WindowNameStore: A GPL-v3 JS class for volatile, GDPR-friendly storage using window.name. Ideal for privacy-restrictive environments like Europe, no cookies needed.","author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"},"datePublished":"2025-03-18T00:00:00+00:00","dateModified":"2026-03-30T00:00:00+00:00","about":["WindowNameStore (JavaScript class)","General Data Protection Regulation",{"@type":"Book","name":"General Data Protection Regulation","sameAs":["https://en.wikipedia.org/wiki/General_Data_Protection_Regulation","https://www.wikidata.org/wiki/Q1172506","https://g.co/kg/m/0pk_7xs"]},"ePrivacy Directive",{"@type":"Book","name":"ePrivacy Directive","sameAs":["https://en.wikipedia.org/wiki/EPrivacy_Directive","https://www.wikidata.org/wiki/Q1744072","https://g.co/kg/m/02qv74_"]},"JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"Volatile memory",{"@type":"Thing","name":"Volatile memory","sameAs":["https://en.wikipedia.org/wiki/Volatile_memory","https://www.wikidata.org/wiki/Q496533","https://g.co/kg/m/04c0ck"]}],"mentions":["HTTP cookie",{"@type":"Thing","name":"HTTP cookie","sameAs":["https://en.wikipedia.org/wiki/HTTP_cookie","https://www.wikidata.org/wiki/Q178995","https://g.co/kg/m/0d18sk"]},"Web storage",{"@type":"Thing","name":"Web storage","sameAs":["https://en.wikipedia.org/wiki/Web_storage","https://www.wikidata.org/wiki/Q48869","https://g.co/kg/m/05zxt2r"]},"Web browser",{"@type":"Thing","name":"Web browser","sameAs":["https://en.wikipedia.org/wiki/Web_browser","https://www.wikidata.org/wiki/Q6368","https://g.co/kg/m/082hp"]},"Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"GNU General Public License",{"@type":"Thing","name":"GNU General Public License","sameAs":["https://en.wikipedia.org/wiki/GNU_General_Public_License","https://www.wikidata.org/wiki/Q7603","https://g.co/kg/m/037cm"]},{"@type":"Article","@id":"https://www.richeyweb.com/test-article#article","url":"https://www.richeyweb.com/test-article","name":"Shader BG Test","headline":"Shader BG Test","author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/development/bug-reports-a-developers-best-friend-not-a-burden#article","url":"https://www.richeyweb.com/blog/development/bug-reports-a-developers-best-friend-not-a-burden","name":"Bug Reports: A Developer's Best Friend, Not a Burden","headline":"Bug Reports: A Developer's Best Friend, Not a Burden","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/plg_content_interlinked/articles/russian-comments.webp","contentUrl":"https://www.richeyweb.com/images/articles/plg_content_interlinked/articles/russian-comments.webp","width":{"@type":"QuantitativeValue","value":1200,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":675,"unitCode":"PX"},"caption":"Bug Reports: A Developer's Best Friend, Not a Burden"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/development/server-timing-for-geoip-data-delivery-to-achieve-gdpr-compliance#article","url":"https://www.richeyweb.com/blog/development/server-timing-for-geoip-data-delivery-to-achieve-gdpr-compliance","name":"Server-Timing for GeoIP Data Delivery to Achieve GDPR Compliance","headline":"Server-Timing for GeoIP Data Delivery to Achieve GDPR Compliance","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/geoip-coming-soon/geoip-coming-soon.webp","contentUrl":"https://www.richeyweb.com/images/articles/geoip-coming-soon/geoip-coming-soon.webp","width":{"@type":"QuantitativeValue","value":508,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":285,"unitCode":"PX"},"caption":"Server-Timing for GeoIP Data Delivery to Achieve GDPR Compliance"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/development/the-humbling-art-of-free-software#article","url":"https://www.richeyweb.com/blog/development/the-humbling-art-of-free-software","name":"The Humbling Art of Free Software","headline":"The Humbling Art of Free Software","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/facepalm.avif","contentUrl":"https://www.richeyweb.com/images/articles/facepalm.avif","width":{"@type":"QuantitativeValue","value":0,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":0,"unitCode":"PX"},"caption":"The Humbling Art of Free Software"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/hosting/varnish-and-joomla#article","url":"https://www.richeyweb.com/blog/hosting/varnish-and-joomla","name":"Varnish and Joomla","headline":"Varnish and Joomla","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/varnish-nginx-joomla/varnish-and-joomla.webp","contentUrl":"https://www.richeyweb.com/images/articles/varnish-nginx-joomla/varnish-and-joomla.webp","width":{"@type":"QuantitativeValue","value":890,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":500,"unitCode":"PX"},"caption":"Varnish and Joomla"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/personal/joomla-community-magazine-mention#article","url":"https://www.richeyweb.com/blog/personal/joomla-community-magazine-mention","name":"Joomla Community Magazine Mention!","headline":"Joomla Community Magazine Mention!","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/eprivacy/joomla-community-magazine.webp","contentUrl":"https://www.richeyweb.com/images/articles/eprivacy/joomla-community-magazine.webp","width":{"@type":"QuantitativeValue","value":638,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":391,"unitCode":"PX"},"caption":"Joomla Community Magazine Mention!"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/development/new-geoip-coming-soon#article","url":"https://www.richeyweb.com/blog/development/new-geoip-coming-soon","name":"New GeoIP Coming Soon","headline":"New GeoIP Coming Soon","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/geoip-coming-soon/geoip-coming-soon.webp","contentUrl":"https://www.richeyweb.com/images/articles/geoip-coming-soon/geoip-coming-soon.webp","width":{"@type":"QuantitativeValue","value":508,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":285,"unitCode":"PX"},"caption":"New GeoIP Coming Soon"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/personal/someone-elses-code#article","url":"https://www.richeyweb.com/blog/personal/someone-elses-code","name":"Someone Else’s Code","headline":"Someone Else’s Code","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/other-peoples-code/other-peoples-code.webp","contentUrl":"https://www.richeyweb.com/images/articles/other-peoples-code/other-peoples-code.webp","width":{"@type":"QuantitativeValue","value":598,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":336,"unitCode":"PX"},"caption":"Someone Else’s Code"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/personal/joomla-numbers-dont-lie#article","url":"https://www.richeyweb.com/blog/personal/joomla-numbers-dont-lie","name":"Joomla Numbers Don’t Lie","headline":"Joomla Numbers Don’t Lie","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/numbers-dont-lie/numbers-dont-lie.webp","contentUrl":"https://www.richeyweb.com/images/articles/numbers-dont-lie/numbers-dont-lie.webp","width":{"@type":"QuantitativeValue","value":800,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":450,"unitCode":"PX"},"caption":"Joomla Numbers Don’t Lie"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/blog/personal/east-mini-dachshunds-texas-logo-work#article","url":"https://www.richeyweb.com/blog/personal/east-mini-dachshunds-texas-logo-work","name":"East Mini Dachshunds Texas (Logo Work)","headline":"East Mini Dachshunds Texas (Logo Work)","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/east-mini-dachshunds-texas/east-mini-dachshunds-texas.png","contentUrl":"https://www.richeyweb.com/images/articles/east-mini-dachshunds-texas/east-mini-dachshunds-texas.png","width":{"@type":"QuantitativeValue","value":1343,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":953,"unitCode":"PX"},"caption":"East Mini Dachshunds Texas (Logo Work)"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}},{"@type":"Article","@id":"https://www.richeyweb.com/joomla-techniques/show-your-sites-last-updated-date-with-a-simple-module-override#article","url":"https://www.richeyweb.com/joomla-techniques/show-your-sites-last-updated-date-with-a-simple-module-override","name":"Show Your Site’s Last Updated Date with a Simple Module Override","headline":"Show Your Site’s Last Updated Date with a Simple Module Override","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/articles/show-your-sites-last-updated-date-with-a-simple-module-override/language_override.webp","contentUrl":"https://www.richeyweb.com/images/articles/show-your-sites-last-updated-date-with-a-simple-module-override/language_override.webp","width":{"@type":"QuantitativeValue","value":890,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":685,"unitCode":"PX"},"caption":"Show Your Site’s Last Updated Date with a Simple Module Override"},"author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"}}],"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#article","isPartOf":{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#webpage"},"publisher":{"@id":"https://www.richeyweb.com/#organization"},"citation":[{"@type":"CreativeWork","@id":"https://www.richeyweb.com/software/joomla/packages/eu-e-privacy-directive#softwareapplication","url":"https://www.richeyweb.com/software/joomla/packages/eu-e-privacy-directive","name":"EU e-Privacy Directive"}],"keywords":"GDPR, EU e-Privacy Directive, user data, web applications, temporary session data, cookie consent banners, non-compliance, traditional tools, cookies, localStorage, explicit user consent, persistent data, tracking, WindowNameStore, lightweight JavaScript class, window.name property, volatile storage, privacy-conscious, GPL-v3 license, developers, open-source, key-value store, volatile data, browser window, browser tab, sessionStorage, data lives, browser window or tab remains open, user navigates, closes the tab, JSON.parse, JSON.stringify, invalid window.name data, resetting to empty object, sync, get, set, clear, delete, usage, userPrefs, theme, lang, privacy-restrictive environments, mechanism that stores data, user’s device, identify, track, session cookies, disk, persist beyond a single interaction, explicitly configured otherwise, non-essential cookies, user consent, strictly necessary, temporary form state, UI preferences, cross-tab leakage, data minimization principle, multi-step form, e-commerce site, consent popup, localStorage, compliance headache, Joomla extension, consent state information, decline consent, remember that decision, no cookie, no localStorage, form progress, wizard-style checkout, server, UI preferences, dark mode toggle, language choice, session, tab close, A/B Testing, variant exposure, single visit, Cart Drafts, shopping cart, tab closes, no consent required, replacement for all storage needs, size limit, browser-dependent, cross-domain navigation, same-domain, short-lived tasks, GNU General Public License v3, freely available, use, modify, distribute, derivative works, open-source, privacy-focused development, respects users, privacy-restrictive regions, transparency, tweak it, size checks, event triggers, share it back, collective win, compliant storage option, privacy advocates, Web Storage API, e-Privacy rules, beyond strict necessity, persists across same-domain page loads, leaner, simpler, regulatory gray areas, getting started, drop it into your project, browser, Chrome, Firefox, Safari, handle window.name, megabytes of capacity, edge case, corporate lockdown, disabled window.name, gracefully fall back, empty object, functionalitiy, respect","articleSection":"Development","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers","hasPart":[{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-what-is-windownamestore_2_1"},{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-why-windownamestore-shines-in-privacy-restrictive-environments_2_2"},{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-use-cases-in-action_2_3"},{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-open-source-under-gpl-v3_2_4"},{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-why-not-cookies-or-sessionstorage_2_5"},{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-getting-started_2_6"}]},{"@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex","@type":"ItemList","name":"WindowNameStore: A Privacy-Friendly Volatile Storage Solution for Web Developers","numberOfItems":6,"itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-what-is-windownamestore_2_1","name":"What Is WindowNameStore?","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#toc-what-is-windownamestore_2_1"}},{"@type":"ListItem","position":2,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-why-windownamestore-shines-in-privacy-restrictive-environments_2_2","name":"Why WindowNameStore Shines in Privacy-Restrictive Environments","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#toc-why-windownamestore-shines-in-privacy-restrictive-environments_2_2"}},{"@type":"ListItem","position":3,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-use-cases-in-action_2_3","name":"Use Cases in Action","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#toc-use-cases-in-action_2_3"}},{"@type":"ListItem","position":4,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-open-source-under-gpl-v3_2_4","name":"Open Source Under GPL-v3","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#toc-open-source-under-gpl-v3_2_4"}},{"@type":"ListItem","position":5,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-why-not-cookies-or-sessionstorage_2_5","name":"Why Not Cookies or SessionStorage?","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#toc-why-not-cookies-or-sessionstorage_2_5"}},{"@type":"ListItem","position":6,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#articleindex-toc-getting-started_2_6","name":"Getting Started","url":"https://www.richeyweb.com/blog/development/windownamestore-a-privacy-friendly-volatile-storage-solution-for-web-developers#toc-getting-started_2_6"}}]}]}
```
