frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

Reverse engineering of Linear's sync engine

https://github.com/wzhudev/reverse-linear-sync-engine
166•flashblaze•3d ago

Comments

tonetheman•1d ago
Whatever a linear sync engine actually is... sigh. Needs more information.
ralfhn•1d ago
Linear.app is a product management tool like Jira. The article describes how they sync their data to their backend
nologic98•1d ago
Is this applicable for a consumer mobile app to use for a local-first architecture (either conceptually or literally)?
isaachinman•1d ago
You could achieve something almost identical with Replicache + (Mobx or Orama). Only mentioning Mobx because it's what Linear uses. That level of the implementation is interchangeable.
artman•1d ago
Most certainly, if the data that the mobile app consumes is bounded and the same data is accessed frequently. Uber for example could have benefited from a sync architecture immensely (I tried to implement one back in the day, but was too late to the party as hypergrowth blocked any attempts at switching architectures). Sync architectures are not only great from a user experience point of view, but also for developer productivity and velocity. Sync takes care of a slew of problems that makes feature development slow. I gave a talk on this at last year's Local First conf https://www.youtube.com/watch?v=VLgmjzERT08&t=4s.
bhl•21h ago
Ecosystem for local-first and mobile is pretty immature, at least for Swift.

In comparison to the web where there's so many libraries e.g. Zero, LiveStore, LiveBlocks, I've yet to find a good GRDB (sqlite abstraction) integration / client.

Offline-first is definitely very strong, but now how do I get data into a remote database with conflict resolution support?

satvikpendem•18h ago
I simply eschewed a relational database and instead used a CRDT like Yrs, Loro, Automerge, etc as my main source of truth. The benefit is that they work well on mobile as well as every other platform, given they're all written in Rust.
artman•26m ago
For inspiration, you might want to look at what we open sourced at Uber, https://github.com/uber-archive/jetstream-ios and https://github.com/uber-archive/jetstream/wiki/Protocol. While pretty immature and quite outdated nowadays, it did power one prototype in production and has a lot of the same concepts that we later used in Linear's sync engine.
mappu•1d ago
If you're using AI to write all those em-dashes, please add a disclaimer.

For humans i would say a shorter summary is Linear.app syncs a client IndexedDB with the server using naive last-write-wins, no conflict detection, no OT, no CRDT. There's a global sync ID that the server is in control of. Most of the article describes minutae of the json schema.

pottertheotter•1d ago
Never thought someone would be anti em-dashes.
dheatov•1d ago
I am anti-reading content generated by probabilistic model of human language, especially if published without much editing. Em-dash is a strong indicator of such.
jurip•1d ago
It used to be it was easy to tell apart Mac and Windows users by em dash usage. Now apparently Mac users are considered LLMs.
ljm•1d ago
Do people have to lower their literacy to the level of a 6 year old and write like complete dumbasses in order to convince you that something isn’t AI generated?

I’m sure that pointing out the word ‘delve’ or the use of em-dash says more about the literacy of the reader than it does about the humanity of whoever wrote it.

chrismorgan•23h ago
I can’t comment about other venues, but on Hacker News it’s not at all. The type of people to assiduously use appropriate dashes, quotation marks, &c. have always been heavily represented here.
MangoToupe•21h ago
> Em-dash is a strong indicator of such.

I see the blind superstition stage of AI has set in

evaneykelen•1d ago
On macOS, typing two consecutive hyphens automatically gets converted to an em-dash in many applications: no AI involved necessarily.
notpushkin•1d ago
I’ve built a custom layout for that (and a bunch of other symbols I frequently use). ⌥ hyphen for en-dash, ⌥ ⇧ hyphen for em-dash (and ⌥ M is for minus): https://typo.ale.sh/

