My Authors
Read all threads
Well this thread is getting some attention again. Here's a few notes if you want to avoid the same issue that @RoamResearch is facing now:
1. It is fine to use Firebase when developing an app, it really is! What matters is *how* you build your app with Firebase. For instance, don't use Realtime Database (what Roam uses I assume) if you have a large amount of data you need to store. It gets expensive.
Realtime Database has much more downtime than Cloud Firestore. Cloud Firestore is built on Google Cloud's infrastructure from the start and can be multi-region, meaning if one region goes down, you have multiple other ones to rely on.

That's partly why Roam has so much downtime.
If you have a large amount of data you need to store, use Cloud Firestore, not Realtime Database. It's much cheaper (especially for storage) and has a few other nifty features that make it work better for mobile devices.
2. Don't store all of the user's data in one giant document, that's dumb and doesn't scale well. Updating it takes forever and requires reinventing the wheel when Cloud Firestore handles syncing and offline capabilities for you extremely well.
3. Don't architect your app so that things like search run locally. It's slow, doesn't scale with the size of the database, and restricts what you can do (eg. fuzzy search, typo correction, searching across multiple graphs, etc.)
Part of the reason why Roam feels like a laggy mess is the search feature, which also acts as a "quick jump" to other pages.

Try searching through the help database. You won't see what you type until after a second or so: roamresearch.com/#/app/help
That lag on a large set of data is the go-to way to tell that an app was architected improperly. I dare someone to try and run this on an old Android phone and see what the performance is like (hint: it'll be bad).
Anyway, alternatives (which are laid out clearly in Firebase docs, thanks @Firebase for doing a good job of that!) are things like @algolia that give you the same 'instant search' feel but offload the work from the user's device.
This makes for a *much* better experience on web and mobile. The number one rule of the web is *do not block the main thread*, and this avoids that, creating a better user experience.
4. If you're loading large amounts of content in the browser, instead of using an indeterminate loading indicator, use some sort of progress bar so that the user feels like something is happening.

It feels much better than seeing this for five minutes:
Anyway, lemme know if y'all want any more tips! This was just a quick thread but the advice in it should be pretty decent.
Oh and #roamcult again haha
Missing some Tweet in this thread? You can try to force a refresh.

Keep Current with sam wight🌹

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!