Since it's not discussed in this article: Is there a write-up of the "suboptimal tech stack" and the hows and whys of the rewrite?

I joined Notion two years ago, so this era predates me, but I can shed a little bit of light:

1. The web UI used Polymer/Web Components. Simon (CTO/cofounder) described this as building on shifting sand as browsers and poly fills changed the standards and things never seemed to work well for long.

2. There was a lot of Redis with Lua action, using Redis instances as a distributed system for some purpose I don’t understand. This never worked well.

3. There was experimentation with graph database like Neo4J which turned out to be slow for the kinds of queries Notion needed to do. Not sure if this was part of the first era or if it was tried out for the rewrite.

Because of all that, they completely rebuilt the product using the most boring/normal technology possible. Today we run on Postgres/Memcached for data, a Redis for rate limit and queueing, and a Typescript/React front-end.

From the look of the code of their website and the fact that they have 'isReactNative' variable declared, I believe they're using react-native even for their website. Which would make it single frontend codebase for all of their platforms.

But React Native is a mobile framework...how can they use it on their site? I don't think that quite makes sense.