TypeError: window.requestIdleCallback is not a function

Describe the problem you’re having:
After last git pull I get Unhandled Exception popup on each article.
Stack trace is: Headlines.row_observer<@http://myserver/tt-rss/js/Headlines.js?1544513393:43:4

If possible include steps to reproduce the problem:
Login to tt-rss, popup appears at once. If I close it and open any article - it will reappear.

tt-rss version (including git commit id):
v18.12 (f3c04fc)

Platform (i.e. Linux distro, PHP, PostgreSQL, etc) versions:
Debian v8.11, PHP 5.6.38, mysql 5.6.37

Please provide any additional information below:
Before last update all was working fine. Just oneclickpocket plugin stopped working, I’ve disabled it now.

web browser + version?

Firefox ESR - 52.9.0 (32bit)

i’m sorry i’m not going to support your primordial browser
current ESR is 60, you have no excuse to use something from 2017

Ok, Confirm that there are no issues with latest FF. Sudden issue with old FF was kind of not expected as all was working fine before.

I use the latest Firefox so I’m not affected, but I thought I’d let you know that it also doesn’t work on Safari. At least according to window.requestIdleCallback() - Web APIs | MDN .

someone convince me to care about apples and microsofts garbage-tier also ran browsers
i’ll wait

After an update today (from 93dfdb2fc to 54aeb6f59) Tiny Tiny RSS no longer works with SeaMonkey 2.49.4. When I log in, I get the following “Fatal Error” dialog:

Fatal Error

Browser feature check failed: window.requestIdleCallback not found.

Additional information:
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4

Tiny Tiny RSS still seems to work with other browsers.

tt-rss version (including git commit id):
v18.12
54aeb6f5928a03e5a44da48629ebd8dea6fde941

Platform (i.e. Linux distro, PHP, PostgreSQL, etc) versions:
Raspbian 9.6
PHP 5.6.33
PostgreSQL 9.6+181+deb9u2

i’m not even going to ask

e: i’m also not going to cater to software hipsters and luddites

From doing a bit of research, it seems that the function TTRSS is complaining about is “experimental technology” that is not widely supported. Firefox 55+, Chrome 47+, and Opera 34+ can handle it, but earlier versions, and other browsers, cannot.

I wouldn’t call SeaMonkey a luddite browser (Firefox was essentially forked from it, and in spite of Mozilla’s indifference the two browsers still share a common code base and some developers and development infrastructure) but the latest version is lagging behind the browser engine core. I guess I’ll just revert to an earlier version of Tiny Tiny RSS while I wait for the next browser upgrade.

it’s not even about this particular method of window object, adding a workaround for it would be a one line source change.

what this is about is establishing some platform requirements for the frontend, because taking into account garbage like safari not having anything implemented or working properly, ever, is tiresome.

people don’t expect me to maintain compatibility with someones ancient piece of shit server running PHP 4.0, forever. in exactly same fashion i’m not going to support web browsers feature-stuck in the last century, indefinitely, because of people who just can’t move on.


oh you don’t say

(released 2017)

(released 2015)

i’m sorry your dead progenitor of firefox couldn’t merge an ‘experimental technology’ that was implemented everywhere else that matters years ago.

i suggest checking out something from 2015, installed on a debian squeeze server, to be period accurate with your browser.

this was a nice release, i think: https://git.tt-rss.org/fox/tt-rss/src/1.15.3

So am I, but I’m willing to put up with some delay in implementing features in order to avoid having to use Firefox’s Fisher-Price interface. I think you know, though, that cherry-picking individual features to merge isn’t always practical. The browser core is a separate module shared by Firefox, Thunderbird, and SeaMonkey, and it gets upgraded as a unit. Recent (well, 2017-ish) changes broke compatibility with the front ends and add-on APIs, and when Mozilla cut funding, the latter two projects haven’t been able to keep up on the development work. (Previously, the three applications were usually able to maintain near-simultaneous feature parity.) The work is still happening but it’s taking a while.

Anyway, none of this should be construed as a demand for you to provide a workaround. You set whatever platform requirements you’re willing to support. If my system doesn’t meet the requirements, I’m willing to wait until it does.

well since you were being so civil about it i went through the other newer stuff that tt-rss is using and it seems that indeed this idle thing is a sole outlier, therefore in this particular case adding a hard dependency on it seems like going a bit too far. therefore, it is no more.

i guess ES 2015 remains the biggest requirement for now.

e: well at least i got an excuse to shitpost a bit, which is never a bad thing

:cry:

:sunglasses:

(Though in truth I’ve been migrating away from Apple since their stuff has gotten even more overpriced than what it used to be.)

yeah i guess ultimately this wasn’t the hill to die on :shrug:

it seems that indeed this idle thing is a sole outlier, therefore in this particular case adding a hard dependency on it seems like going a bit too far. therefore, it is no more.

Oh, thanks for reconsidering the matter.

at least i got an excuse to shitpost a bit

Having read these forums for a while, I’ve become inured to it (as a spectator, anyway).

Just a heads-up guys — the latest commit will mean incompatibility for Safari browsers on both macOS and iOS (in fact this affects all browsers on iOS as all of them use webkit). It throws out the following error:

requestIdleCallback error

Not sure if @fox would re-consider not making it a hard dependency like he did back in Dec 2018, but all other browsers (I’ve tested Edge, FF and Brave) on macOS would work just fine. Just SOL for iOS though.

they still haven’t implemented it? what’s wrong with apple.

anyway, we already have global css override, maybe it’s a good idea to add a similar thing for js, so that people could add their polyfills or whatever globally.

https://git.tt-rss.org/fox/tt-rss/commit/27ab16b6dc649fbda0ee329b42f1882623f9cba6

e: i haven’t checked but if link is not enough for polyfills script could be embedded.

They don’t care how things work, as long as the marketing is good.

Anyway, I don’t have an Apple device near me at the moment, but I think this is available as an experimental feature in Safari. On an iPad/iPhone: Settings > Safari > Advanced > Experimental Features. Toggle requestIdleCallback on. While you’re there, toggle Lazy Image Loading on, too.