Teaching the browser to talk to Reading Rewind

Our design note from 11 April 2026 is blunt about priorities: "The product remains primarily a bookmark manager. Read-later and article mode are secondary capabilities layered on top." Everything in this chapter was built with that as the plan.

Between 11 and 28 April, Reading Rewind got a browser extension. One codebase runs in Chrome and Firefox. It connects to your account with a pairing link, syncs each browser's bookmarks as a separate source, and sends all your open tabs to the library in one click. April was our busiest month of the spring, with 52 commits, and 35 of them went in on 24 April alone.

The note also set a rule about deleting. A delete in the browser never deletes anything in Reading Rewind by itself, so if a bookmark disappears from Chrome, the app marks it "deleted in browser" and leaves the decision to you.

Pairing, and what real bookmarks broke

No password goes into the extension. In the app you copy a pairing link, paste it into the extension, and that browser is connected. The first sync sends the whole bookmark tree, and after that the extension only sends small changes as they happen.

Our very first version sent the whole tree in a single request, which was never going to work for a library our size. Before the day was out the snapshot went in chunks.

Real bookmarks turned out to be messier than our test data. On 12 April the sync failed because some bookmarks point at the browser's own pages, such as chrome:// settings screens. The extension now skips them, and the server logs any bad link and carries on with the rest of the batch. For a while every synced bookmark also showed the same date, because the extension wasn't sending the date each bookmark was added.

24 April

A lot of the app arrived in those 35 commits:

  • Each extension install became its own source, so a work laptop and a home computer stay apart.
  • The Sync open tabs button sends the title and address of every open tab, and syncing again updates them in place.
  • The Cleanup Center opened with four queues: bookmarks deleted in the browser, duplicate links, untagged bookmarks and stale tabs.
  • You could tick many rows and tag or delete them at once.
  • The extension moved from a popup into a side panel and asked for fewer browser permissions.

Not all of it went in a straight line. Saved tab sessions, a way to group synced tabs into named sets, went in at 11:06, and its screen came out at 20:59. The folder arrows moved to the left of each row, then to the right. A page title longer than 255 characters broke tab sync. The Clear button took three commits to work, and the last one gave up on clever wiring and made it a plain form.

The bookmarks page also stopped responding that day. Our test library had 19,552 bookmarks in 92 folders, and the page sent all of them to the browser, 8.6 MB of data, before it could draw anything. The Cleanup Center choked the same way on 19,536 untagged bookmarks. The quick fixes drew the rows in slices and split the Cleanup Center into pages of 200.

In a way we were lucky to own a library that size. Slow code showed itself in the first month, long before anyone else's 20,000 bookmarks could find it.

The rest of April

On 25 April the app got its name, Reading Rewind, and the readingrewind.com address.

On 26 April the explorer started loading the folder tree first and fetching bookmarks as you scroll, 5,000 to start with in All Bookmarks and 500 at a time after that. The same day we found that two folders with the same name, say "Tech", confused the folder tree, which had been telling folders apart by name.

By 28 April the home page had extension downloads for both browsers, and we had a small admin area for ourselves.

Next: A quiet summer and a save button we built three times.

More from the build log