Stats, searches, stripping and safety

Four upgrades to the Subset iOS app

A new version of Subset is now available. We've added summary stats and streaks, support for compound search queries, a URL clean-up mechanism, and basic import and export actions.

You can check it out on iOS via TestFlight now and see it in action on the Subset landing page. Or keep reading for more on each of these additions...

1. Summary stats and streaks

Saving, sharing and searching should be fun. For most, fun is intertwined with indicators of progress. Subset now has some. In the list view, tap the three bars in the top-left to slide out a tray. At the top, you'll see your stats.

There's an indication of your current streak status. One save, share or search a day activates or preserves it—you can also miss a day (only one, and only one missed day per streak) and still maintain it. Underneath the streak, you'll see your save, share and search activity for today and an indicator comparing it to yesterday's counts—totals for yesterday and the last 7 days are there, too.

The counts work like so: a save is counted when you save something via the share extension or do an import, a share is counted when an item is shared and a share record is created, and a search is counted when you enter a search query and take an action (view item detail, open, share, archive, delete).

2. Compound search queries

We've had some sharp search syntax from the jump:

  • Full text search (e.g. "biology")

  • Phrase-specific search (e.g. ""biology"")

  • Field-specific search

    • "t" / "title"

    • "u"/ "url"

    • "e" / "excerpt"

    • "n" / "privateNote"

    • "s" / "share"

  • Date-specific search

    • "c" / "created"

    • "m" / "modified"

However, it only worked for single queries. Now, compound queries are possible.

  • Search for multiple phrases in specific fields—e.g. "t:cafe url:youtube".

  • Do searches involving created and modified dates using YYYY-MM-DD format—e.g. "c:2024-12 u:newyorker", "m:2025-01-16 u:gwern logic".

  • Use "s" / "share" to search a named app from a share record, any share notes, what's included, and (if linked) the URL you linked the record to—e.g. "s:whatsapp menu", "c:2025-01 s:linkedin u:wiki".

  • See all your archived items and those with share records by typing "a:1" / "archived:1" and "s:1" / "share:1" into the search field, respectively.

Compound queries need to have their sub-components separated by a space, and they're all ANDs—"c:2024-12 u:newyorker e:macroecon" equals "Created December 2024 AND has "newyorker" in the URL AND has "macroecon" in the excerpt". Fancy operators (NOT, OR etc.) and things like date ranges and relative dates are pending.

3. URL clean-up

Often URLs that are saved or copied come with parameters—"https://socialmedia.com?s=1343&p=dw2f", for example. Sometimes, there's fragments too—"https://en.wikipedia.org/wiki/Numerical_tower#In_Scheme".

Occasionally, parameters and fragments have meaning. But most of the time they're used by products and services to capture or generate some information about the entity grabbing the URL and doing things with it. This is fine when all you're doing is storing it. But if you're sharing it or frequently accessing it, it's nice to remove the nonsense. So we added the ability to clean 'em up.

Say you've saved a post from X / Twitter and it has some parameters. In the Subset share extension and the detail view in the app, a "Clean URL" button will appear. It will bring up a dialogue that allows you to strip all the parameters and fragments, or select specific ones to remove. You'll be shown the original, what's being removed and the new URL, before confirming the action and saving the new version. And if the title contains the removed elements (which it will if the title is derived from the URL), they'll be scrubbed from there, too.

4. Import and export

The things we save have a disproportionate important in the digital realm. They're harbingers of meaning. So the ability to access and preserve them matters. Thus, basic import and export mechanisms.

The export feature is simple. It allows you to manually exfil your Subset as JSON to an arbitrary destination of your choice. In the background, we also do continual back-ups to your device's filesystem, for safety's sake.

The import feature is for safety's sake, too. It allows you to re-import previous exports, should something happen. It also allows you to import from other systems, though only in a specific JSON format for the moment (available upon request).

On successful import, you'll see a summary of what changed.

What's next?

We already have native sharing, the ability to save something in Subset and share it with other people on other apps, creating a searchable record in the process. But wouldn't it be helpful if you could just share directly with your peers, instead of having to route it through another service?

Yes, yes it would...

Subset logo
Subscribe to Subset and never miss a post.