{"id":25461089,"url":"https://github.com/robertosnap/zero-svelte-query","last_synced_at":"2025-08-24T01:19:07.920Z","repository":{"id":273862812,"uuid":"921102441","full_name":"RobertoSnap/zero-svelte-query","owner":"RobertoSnap","description":"Use Zero in Svelte","archived":false,"fork":false,"pushed_at":"2025-02-03T22:13:50.000Z","size":382,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-09T11:41:59.098Z","etag":null,"topics":["svelte","zero"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobertoSnap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-01-23T10:43:22.000Z","updated_at":"2025-02-05T22:37:39.000Z","dependencies_parsed_at":"2025-01-23T12:33:34.551Z","dependency_job_id":null,"html_url":"https://github.com/RobertoSnap/zero-svelte-query","commit_stats":null,"previous_names":["robertosnap/zero-svelte-query"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoSnap%2Fzero-svelte-query","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoSnap%2Fzero-svelte-query/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoSnap%2Fzero-svelte-query/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobertoSnap%2Fzero-svelte-query/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobertoSnap","download_url":"https://codeload.github.com/RobertoSnap/zero-svelte-query/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239413161,"owners_count":19634176,"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":["svelte","zero"],"created_at":"2025-02-18T05:22:28.538Z","updated_at":"2025-08-24T01:19:07.907Z","avatar_url":"https://github.com/RobertoSnap.png","language":"TypeScript","readme":"\n[![NPM Version](https://img.shields.io/npm/v/zero-svelte-query)](https://www.npmjs.com/package/zero-svelte-query)\n[![NPM Unpacked Size](https://img.shields.io/npm/unpacked-size/zero-svelte-query)](https://www.npmjs.com/package/zero-svelte-query)\n[![NPM Downloads](https://img.shields.io/npm/dt/zero-svelte-query)](https://www.npmjs.com/package/zero-svelte-query)\n\n# zero-svelte-query\n\nA Svelte library for integrating [@rocicorp/zero](https://github.com/rocicorp/zero) with Svelte applications. Provides reactive query bindings and store integration for real-time data synchronization.\n\n## Features\n- ✨ Reactive query subscriptions\n- 🔄 Lightweight and minimalistic\n- ⚡️ Nice dev tools\n\n### Zero Svelte Options\n\n#### [stolinski/zero-svelte](https://github.com/stolinski/zero-svelte)\n\nThis should be your go-to option. It appears to have functionality for optimal query fetching and other advanced features.\n\n#### [robertosnap/zero-svelte-query](https://github.com/robertosnap/zero-svelte-query)\n\nThis is a naively simple implementation, making it good for learning purposes or something to build upon. It's currently a `createSubscriber` wrapper around `zero.query`. The repository has some nice examples for Svelte and developer tools when creating Svelte applications.\n\n\n## Installation\nFrom [NPM](https://www.npmjs.com/package/zero-svelte-query)\n```bash\nnpm install zero-svelte-query\n# or\npnpm add zero-svelte-query\n# or\nyarn add zero-svelte-query\n```\n\n## Usage\nSee real examples in [src/routes](https://github.com/RobertoSnap/zero-svelte-query/tree/main/src/routes)\n\n### Basic Query Example\n```svelte\n\u003cscript lang=\"ts\"\u003e\n\timport { useQuery } from 'zero-svelte-query';\n\timport { getZero } from '$lib/zero'; // Update to standard SvelteKit path\n\n\tconst zero = getZero();\n\tconst tags = useQuery(zero.query.tag); // Use const instead of let\n\u003c/script\u003e\n\n{#if $tags?.current}\n\t{#each $tags.current as tag (tag.id)}\n\t\t\u003cp\u003e{tag.name}\u003c/p\u003e\n\t{/each}\n{/if}\n```\n\n## Zero Store Configuration\nInitialize Zero in your application setup. Here's a basic implementation example:\n\n`zero.state.svelte.ts`\n// ... rest of existing code ...\n```ts\nimport { schema, type Schema } from '$zero/schema';\nimport { Zero, type ZeroOptions } from '@rocicorp/zero';\nimport { get, writable } from 'svelte/store';\n\nexport const zeroStore = writable\u003cZero\u003cSchema\u003e | null\u003e(null);\n\nexport const setZeroStore = (_options: Partial\u003cZeroOptions\u003cSchema\u003e\u003e) =\u003e {\n\tconst options = {\n\t\tschema,\n\t\tkvStore: \"mem\",\n\t\tlogLevel: \"debug\",\n\t\t..._options,\n\t} as ZeroOptions\u003cSchema\u003e;\n\tzeroStore.set(new Zero(options));\n}\n\nexport const getZero = () =\u003e {\n\tconst z = get(zeroStore);\n\tif (!z) {\n\t\tthrow new Error('Zero not initialized');\n\t}\n\treturn z;\n}\n```\nThen use it in for example a +layout.svelte file\n```typescript\nsetZeroStore({\n    server: 'http://localhost:5949',\n    auth: token || undefined,\n    userID: userId || 'anon'\n});\n```\n\n\n## Development\n\n### Setup\n\n```bash\n# Install dependencies\npnpm install\n\n# This will start a testcontainer with zero-cache, postgres and a vite svelte-kit application.\npnpm dev\n\n# Run tests\npnpm test\n\n# Run only unit tests\npnpm test:unit\n\n# Run only e2e tests\npnpm test:e2e\n```\n\n### Scripts\n- `pnpm dev` - Starts both backend and frontend development servers\n- `pnpm build` - Builds the package for production\n- `pnpm schema` - Builds the Zero schema\n- `pnpm db:generate` - Generates database files using Drizzle Kit\n\n## License\nApache 2.0\n\n## Contributing\nDont know yet\n\n# Learning\nThis library is a lightweight createSubscriber wrapper around the zero instance. You could basically just copy this file [useQuery.svelte.ts](https://github.com/RobertoSnap/zero-svelte-query/blob/main/src/lib/useQuery.svelte.ts) and use it in your project.\n\n## Alternatives\n[zero-svelte](https://github.com/stolinski/zero-svelte) ([npm](https://www.npmjs.com/package/zero-svelte)) offers additional caching features and more advanced query management.\n\n# Versions\n| @rocicorp/zero | drizzle-zero-svelte | @rocicorp/zero spesific |\n|----------------|---------------------|------|\n| ^0.11.0 | ^ 0.1.0 | 0.11.2025011402 |\n| ^0.12.0 | ^ 0.2.0 | 0.12.2025012501 |\n| ^0.13.0 | ^ 0.3.0 | 0.13.2025013101 |\n| ^0.14.0 | ^ 0.4.0 | 0.14.2025020701 |\n| ^0.16.0 | ^ 0.5.0 | 0.16.2025022800 |\n| ^0.17.0 | ^ 0.6.0 | 0.17.2025031400 |\n| ^0.18.0 | ^ 0.7.0 | 0.18.2025042300 |\n| ^0.19.0 | ^ 0.8.0 | 0.19.2025050203 |\n| ^0.20.0 | ^ 0.9.0 | 0.20.2025052100 |\n| ^0.22.0 | ^ 0.10.0 | 0.22.202508020 |\n\n# Credits\n- [stolinski/zero-svelte](https://github.com/stolinski/zero-svelte)\n- [BriefHQ/drizzle-zero](https://github.com/BriefHQ/drizzle-zero/)\n- [danielroe/zero-vue](https://github.com/danielroe/zero-vue)\n- [@rocicorp/zero](https://github.com/rocicorp/zero)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertosnap%2Fzero-svelte-query","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertosnap%2Fzero-svelte-query","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertosnap%2Fzero-svelte-query/lists"}