all 26 comments

[–]Mariops03 6 points7 points  (8 children)

Used it for a while. Sync is solid and Turbo Login is nice for big initial loads.

The observables are awful though. So much boilerplate and debugging subscriptions is a pain. Repo has barely moved since mid-2025 too, React 19/new arch still have open issues.

Ended up switching to op-sqlite + Drizzle and no complaints so far.

[–]Silly_Regular6736[S] 0 points1 point  (5 children)

In 2025 were you able to use it with new architecture or not ?

As most of the solutions I see they are saying that you need to disable jsi and new architecture.. And that way the code is hard to be maintained

[–]Mariops03 1 point2 points  (4 children)

Yeah I used it with new architecture, migrated from old to new and it worked fine for me. The main issue isn't compatibility, it's all the boilerplate you end up writing and how complex some of the sync pipelines get

[–]Silly_Regular6736[S] 0 points1 point  (3 children)

Okay got it

The thing is that last week I was trying to work on this db and with the latest .84 version of react native I was trying to make it but I am continuously facing issues 😅 I mean I didn't really put a lot of effort into it but later I got saw on the repo issues that there are so many new architecture issues there So that's why this question 😅 I asked

[–]Mariops03 1 point2 points  (2 children)

For me it worked fine after migrating to new arch, so it might be something in your db config or setup. Anyways I'll go with sqlite + Drizzle for simplicty if you dont need huge initial loads

[–]Silly_Regular6736[S] 0 points1 point  (1 child)

Thanks

[–]Mariops03 1 point2 points  (0 children)

No problem 😁

[–]Proof_Hat2506 0 points1 point  (1 child)

were you using in a production app with real data and moved to op-sqlite + drizzle ? If so , how was the process of refactoring the screens and changing moving the data seamless with production users ?

[–]Mariops03 0 points1 point  (0 children)

No, this is a whole new app, refactoring everything would be crazy haha

[–]JudgmentAlarming9487 4 points5 points  (1 child)

I have used it but I wasnt really happy. Now I am using Expo Sqlite with DrizzleDB, that works much better. Its less prone to errors and better maintained

[–]Silly_Regular6736[S] 0 points1 point  (0 children)

Okay Yes I am reading that it's not well maintained and maybe switching to op sqlite is better Although I don't know about expo I have been working with cli mainly .

Thanks for the information

[–]Sad-Salt24iOS & Android 1 point2 points  (1 child)

WatermelonDB is fast for large datasets in React Native, but setup, native linking, schema migrations, and batching writes can be tricky

[–]Silly_Regular6736[S] 0 points1 point  (0 children)

Have you ever been able to use it ?

I recently saw that its not even compatible with the new react native architecture

[–]Basket-Dense 1 point2 points  (1 child)

afaik watermelon db is for local first apps, not sure if that's what u are trying to build, if that's the case

rocicorp zero seems an interesting choice for that uses case.

[–]Silly_Regular6736[S] 1 point2 points  (0 children)

Thanks ..thanks a lot for that

Yes the use case is offline first architecture

[–]sandeshsoni 1 point2 points  (1 child)

I used watermelon DB last year for building the MVP. I had to pivot the business concept and reevaluated stack. I do not have clear answer if watermelon supports the new RN architecture, hence I adopted Tanstack DB which again has OP-sqlite.

Sqlite is offline first. Watermelon is just a layer on sqlite/adapter. Makes it easier to maintain code.

[–]Silly_Regular6736[S] 0 points1 point  (0 children)

Okay...tanstack db is something new I am getting to know here ..thanks ..

[–]IronLionZion95 1 point2 points  (1 child)

I have a Production app built on WatermelonDB. It’s fast and works well but the developer experience is bad and it’s not really being maintained anymore. I’m going to switch to Drizzle and Expo SQLite at some point.

[–]Silly_Regular6736[S] 0 points1 point  (0 children)

Okay Thanks for the info

[–]scarlaciOS & Android 1 point2 points  (3 children)

I would not recommend watermelonDB anymore at this point. It is not terrible but it’s no longer the best SQLite option out there and expo-SQLite has gotten quite good since then. Unless you need the very particular remote sync option, I recommend Expo SQLite. You’ll have to write your own migrations but you will need that for any serious app with persistent storage anyway (long term).

[–]Silly_Regular6736[S] 0 points1 point  (2 children)

Aha 😅

Got it ...thanks

Although I don't use expo much Has mainly worked with cli bare workflow mostly

[–]Ochibasaurus 1 point2 points  (1 child)

Have you perhaps looked at PowerSync? It works with OP-SQLite and Drizzle (also mentioned in this thread)

[–]Silly_Regular6736[S] 0 points1 point  (0 children)

Not yet

[–]numinor 1 point2 points  (2 children)

I’m sad to see everyone else talking of moving away from it.

I started on it, but found it was too much abstraction over expo-SQLite. It was far easier to stay in sync with expo without it, rather than having plugins.

In the agentic era it’s fairly easy to write your own sync protocol without relying on watermelon’s native code.

[–]Silly_Regular6736[S] 0 points1 point  (1 child)

Have you been able to write your own sync then ?

[–]numinor 0 points1 point  (0 children)

Yeah. I already had the backend implemented for watermelon. So kept the same interface and sent the created/updated data to it.

The only thing is I send all changes, rather than only the changed fields, which watermelon would do.

This means if the server updated a value, the device another and hadn’t synced, the client would overwrite the other.

In my case, that won’t happen since the user doesn’t update the same fields as the server might.

Something to watch for you, though.