(The idea isn’t new, of course: the default macOS layout’s 3rd layer is absolutely bonkers. I think Ilya Birman was the first: https://ilyabirman.net/typography-layout/)

jdxcode•1d ago
those are the default macos keybindings for en-dash and em-dash characters
bitpush•1d ago
What's the closest opensource library that implements this sync (or similar) scheme? ElectricSQL? ZeroSync? Firebase? Something else?
jaccola•1d ago
Firebase (Firestore is the DB) is the best I've ever used but not open source. MongoDB has Realm which achieves similar, is open source and is OK.
ochiba•1d ago
Realm's sync functionality (Atlas Device Sync) has been deprecated by MongoDB: https://www.mongodb.com/docs/atlas/app-services/sync/device-...
rapnie•1d ago
There is a proliferation of sync tools and little standardization. Here some in local-first space [0]. Martin Kleppmann in his talk last year spoke [1] the need for a generic sync protocol, which was very interesting.

[0] https://localfirstweb.dev/

[1] https://www.youtube.com/watch?v=NMq0vncHJvU&t=1016s

drunkan•1d ago
Someone maintains a list here

https://www.localfirst.fm/landscape

LiveStore shows recreating linear as one of their examples though I haven’t tried it. It was on the front page recently https://news.ycombinator.com/item?id=44105412

devmakasana•1d ago
Linear’s sync engine maintains a local, in-memory object graph (backed by MobX) and persists all changes to IndexedDB, allowing immediate, offline-first updates.

We build same experience at www.teamcamp.app

artman•1d ago
I think the impressive part here isn't Linear's sync engine, but the fact that Evan Hu went through painstakingly reverse-engineer the engine by inspecting traffic and obfuscated code and was able to write documentation that is correct and more complete than what Linear publishes internally.
jtwaleson•23h ago
I have a first attempt at a sync engine for my app, but it's very primitive. Just a websocket that sends updates based on database triggers. If you miss one, you have to do a full reload. I know I'll need something better in a year or so.

Any advice on what route to take with creating a sync engine for a product like mine? Self-hosted, single binary web app (Rust) + Postgres db. Frontend is based on VueJS. I've looked at the readme of Yjs and was considering that. I'm a solo dev for now.

I'm tempted to feed Cursor this description of the reverse engineered solution of Linear, but I doubt it'll be successful.

jgeurts•21h ago
Take a look at Electric SQL: https://electric-sql.com/
jasonjmcghee•19h ago
Yjs isn't a sync engine, it's a data structure for managing distributed concurrent updates and ensuring they are conflict free.

Whether you use it feels orthogonal to the problem you're describing.

---

For a minimal scope solution, have you considered making a table in your database where you log each update? Then you can keep an id of your most recent update locally and on websocket reconnection ask for the updates after your current change.

Similar to how in-app notifications work.

---

For local-first, you can use things like:

https://tinybase.org/ https://electric-sql.com/ https://livestore.dev/

But they are pretty foundational. You use them as your storage layer in the front end. So worth considering the scope of the change.

jtwaleson•16h ago
Thanks, that helps! Like I said I had only very briefly looked at Yjs.

The thought of an "updates" table has crossed my mind yes, but after some time you want a "materialized view" instead of replaying the history from the start, and that's where it gets complicated ;)

I'll take a look at those alternatives. I'd rather have something stable than having to re-invent the wheel. Thanks again!

satvikpendem•18h ago
I'm using Loro as the CRDT as well as Iroh for byte transfer, works well. You can look at ElectricSQL as a Postgres sync engine but it won't do conflict resolution for you and it's hard doing CRDT operations on relational databases on general.

Look into these as well:

https://www.typeonce.dev/article/how-to-implement-a-sync-eng...

https://www.sandromaglione.com/newsletter/lessons-from-imple...

Same author, not necessarily sure why it's on two different domains with different content but they open sourced their sync engine. If you're interested in this topic, I'd follow. Their newsletter as they have great stuff.

ochiba•17h ago
You can look at PowerSync: https://www.powersync.com/

Atari Means Business with the Mega ST

https://www.goto10retro.com/p/atari-means-business-with-the-mega
18•rbanffy•1h ago•5 comments

Figma Slides Is a Beautiful Disaster

https://allenpike.com/2025/figma-slides-beautiful-disaster
136•tobr•6h ago•64 comments

RenderFormer: Neural rendering of triangle meshes with global illumination

https://microsoft.github.io/renderformer/
189•klavinski•9h ago•41 comments

Codex CLI is going native

https://github.com/openai/codex/discussions/1174
12•bundie•1h ago•2 comments

Progressive JSON

https://overreacted.io/progressive-json/
311•kacesensitive•11h ago•150 comments

Why DeepSeek is cheap at scale but expensive to run locally

https://www.seangoedecke.com/inference-batching-and-deepseek/
46•ingve•5h ago•30 comments

I like to install NixOS (declaratively)

https://michael.stapelberg.ch/posts/2025-06-01-nixos-installation-declarative/
66•todsacerdoti•6h ago•36 comments

The Future of Comments Is Lies, I Guess

https://aphyr.com/posts/388-the-future-of-comments-is-lies-i-guess
26•zdw•2d ago•10 comments

Structured Errors in Go

https://southcla.ws/structured-errors-in-go
63•todsacerdoti•7h ago•25 comments

Georgists Valued Land in the 1900s

https://progressandpoverty.substack.com/p/how-georgists-valued-land-in-the
80•surprisetalk•1d ago•44 comments

Google AI Edge – on-device cross-platform AI deployment

https://ai.google.dev/edge
33•nreece•6h ago•1 comments

Show HN: A Implementation of Alpha Zero for Chess in MLX

https://github.com/koogle/mlx-playground/tree/main/chesszero
33•jakobfrick•3d ago•2 comments

A Pokémon battle simulation engine

https://github.com/pkmn/engine
23•rickcarlino•2d ago•6 comments

RSC for Lisp Developers

https://overreacted.io/rsc-for-lisp-developers/
3•bundie•1h ago•2 comments

Father Ted Kilnettle Shrine Tape Dispenser

https://stephencoyle.net/kilnettle
124•indiantinker•7h ago•23 comments

An optimizing compiler doesn't help much with long instruction dependencies

https://johnnysswlab.com/an-optimizing-compiler-doesnt-help-much-with-long-instruction-dependencies/
15•ingve•5h ago•1 comments

Browser extension (Firefox, Chrome, Opera, Edge) to redirect URLs based on regex

https://github.com/einaregilsson/Redirector
29•Bluestein•5h ago•11 comments

Ovld – Efficient and featureful multiple dispatch for Python

https://github.com/breuleux/ovld
70•breuleux•2d ago•21 comments

Show HN: Patio – Rent tools, learn DIY, reduce waste

https://patio.so
129•GouacheApp•12h ago•72 comments

A Beautiful Technique for Some XOR Related Problems

https://codeforces.com/blog/entry/68953
22•blobcode•6h ago•2 comments

Snake on a Globe

https://engaging-data.com/snake-globe/
40•rishikeshs•2d ago•10 comments

New adaptive optics shows details of our star's atmosphere

https://nso.edu/press-release/new-adaptive-optics-shows-stunning-details-of-our-stars-atmosphere/
110•sohkamyung•13h ago•13 comments

Reviving Astoria – Windows's Lost Android

https://trungnt2910.com/astoria-windows-android/
44•upintheairsheep•7h ago•16 comments

Stepping Back

https://rjp.io/blog/2025-05-31-stepping-back
77•rjpower9000•11h ago•26 comments

Why Use Structured Errors in Rust Applications?

https://home.expurple.me/posts/why-use-structured-errors-in-rust-applications/
26•todsacerdoti•7h ago•11 comments

I like Svelte more than React (it's store management)

https://river.berlin/blog/why-i-like-svelte-more-than-react/
3•adityashankar•2h ago•3 comments

Tldx – CLI tool for fast domain name discovery

https://github.com/brandonyoungdev/tldx
40•Brandutchmen•8h ago•18 comments

Cinematography of "Andor"

https://www.pushing-pixels.org/2025/05/20/cinematography-of-andor-interview-with-christophe-nuyens.html
75•rcarmo•2h ago•66 comments

CCD co-inventor George E. Smith dies at 95

https://www.nytimes.com/2025/05/30/science/george-e-smith-dead.html
116•NaOH•16h ago•10 comments

A Lean companion to Analysis I

https://terrytao.wordpress.com/2025/05/31/a-lean-companion-to-analysis-i/
230•jeremyscanvic•19h ago•23 comments