Tuesday, April 9, 2024

OmniFocus 4.2

Ainsley Bourque Olson:

For anyone running the Pro edition of OmniFocus, this release also introduces some very exciting new custom perspective rules that support filtering based on dates, repeats, and more:

  • New “Has date in range” rule type enables filtering a perspective by assigned date range.
  • New “Is repeating” rule enables filtering repeating tasks.
  • New “Is project, group, or neither” rule type enables filtering for projects or groups.
  • New “Is in single actions list” rule type enables filtering for items in single action lists.


Also for anyone running the Pro edition of OmniFocus, Omni Automation now supports “Install Links” for simplified Omni Automation plug-in installation.

Release notes:

In direct downloads of the app, the icon chosen in Appearance Settings will continue to be used in the dock when the app isn’t running.

Ken Case:

After some heroic spelunking, debugging, and tuning of our SwiftUI outline view, we’re now testing a performance improvement for OmniFocus 4.2 which makes adding an item to an inbox with 100+ items 20x faster.

The outline performance on iOS is indeed much better.

The watch experience continues to be frustrating, with slow syncing that doesn’t trigger automatically nor always complete. After the update, the complication was stuck showing a count of actions that didn’t match the app, and the digits were truncated. I eventually fixed it by removing and re-adding the complication. I assume there’s some sort of OS issue here because I see similar problems with Lock Screen widgets on iOS, e.g. Weathergraph stuck showing a temperature from a week ago.

I’m going to try removing OmniFocus from my iPad, because even leaving it as the frontmost app doesn’t seem to get it enough background time for it to stay in sync when I don’t touch the iPad for a few weeks. My hope is that, with the iPad out of the mix, syncing will be faster everywhere and therefore more reliable on the watch.


Update (2024-04-26): Weathergraph:

Re: Widgets getting stuck (they stop updating).

I think I fixed everything I could on my side, and there is a pretty serious issue in iOS/watchOS (since 17.0/10.0), which I finally managed to catch in the wild and reported to @apple.

So far device restart is the only help :/.

Update (2024-05-07): Weathergraph:

Sadly, the answer is “we know it’s broken (and we might fix it some day, can’t tell when).”


Meanwhile, if the widgets get stuck, the only cure is device restart.

Update (2024-05-28): Ken Case:

We were having trouble reproducing the performance issues that some people are seeing, but finally found a reliable way to reproduce it today and are testing a fix now.

All of the time was being spent in SwiftUI, not our code, which made it especially tricky to track down since there wasn’t anything we could add to our code to try to figure this out. It turned out to be the result of a rounding error, so it was very dependent on the screen size, screen content, system font, and scroll position. Thanks to someone sending in an anonymized copy of their database and the steps that were reproducing it for them, we figured out that we could reproduce it with that database when we set the app’s text size to be slightly larger than the default.

So we tracked down the problematic comparison, made sure it didn’t care about positioning differences within 1/100th of a point (which was causing it to render and re-render the same content over and over again for people who were affected), and this fix will be in [4.2].

2 Comments RSS · Twitter · Mastodon

Hi Michael, I now had another deep dive into widgets with Weathergraph, and, well, it's me but it's also watchOS/iOS:

There is a strict limit for daily number of widget updates (roughly 3 per hour), I now keep track of updates, and throw away the ones that would go over the limit even in cases where the user would expect it. One such case is user changing the setting that affects the looks of the widgets
I asked Apple dev support if there would be a possibility of letting the app update its widgets freely while it's in the foreground, but no such luck. User playing with widget looks can easily deplete the update counter.

Another issue is a WidgetKit bug (I have seen it since iOS 17/watchOS 10, but only recently have caught it on my device and was able to to see related WidgetKit logs in Console) where it caches the bitmaps of rendered widgets, and sometimes (maybe during app updates, or race condition?) manages to lose them. Then the widgets get stuck (no amount of widget reload from the app helps) until a device restart.

@Tomas Thanks for that information and for your workaround efforts!

Leave a Comment