yjs
liveblocks
Our great sponsors
yjs | liveblocks | |
---|---|---|
42 | 16 | |
10,437 | 1,292 | |
4.8% | 6.4% | |
7.6 | 9.7 | |
6 days ago | 5 days ago | |
JavaScript | TypeScript | |
MIT | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
yjs
-
Hindsight is a free and open-source retrospective board
No back-end. Data is shared via WebRTC directly between connected browsers. I'm using Yjs to help me with that.
- Show HN: Hindsight is a free and open-source retrospective board
-
Discussion Thread
also there is this Javascript library that implements Conflict Resistant Data Types
- Show HN: Pg_CRDT – an experimental CRDT extension for Postgres
-
CRDTs: A Beginner's overview for building a collaborative app
There are a lot of implementations of CRDTs out there. In JavaScript, for instance, we have Y.js (https://github.com/yjs/yjs) and automerge (https://github.com/automerge/automerge). There’s also a Y.js demo (https://demos.yjs.dev/prosemirror/prosemirror.html) that allows you to play around with them and have your own collaborative app running in just a few seconds. All messages are exchange via webRTC and manages the state via CRDTs. This can be a great sandbox to understand how CRDTs work and see.
-
CRDTs make multiplayer text editing part of Zed's DNA
Yjs is being quite heavily used in the industry[1], and being researched for even more companies. There are also demos showing how to integrate it with an existing rich text editors[2]. If you have some ideas about the missing parts, you could also open topic on discuss.yjs.dev - the documentation page (https://docs.yjs.dev) has tons of useful links.
Re. other purpose projects - Yjs/Yrs main target are sequential data structures (text, arrays), but it also has support for maps and xml-like elements. In general you can build most data structures with it. I agree that it would be nice to have some other applications in demos though.
-
Evan Wallace CRDT Algorithms
Anyone unsure of what a CRDT is, this is the perfect intro: https://www.inkandswitch.com/peritext/
The two most widely used CRDT implementations (combining JSON like general purpose types and rich text editing types) are:
- Automerge https://github.com/automerge/automerge
- Maintaining Referential Integrity During Insertions And Deletions
-
Show HN: Yboard is a multiplayer desktop-like workspace based on CRDT
I've always been curious about real-time multiplayer user interfaces.
When I found out about CRDTs and Yjs[1] I thought they could serve as a solid base for a project like that.
So I built this pretty simple desktop-like UI (heavily inspired by lifeat.io) and used Yjs to replicate the whole UI state among multiple peers, creating the experience of a unique interface.
Try online: https://yboard.lol
-
Show: A multiplayer app to discuss and solve Leetcode questions with your friends.
[4]: https://github.com/yjs/yjs
liveblocks
-
Is a Multiplayer Game Possible with NextJS + Vercel?
liveblocks is great for multiplayer state sync. i was able to make my canvas redux app collaborative in a couple of hours https://liveblocks.io
-
CRDTs make multiplayer text editing part of Zed's DNA
Very cool use case for CRDTs! I've seen a bunch of different use cases from other products like https://liveblocks.io/ and https://electric-sql.com/. It's interesting how CRDTs are now taking hold so much for all these collaborative syncing scenarios. Wonder what's driving the proliferation now given they've been around for awhile?
-
The new wave of JavaScript web frameworks
True! I would also include https://liveblocks.io to that list of services that help developers make multiplayer experiences.
Interesting to see more players in this space to help more and more developers do this.
-
10 Years of Meteor: My experience with a pioneering JavaScript framework
Wow, Sacha! 10 years already. Meteor was one of the first Javascript frameworks which gave me joy. Maybe the closest to that today is Imba. Realtime all the time was performance heavy for sure but so much fun. I recently saw https://liveblocks.io/ which is trying to do realtime primitives for the wave. Discover Meteor was one of the first "modern" programming framework books I bought and I still remember the book built on an example which was missing from a lot of books in that era. Wish you all the best. Modern JS is a complicated mess. I would love to go back to that era where people were trying to do magical things with one api call. Hooks in React is more complicated than a whole library from that era. That is not a good thing. In 10 years we should have had far more higher level tools. Wish you all the best. Meteor gave me a lot of joy. Maybe I will try building something with it again to see where it's at.
-
I’m a programmer, ask me anything and I’ll google the answer
Here https://liveblocks.io/
-
Is there a lib or a pattern for synchronizing a complex JSON over the network ?
You should look at CRDT. I just saw this a few days ago: https://liveblocks.io
-
Currently learning React but need to commit to a framework for a school project in the next couple of days. Can someone answer a simple question?
Hi, React itself doesn't include any kind of real-time capabilities. React is only the UI layer. You will have to implement some kind of real-time functionality server-side (for example using WebSockets or WebRTC). The React app itself will have to connect to the server and is just going to display the data. Personally I would use express.js with socket.io on the server and just a create-react-app on the client side (I don't see the need to have additional overhead using next.js or remix for a school project). You can also take a look into liveblocks.io, it removes a lot of the headache you will encounter when using "plain" WebSockets. They also offer a free plan, so it should be a good fit for a school project.
-
Best library you use for multiplayer collaboration?
I've heard of Y.js & it looks like there's a simple API SaaS like Liveblocks so was wondering what do you use for collaborative software?
-
Tldraw – a tiny little drawing app
Hey, author here! Glad folks are enjoying this.
A few notes:
- I post a _lot_ about tldraw on Twitter. If you're curious about how this came together, or want to follow along as we ship new features, check out my timeline (https://twitter.com/steveruizok).
- The whole tldraw project is MIT licensed and open source (https://github.com/tldraw). And it's still in development! If you'd like to contribute, join the Discord channel (https://discord.gg/SBBEVCA4PG) or drop by the repo (https://github.com/tldraw/tldraw).
- The multiplayer is using a pre-release version of Liveblocks (https://liveblocks.io/)—and honestly isn't using it in a very clever way—and so can have some desync issues. Consider this part of the app an early beta.
- We also ship a Visual Studio Code extension that lets you use tldraw inside of VS Code! (https://marketplace.visualstudio.com/items?itemName=tldraw-o...)
A little more about the project itself:
The tldraw project has a few different layers.
At the bottom, there is a renderer named @tldraw/core (https://github.com/tldraw/core) that is essentially a "put React components on a canvas UI" engine. You give it a data model along with a set of utilities to interpret that data model. Simple but very fast, very flexible, and packed with helpers for building these kinds of apps. It's already being used for some pretty ambitious projects apart from tldraw itself.
The main library, @tldraw/tldraw (https://github.com/tldraw/core), exports the whole tldraw "app" as a React component named . This component can be embedded in any React project. It can be controlled either by props or by its own API (ie `app.selectAll().duplicate()`).
The website is a very thin Next.js app that embeds the component.
There are also a few other libraries: @tldraw/vec for the vector math and @tldraw/intersect for intersections. If you like to work on these kinds of projects, definitely bookmark those libraries! They contain a lot of useful code.
As for its development, I've taken off a few months between jobs to work on this full time. Until now, the site has been accessible only to my Github sponsors, but it's now free and open to everyone. If If you'd like to support the project's continued development, you can sponsor me here: https://github.com/sponsors/steveruizok.
I'll answer questions here but if you want to contact me directly, my DMs are open @steveruizok.
-
How to add live cursors to your product with Next.js and Liveblocks using the public key API.
Liveblocks official example of live cursor.
What are some alternatives?
automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
automerge-rs - Rust implementation of automerge
crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.
logseq - A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. Use it to organize your todo list, to write your journals, or to record your unique life.
MobX - Simple, scalable state management.
pacman-backup - :floppy_disk: Pacman Backup tool for off-the-grid updates via portable USB sticks or (mesh) LAN networks.
milkdown - 🍼 Plugin driven WYSIWYG markdown editor framework.
Visual Studio Code - Visual Studio Code
cardi - A full-featured, static-generated PWA for notes stored in privately owned DynamoDB tables
awesome-react-state-management - ⚛️ ・React state management tools and libraries
kanban - A basic kanban board in a single HTML file using browser native drag & drop and localStorage for persistence
Socket.io - Realtime application framework (Node.JS server)