{"id":20020138,"url":"https://github.com/wonism/use-memory-storage","last_synced_at":"2025-08-17T22:11:19.011Z","repository":{"id":42984684,"uuid":"212597496","full_name":"wonism/use-memory-storage","owner":"wonism","description":"React hooks for memory storage is sharing session storage between multiple tabs.","archived":false,"fork":false,"pushed_at":"2023-01-07T10:20:56.000Z","size":421,"stargazers_count":4,"open_issues_count":11,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-01T16:09:22.349Z","etag":null,"topics":["hooks","react","reactjs","session-storage","sessionstorage"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wonism.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-03T14:13:08.000Z","updated_at":"2023-03-10T08:23:34.000Z","dependencies_parsed_at":"2023-02-06T22:01:39.681Z","dependency_job_id":null,"html_url":"https://github.com/wonism/use-memory-storage","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/wonism/use-memory-storage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wonism%2Fuse-memory-storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wonism%2Fuse-memory-storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wonism%2Fuse-memory-storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wonism%2Fuse-memory-storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wonism","download_url":"https://codeload.github.com/wonism/use-memory-storage/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wonism%2Fuse-memory-storage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270912602,"owners_count":24666751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hooks","react","reactjs","session-storage","sessionstorage"],"created_at":"2024-11-13T08:30:00.843Z","updated_at":"2025-08-17T22:11:18.923Z","avatar_url":"https://github.com/wonism.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Use Memory Storage\n\u003e React hooks for memory storage is sharing session storage between multiple tabs.\n\u003e Ideas from the [blog\n\u003e post](https://blog.guya.net/2015/06/12/sharing-sessionstorage-between-tabs-for-secure-multi-tab-authentication/)\n\u003e written by [@guy-a](https://github.com/guy-a)\n\n[![npm version](https://badge.fury.io/js/use-memory-storage.svg)](https://badge.fury.io/js/use-memory-storage)\n[![Build Status](https://travis-ci.org/wonism/use-memory-storage.svg)](https://travis-ci.org/wonism/use-memory-storage)\n\n## Installation\n```sh\n$ npm i -S use-memory-storage\n```\n\n## Use cases\n```tsx\nimport React, { useState, useEffect, useCallback } from 'react';\nimport useMemoryStorage from 'use-memory-storage';\n\nconst KEY = 'TEST/useMemoryStorage';\n\nconst Demo: React.FC = () =\u003e {\n  const [token, setToken] = useState\u003cstring | null\u003e(null);\n  useMemoryStorage(KEY, token, setToken);\n\n  const handleClick = useCallback(() =\u003e {\n    setToken(Date.now().toString());\n  }, []);\n\n  useEffect(() =\u003e {\n    const storedData = sessionStorage.getItem(KEY);\n\n    if (storedData != null) {\n      setToken(storedData);\n    }\n  }, []);\n\n  useEffect(() =\u003e {\n    if (token != null) {\n      window.sessionStorage.setItem(KEY, token);\n    }\n  }, [token]);\n\n  return (\n    \u003cdiv\u003e\n      \u003cp\u003e\n        Click button to generate token in session storage!\n      \u003c/p\u003e\n      \u003coutput\u003e\n        stored data : {token}\n      \u003c/output\u003e\n      \u003cbr /\u003e\n      \u003cbutton onClick={handleClick}\u003e\n        Click\n      \u003c/button\u003e\n    \u003c/div\u003e\n  );\n}\n\nexport default Demo;\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwonism%2Fuse-memory-storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwonism%2Fuse-memory-storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwonism%2Fuse-memory-storage/lists"}