{"id":13821959,"url":"https://github.com/joshnuss/svelte-persisted-store","last_synced_at":"2025-05-14T00:03:03.321Z","repository":{"id":37940535,"uuid":"276812732","full_name":"joshnuss/svelte-persisted-store","owner":"joshnuss","description":"A Svelte store that persists to localStorage","archived":false,"fork":false,"pushed_at":"2024-12-23T02:57:58.000Z","size":1402,"stargazers_count":1091,"open_issues_count":16,"forks_count":41,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-10T14:12:09.187Z","etag":null,"topics":["localstorage","pubsub","sessionstorage","svelte"],"latest_commit_sha":null,"homepage":"","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/joshnuss.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-03T05:10:23.000Z","updated_at":"2025-04-09T01:37:30.000Z","dependencies_parsed_at":"2023-02-17T11:45:25.384Z","dependency_job_id":"5a514e66-3add-4136-a053-a6796a944c5f","html_url":"https://github.com/joshnuss/svelte-persisted-store","commit_stats":{"total_commits":259,"total_committers":15,"mean_commits":"17.266666666666666","dds":0.528957528957529,"last_synced_commit":"5046b27c65338df556e084b7c67df872337d7861"},"previous_names":["joshnuss/svelte-persisted-store","joshnuss/svelte-local-storage-store"],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshnuss%2Fsvelte-persisted-store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshnuss%2Fsvelte-persisted-store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshnuss%2Fsvelte-persisted-store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshnuss%2Fsvelte-persisted-store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshnuss","download_url":"https://codeload.github.com/joshnuss/svelte-persisted-store/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254043267,"owners_count":22004913,"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","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":["localstorage","pubsub","sessionstorage","svelte"],"created_at":"2024-08-04T08:01:35.738Z","updated_at":"2025-05-14T00:03:03.263Z","avatar_url":"https://github.com/joshnuss.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"[![npm version](https://img.shields.io/npm/v/svelte-persisted-store.svg)](https://www.npmjs.com/package/svelte-persisted-store) [![license](https://img.shields.io/npm/l/svelte-persisted-store.svg)](LICENSE.md) [![codecov](https://codecov.io/gh/joshnuss/svelte-persisted-store/branch/master/graph/badge.svg?token=GU607D2YRQ)](https://codecov.io/gh/joshnuss/svelte-persisted-store)\n\n# svelte-persisted-store\n\nA Svelte store that persists to local storage. Can sync changes across browser tabs.\n\n## Installation\n\n```bash\nnpm install svelte-persisted-store\n```\n\n## Usage\n\nDefine the store:\n\n```javascript\nimport { persisted } from 'svelte-persisted-store'\n\n// First param `preferences` is the local storage key.\n// Second param is the initial value.\nexport const preferences = persisted('preferences', {\n  theme: 'dark',\n  pane: '50%',\n  ...\n})\n```\n\nThen, to use it:\n\n```javascript\nimport { get } from 'svelte/store'\nimport { preferences } from './stores'\n\npreferences.subscribe(...) // subscribe to changes\npreferences.update(...) // update value\npreferences.set(...) // set value\npreferences.reset() // reset to initial value\nget(preferences) // read value\n$preferences // read value with automatic subscription\n```\n\nAdditional options can be specified:\n\n```javascript\nimport * as devalue from 'devalue'\n\n// third parameter is options\nexport const preferences = persisted('local-storage-key', 'default-value', {\n  serializer: devalue, // defaults to `JSON`\n  storage: 'session', // 'session' for sessionStorage, defaults to 'local'\n  syncTabs: true, // choose whether to sync localStorage across tabs, default is true\n  onWriteError: (error) =\u003e {/* handle or rethrow */}, // Defaults to console.error with the error object\n  onParseError: (raw, error) =\u003e {/* handle or rethrow */}, // Defaults to console.error with the error object\n  beforeRead: (value) =\u003e {/* change value after serialization but before setting store to return value*/},\n  beforeWrite: (value) =\u003e {/* change value after writing to store, but before writing return value to local storage*/},\n})\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshnuss%2Fsvelte-persisted-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshnuss%2Fsvelte-persisted-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshnuss%2Fsvelte-persisted-store/lists"}