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
Markdown
# 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>
```