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.
For us, with the current state of web components, we see this as the ideal time to move to all web component UIs going forward. We view it as a strategic advantage.
Random bug report. On Android while making checkbox lists, I always have to hit enter twice to get to the next line. If I hit enter once, the cursor visually moves down to the next line, but once I start typing the new line gets joined back onto the previous line. I notice this happens when I don't add an extra space at the end of the first todo/checkbox item. Sorry to jump on your comment with a bug report!!
(I tried on my Pixel 2 / Android 11 with Swiftkey and Gboard in English and Korean, couldn't repro)
Also, if I tap on the end of a line and press newline, I get another block. If I type something and then press newline, then it happens exactly as ronyeh described (again, only with Gboard in English)
But I'm on Android 11 on a Motorola hyper one with the default Gboard in English. I just downloaded notion today and my OS has no pending updates.
I can repro 100% of the time.
- [ ] my to-do item$
- [ ] my to-do item $
In the above two examples, if I press enter when my cursor is at the end of the line (indicated by the dollar sign), the top example does the wrong thing. The bottom example works fine.