🏠 back to Observable

Feature request: Persistent sort order for notebooks

I’m cleaning up my notebooks, trashing some, updating others. And I’m going slightly mad, because every time I modify a notebook it jumps to the beginning of the list. The effect:

  • I need to reorient myself on whatever page of the list I’m going through, because the context given by the preceding/following notebooks constantly changes.
  • The notebooks that I have actually created and worked on in the past days get pushed back further and further.

Please consider adding an option to sort notebooks by their creation date, so that users can develop a mental map of the “vicinity” of notebooks and thus navigate more quickly.


My notebook inventory is a mess right now after several changes to various notebooks. Please offer a stable sort order.



Bump. I’d really like an option to view my notebooks in the order in which they were created.

1 Like

Having recently started to update some old notebooks I’m also starting to really feel this (it already was a mild annoyance before). Outside of collections I tend to mentally organize my notebooks by creation date, but since Observable doesn’t respect that I’m searching for a needle in a haystack sometimes


The Mac implementation of window switching (command-`) does the same kind of ordering that moves any selected window to the top of the stack, with the result that it is impossible to go through all of the windows in any kind of structured way. Once you have more than 4 or 5 windows in the same app, it becomes infuriating. The behavior changed maybe a decade ago (?) and has been bothering me intensely on a daily basis ever since.

The workaround I use for Apple window switching, which should also work here, is to only ever cycle through in reverse order, starting from the bottom of the stack. Then if you edit something and it gets promoted to the top of the stack, the order of everything else near the bottom will at least remain stable.

In the Observable case, it would be nice to have a choice of sorting by recent edits, publication date, or maybe number of likes.


Can you add all your notebooks to an ordered collection as a work around?

I have over 400 notebooks (and growing), so … not really.

Can we script a bulk import into an ordered collection with a user supplied sort function?

Sure, I wrote my API bridge specifically for cases like this one:

But it’s such an aweful crutch that I’d rather invest the time in writing a proper notebook frontend based on the bridge, with custom sorting and filtering.

I guess what frustrates me the most is that to me this is such a seemingly simple, yet at the same time essential request. There’s a lot of focus on presentational features, but the organizational features haven’t changed a lot since the early days (with the exception of Teams, of course).

That, and the old issue of communication.


Oh great idea in the bridge. We can add top level auth’ed features via bookmarklets!

To be fair, Observable added ordered notebooks, which very very almost covers your use case of a “persisted ordered”, in that, it persists a user configurable order. We need “virtual” ordered notebooks which are customisable queries onto our notebooks so we don’t have to manually tend to our collections periodically.

Its a power user problem though so I don’t mind if their mind is on other things. I am happy to see there exists a path for us to fix ourselves.

Wow! Looks like just a handful. I sorta imagined you (and several others) would have counts in the thousands. I have 3,751 notebooks and a very rough time finding anything.

I appreciated when @wiltsecarpenter released the notebook on searching within Observable , which helped a lot. Nested collections was also a real enhancement when that came out. But I generally still ache for persistent sort order, a bit more of a UI centered means of searching my collections [again, thanks that we can now achieve this with attributes], and also some means of filtering for time ranges, including differentiating between ‘created’ and ‘modified’ as @bumbeishvili also requests here.

1 Like

My request is for a persistent order though, implying that I want it to be automatic and unchanging. And outside of hacks like synching via Observable’s internal API, the process of managing an ordered collection, in which the most recently created notebooks appear at the top, would be absurdly complicated: add notebook to collection (4 clicks), go to collection (2 clicks), find the notebook at the end of the collection and drag it all the way to the top. For every notebook. Yeah … no. :slight_smile:

Where do you draw that line? Also, I’d think that “power users” (a.k.a. “content creators”) should be one of the primary target audiences, especially if you’re expected to manage most of your work in Observable (Teams).
I understand that several UX experts have joined the team in the past months, but the lack of communication makes it impossible to judge wether the problem will be solved with just a little bit more patience.

That doesn’t sound healthy! :sweat_smile: You know that you can delete notebooks, right?
My rule of thumb is: if a notebook is done and I don’t expect anyone to look at it or use it (or even find it), there’s no point in keeping it around.


But it’s such an aweful crutch that I’d rather invest the time in writing a proper notebook frontend based on the bridge, with custom sorting and filtering.

Maybe a FUSE filesystem?

I’m afraid you’ll have to be more specific.

It would be cute to be able to load all of your notebooks as a filesystem, so that they appear as ordinary text files on disk, with the appropriate metadata.

Then you could use your operating system’s standard tools like the file manager, etc.

There appear to be several HTTP or HTTP-based FUSE implementations, but the support for custom extended attributes seems lacking. There is also the problem that a notebook can have multiple URIs (some of them not even queryable). While it would be an interesting experiment, I’m not sure how practical it would be.

No, I was talking about a plain old JS frontend, in Observable, using the API bridge:

  • query /user/documents and cache in localStorage, add API for atomic updates and UI for reindexing
  • add tabular view with customizable column selection and order (e.g. via select2 / selectize or similar)
  • add multi-column sort (asc, desc, unsorted) based on column order
  • add basic filtering (visibility, is fork, open suggestions, in collections, has comments, … - anything that doesn’t require separate metadata requests)
  • integrate Observable search, scoped to user
  • add bulk selection / actions (mainly assign to collection/s), with atomic updates to cache
  • perhaps add alternative representations (thumbnail / setcard view)
  • extended filtering (own vs foreign forks, assigned collections, open comments, custom thumbnail, … - extremely expensive to index)

… basically stuff like that.

Is the MVP
feature we would all like. I think a bookmarklet could do that one job without cross-site scripting. It needs to add recent notebooks to the OrderedByCreationDate ordered notebook.

The MVP is basically done, but there’s a hitch: The creation date is not directly accessible. Instead one has to query the history and look for the “created” event. Which means one additional request per notebook. :man_facepalming:

Not sure why I hadn’t noticed this before.


I was half joking about the FUSE filesystem, but this cute thing just popped up today https://omar.website/tabfs/