|
| 1 | +--- |
| 2 | +title: '...' |
| 3 | +description: >- |
| 4 | + ... |
| 5 | +excerpt: >- |
| 6 | + ... |
| 7 | +authors: [balegas] |
| 8 | +image: /img/blog/yjs-durable-streams-on-electric-cloud/header.jpg |
| 9 | +tags: [durable-streams, cloud, release, sync, collaboration] |
| 10 | +outline: [2, 3] |
| 11 | +post: true |
| 12 | +published: false |
| 13 | +--- |
| 14 | + |
| 15 | +<!-- STRUCTURAL NOTE: This is a release post. Lead with what shipped and why |
| 16 | + it matters. Factual, brisk, no preamble. Let the content do the work. --> |
| 17 | + |
| 18 | +Yjs durable streams are now available on Electric Cloud. Real-time |
| 19 | +collaborative editing as a managed service — sync Yjs documents over HTTP |
| 20 | +instead of WebSockets. |
| 21 | + |
| 22 | +Open protocol. Sub-50ms latency. Runs on the edge. Built-in compaction. No |
| 23 | +infrastructure to manage. Create a service, point your Yjs app at it. |
| 24 | + |
| 25 | +<!-- TONE: Compressed, confident. This paragraph IS the pitch. |
| 26 | + Expand each line slightly into prose but keep it tight. --> |
| 27 | + |
| 28 | +:::info |
| 29 | +- [Create a Yjs service on Electric Cloud](https://github.com/durable-streams/durable-streams/tree/main/examples/yjs-demo) |
| 30 | +- [`y-durable-streams` on GitHub](https://github.com/durable-streams/durable-streams/tree/main/packages/y-durable-streams) |
| 31 | +- [Demo app](https://github.com/durable-streams/durable-streams/tree/main/examples/yjs-demo) |
| 32 | +::: |
| 33 | + |
| 34 | +## Context |
| 35 | + |
| 36 | +<!-- STRUCTURAL NOTE: Brief orientation only. 2-3 bullets. Not a backstory — |
| 37 | + just enough for readers who haven't been following durable streams. --> |
| 38 | + |
| 39 | +- Durable Streams is an open HTTP protocol for persistent, resumable, |
| 40 | + real-time streams. Append-only logs with their own URL that clients can |
| 41 | + read from any position |
| 42 | +- `y-durable-streams` is a Yjs provider that replaces WebSocket-based sync |
| 43 | + with plain HTTP — works with standard load balancers and CDNs, no sticky |
| 44 | + sessions |
| 45 | +- Electric Cloud has been running durable streams services since January. |
| 46 | + Yjs is the latest service type |
| 47 | + |
| 48 | +## What's shipping |
| 49 | + |
| 50 | +<!-- STRUCTURAL NOTE: Concrete capabilities. Lead with benefits, |
| 51 | + follow with specifics. Each bullet = something the reader can now do. --> |
| 52 | + |
| 53 | +- Managed Yjs sync on Electric Cloud — one click to create a service, get |
| 54 | + an endpoint, connect your Yjs app |
| 55 | +- Sub-50ms latency, edge-deployed, scales without you thinking about it |
| 56 | +- Built-in server-side compaction — accumulated updates get merged into |
| 57 | + snapshots automatically, initial loads stay fast as documents grow |
| 58 | +- Awareness and presence out of the box — cursors, selections, user status |
| 59 | + over the same HTTP transport |
| 60 | +- Open protocol, no vendor lock-in — `y-durable-streams` works against any |
| 61 | + durable streams server, self-hosted or cloud |
| 62 | +- Just HTTP — no WebSocket servers, no sticky sessions, CDN-friendly |
| 63 | + |
| 64 | +<!-- ASSET: demo video or GIF of collaborative editor with multiple cursors |
| 65 | + and presence indicators --> |
| 66 | + |
| 67 | +## Get started |
| 68 | + |
| 69 | +<!-- STRUCTURAL NOTE: Show don't tell. The reader should be able to try it |
| 70 | + from this section. One-click setup — keep it minimal. --> |
| 71 | + |
| 72 | +<!-- AUTHOR NOTE: Include the direct link to create a Yjs service on Cloud. |
| 73 | + This is a single click — don't over-explain the process. --> |
| 74 | + |
| 75 | +- Link to create a Yjs durable streams service on Electric Cloud |
| 76 | +- Clone the demo app and point it at your cloud endpoint: |
| 77 | + |
| 78 | +```typescript |
| 79 | +import { YjsProvider } from '@durable-streams/y-durable-streams' |
| 80 | +import * as Y from 'yjs' |
| 81 | + |
| 82 | +const doc = new Y.Doc() |
| 83 | +const provider = new YjsProvider({ |
| 84 | + doc, |
| 85 | + baseUrl: 'https://your-service.electric-sql.cloud/v1/yjs', |
| 86 | + docId: 'my-document', |
| 87 | +}) |
| 88 | +``` |
| 89 | + |
| 90 | +<!-- AUTHOR NOTE: Confirm the exact baseUrl pattern for cloud endpoints. |
| 91 | + Mention it works with any Yjs editor binding — CodeMirror, ProseMirror, |
| 92 | + TipTap, BlockNote, etc. --> |
| 93 | + |
| 94 | +*** |
| 95 | + |
| 96 | +Next steps: |
| 97 | + |
| 98 | +- [Sign up for Electric Cloud](https://dashboard.electric-sql.cloud/) |
| 99 | +- [Try the demo](https://github.com/durable-streams/durable-streams/tree/main/examples/yjs-demo) |
| 100 | +- [Join Discord](https://discord.electric-sql.com) |
| 101 | + |
| 102 | +*** |
| 103 | + |
| 104 | +<!-- DELETE EVERYTHING BELOW THIS LINE BEFORE PUBLISHING --> |
| 105 | + |
| 106 | +<!-- ## Meta |
| 107 | +
|
| 108 | +### Intent |
| 109 | +
|
| 110 | +- **What:** Yjs durable streams now available as a managed service on Electric Cloud |
| 111 | +- **Hook:** Open protocol, sub-50ms latency, runs on the edge, built-in compaction, just HTTP — no WebSocket infrastructure |
| 112 | +- **Takeaway:** Works with your existing stack, no vendor lock-in, cheap to run and scale |
| 113 | +- **CTAs:** Sign up for Cloud, try the demo |
| 114 | +- **Authority:** Electric team, experts in sync, background in CRDTs |
| 115 | +
|
| 116 | +### Title brief |
| 117 | +
|
| 118 | +Direction: Something direct and specific. "Yjs durable streams on Electric Cloud" |
| 119 | +or "Real-time collaboration with Yjs on Electric Cloud". Sentence case, not Title |
| 120 | +Case. Keep it short. |
| 121 | +
|
| 122 | +### Description brief |
| 123 | +
|
| 124 | +For SEO. Convey: managed Yjs sync service on Electric Cloud, HTTP-based (not |
| 125 | +WebSocket), sub-50ms latency, open protocol, no vendor lock-in. Target developers |
| 126 | +searching for Yjs hosting, Yjs sync, collaborative editing infrastructure. |
| 127 | +
|
| 128 | +### Excerpt brief |
| 129 | +
|
| 130 | +For the blog listing card. Max 3 short sentences. What shipped (Yjs durable |
| 131 | +streams on Cloud), why it's interesting (HTTP, fast, open protocol), try it now. |
| 132 | +Match word length of existing post excerpts. |
| 133 | +
|
| 134 | +### Image prompt |
| 135 | +
|
| 136 | +Abstract visualization of collaborative editing — multiple cursors or document |
| 137 | +nodes connected over a network. Dark theme background. Electric brand colors: |
| 138 | +purple (#D0BCFF), green (#00d2a0), cyan (#75fbfd). Center-center composition. |
| 139 | +16:9 aspect ratio, ~1536x950px. High-quality JPG. Use /blog-image-brief for |
| 140 | +a detailed prompt with reference analysis. |
| 141 | +
|
| 142 | +### Asset checklist |
| 143 | +
|
| 144 | +- [ ] Demo video or GIF: collaborative editor with multiple cursors and presence |
| 145 | +- [ ] Code snippet: confirm exact cloud baseUrl pattern for YjsProvider |
| 146 | +- [ ] Info box links: cloud dashboard URL, create-service link, demo repo link |
| 147 | +
|
| 148 | +### Typesetting checklist |
| 149 | +
|
| 150 | +- [ ] Use non-breaking spaces where appropriate to avoid widows and orphans |
| 151 | +- [ ] Title uses sentence case, not Title Case |
| 152 | +- [ ] Check title, image, and general post at different screen widths |
| 153 | +- [ ] No LLM tells: "it's worth noting", "importantly", "in conclusion", |
| 154 | + "let's dive in", "at its core", "in today's landscape" |
| 155 | +
|
| 156 | +### Open questions |
| 157 | +
|
| 158 | +- Exact URL pattern for cloud Yjs service endpoints |
| 159 | +- Performance numbers beyond sub-50ms to include? |
| 160 | +- Specific "coming next" items if any are decided later |
| 161 | +
|
| 162 | +--> |
0 commit comments