UNPKG

svelte-firebase-state

Version:

Simplify Firebase integration in Svelte and SvelteKit with reactive state management for Firestore and Realtime Database.

59 lines (43 loc) 1.85 kB
# svelte-firebase-state svelte-firebase-state simplifies Firebase integration in Svelte/Sveltekit applications by providing easy-to-use reactive state classes for managing Firestore and Realtime Database data. These classes handle data fetching, live updates, user-specific queries and state management, allowing you to focus on your app's logic instead of Firebase boilerplate. ## Documentation https://svelte-firebase-state.vercel.app/ ## Usage 1. Install the library with your favorite package manager. ```bash npm install svelte-firebase-state ``` 2. In your svelte component, import and create an instance of `CollectionState`, `DocumentState`, `NodeState`, or `NodeListState`, passing configuration options like Firestore, Authentication, query functions, or database paths. You can also instantiate the state class in a .svelte.ts file making it global to your app, in this case the data will be fetch only when the data is subscribed to (shown in a component or logged in a reactive environment). ```typescript import { CollectionState } from "svelte-firebase-state"; import { firestore, auth } from "../firebase"; // Your firebase config file const tasks = new CollectionState({ auth, firestore, path: (user) => `/users/${user?.uid}/tasks`, listen: true }); ``` 3. Access **svelte 5** reactive state with the "data" property of the instance. If you use the "listen" param, when your database receive updates your UI will be re-rendered with the correct data. ```typescript // Reactive data = [task1, task2, ...] $inspect(tasks.data); ``` ```svelte {#each tasks.data as task (task.id)} <p>{task.name}</p> {/each} ``` 4. Perform CRUD Operations using class methods. ```svelte <script> function handleAdd(newTask) { tasks.add(newTask); } function handleDelete(taskId) { tasks.delete(taskId); } </script> ```