• Stars
    star
    177
  • Rank 208,674 (Top 5 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created almost 3 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

valtio-yjs makes yjs state easy

valtio-yjs ๐Ÿ’Š๐Ÿš€

CI npm size discord

valtio-yjs makes yjs state easy

What is this

valtio is a proxy state library for ReactJS and VanillaJS. yjs is an implementation of CRDT algorithm (which allows to merge client data without server coordination).

valtio-yjs is a two-way binding to bridge them.

Project status

It started as an experiment, and the experiment is finished. Now, it's in alpha. We encourage developers to try it in non-trivial apps, and find bugs.

Install

yarn add valtio-yjs valtio yjs

How to use it

import * as Y from "yjs";
import { proxy } from "valtio";
import { bind } from "valtio-yjs";

// create a new Y doc
const ydoc = new Y.Doc();

// create a Y map
const ymap = ydoc.getMap("mymap");

// create a valtio state
const state = proxy({});

// bind them
const unbind = bind(state, ymap);

// now you can mutate the state
state.text = 'hello';

// you can nest objects
state.obj = { count: 0 };

// and mutate the nested object value
++state.obj.count;

// you can use arrays too
state.arr = [1, 2, 3];

// mutating the array is also possible
state.arr.push(4);

// unbind them by calling the result
unbind();

Demos

Using useSnapshot in valtio and WebsocketProvider in y-websocket, we can create multi-client React apps pretty easily.

More Repositories

1

waku

โ›ฉ๏ธ The minimal React framework
TypeScript
3,473
star
2

react-tracked

State usage tracking with Proxies. Optimize re-renders for useState/useReducer, React Redux, Zustand and others.
TypeScript
2,594
star
3

use-context-selector

React useContextSelector hook in userland
TypeScript
2,414
star
4

excalidraw-animate

A tool to animate Excalidraw drawings
TypeScript
1,121
star
5

react-hooks-global-state

[NOT MAINTAINED] Simple global state for React with Hooks API without Context API
TypeScript
1,104
star
6

react-hooks-worker

React custom hooks for web workers
TypeScript
696
star
7

proxy-memoize

Intuitive magical memoization library with Proxy and WeakMap
TypeScript
667
star
8

will-this-react-global-state-work-in-concurrent-rendering

Test tearing and branching in React concurrent rendering
JavaScript
541
star
9

reactive-react-redux

[NOT MAINTAINED] React Redux binding with React Hooks and Proxy
TypeScript
502
star
10

react-hooks-async

[NOT MAINTAINED] React custom hooks for async functions with abortability and composability
JavaScript
497
star
11

excalidraw-claymate

A tool based on Excalidraw to create stop motion animations and slides.
TypeScript
457
star
12

react-hooks-fetch

Minimal data fetching library with React Suspense
TypeScript
398
star
13

react-worker-components

React Worker Components simplify using Web Workers
TypeScript
315
star
14

react-suspense-fetch

[NOT MAINTAINED] A low-level library for React Suspense for Data Fetching
TypeScript
296
star
15

katachidraw

SVG based drawing tool and react-native component
TypeScript
282
star
16

redux-in-worker

Entire Redux in Web Worker
TypeScript
258
star
17

proxy-compare

Compare two objects using accessed properties with Proxy
TypeScript
252
star
18

social-cms-backend

Express middleware to provide schema-less REST APIs for creating a social networking website primarily using angular.js. It comes with built-in authentication, authorization and notification features.
JavaScript
216
star
19

use-reducer-async

React useReducer with async actions
TypeScript
176
star
20

connect-prerenderer

Express/connect middleware to pre-render ajax page for non-ajax browsers, especially using angular.js
JavaScript
161
star
21

typescript-expo-apollo-boilerplate

[NOT MAINTAINED] Clean boilerplate for TypeScript + Expo (React Native) + React Apollo (GraphQL)
TypeScript
145
star
22

es-beautifier

[NOT MAINTAINED] ECMAScript beautifier based on eslint
JavaScript
121
star
23

zustand-signal

Another React binding for Zustand
TypeScript
109
star
24

use-atom

Yet another implementation for Jotai atoms without side effects
TypeScript
108
star
25

create-react-signals

A factory function to create signals for React
TypeScript
107
star
26

remote-faces

A tool for Working From Home: Share your webcam images with your colleagues
JavaScript
94
star
27

react-suspense-router

[NOT MAINTAINED] React Router for React Suspense and Render-as-You-Fetch
TypeScript
88
star
28

continuation.js

A module for tail call optimization by Continuation Passing Style (CPS) transformation with trampoline technique for Node.js
JavaScript
77
star
29

rss-pipes

RSS feed aggregator by Node.js
JavaScript
74
star
30

derive-zustand

A function to create a derived Zustand store from stores
TypeScript
71
star
31

use-zustand

Another custom hook to use Zustand vanilla store
TypeScript
57
star
32

lets-compare-global-state-with-react-hooks

Comparing global state libraries with React Hooks
57
star
33

easy-livereload

Express middleware to use livereload2 easily (both server and client)
JavaScript
56
star
34

codeonmobile

A coding tool on mobile devices targeting GitHub/Codeship/Heroku
JavaScript
55
star
35

valtio-signal

Another React binding for Valtio proxy state
TypeScript
50
star
36

connect-cache-manifest

Express/connect middleware to generate HTML5 cache manifest file.
JavaScript
49
star
37

use-signals

An experimental React hook for TC39 signals
JavaScript
40
star
38

notes-app-sample

A sample HTML5 web app using social-cms-backend (the BMEAN stack)
JavaScript
33
star
39

excalidraw-gallery

A tool to display Excalidraw drawings
JavaScript
32
star
40

express-react-redux

Express middleware for React/Redux applications
JavaScript
30
star
41

svelte3-redux

[NOT MAINTAINED] Redux for Svelte 3
TypeScript
30
star
42

excalidraw-layers

A tool to view layers of Excalidraw drawings
TypeScript
26
star
43

react-suspense-worker

[NOT MAINTAINED] React Suspense for Web Worker with Comlink
TypeScript
26
star
44

react-native-dom-expo

[NOT MAINTAINED] A patch library to make Expo work with react-native-dom
JavaScript
25
star
45

react-context-global-state

[NOT MAINTAINED] Simple global state for React with Context API
JavaScript
23
star
46

gqless-hook

[NOT MAINTAINED] Yet another React hook for gqless
TypeScript
22
star
47

use-valtio

Another custom hook to use Valtio proxy state
TypeScript
21
star
48

react-hooks-render-props

[NOT MAINTAINED] A hacking custom hook to emulate render props
JavaScript
18
star
49

benchmark-octane

Octane benchmark for Node.js
JavaScript
18
star
50

recoildux

[NOT MAINTAINED] Recoil inspired implementation with Redux
TypeScript
16
star
51

react-compose-state

A helper function to attach state to stateless function components
JavaScript
16
star
52

gunosy-rss

[OBSOLETE] Gunosy RSS feed web service by Node.js
JavaScript
15
star
53

apollo-link-lazy

Apollo Link for lazy loading
JavaScript
14
star
54

react-suspense-router-demo

[NOT MAINTAINED] A demo app with react-suspense-router
TypeScript
11
star
55

react-apollo-github-api-infinite-scroll-example

React Apollo GitHub GraphQL API infinite scroll example code
JavaScript
11
star
56

twitter-clone-sample

JavaScript
7
star
57

blog

Personal blog
Less
6
star
58

waku-vercel-starter

TypeScript
5
star
59

meteor-fan

HTML
4
star
60

dai-shi

3
star
61

waku-netlify-starter

TypeScript
3
star
62

minimal-apollo-example

Minimal Apollo stack example code
JavaScript
2
star
63

react-compose-onmount

A helper function to attach onmount handler to stateless function components
JavaScript
2
star
64

GBrain

A Google AppEngine web app for sharing brains.
Java
1
star
65

meteor-blaze-showhide

Handy block helpers for show/hide functionality in Blaze
JavaScript
1
star
66

meteor-google-maps-example

JavaScript
1
star
67

meteor-blaze-google-maps

Easy Blaze template for Google Maps with reactivity
JavaScript
1
star
68

meteor-facebook-server-api

A Meteor package to provide Facebook Graph API
JavaScript
1
star