Which Javascript / ECMAScript versions are supported?

Hi,

I’m having a hard time figuring out which version of Javascript is supported by Nova when writing an extension.

There are some relatively new language features I’d like to use, but I’d also like to make sure that all users (however old their Nova / macOS version are) can execute my extension.

Thanks for your help!

Nova uses the built-in version of JavaScriptCore that ships with macOS. Although I’m afraid I can’t speak specifically as to what new-edge language features JavaScriptCore might support in each major release of the system, that might be a good place to look.

Thanks @logan.

I played a bit with the JSC, and created / adapted a JS script to help detect which version of ECMAScript is currently supported on a specific macOS release.

Turns out Monterey 12.6.1 (which I’m running right now) look like it already supports ECMAScript 2022, which is great.

From what I could gather the latest version of Nova (10.3 build 468252) has a minimum OS requirement (LSMinimumSystemVersion) of macOS 11.6, and the oldest Nova version I could get my hands on (1.1 build 204146) has a minimum macOS requirement of 10.14.4:

I’ll try to install these macOS version of run my script there to get a sense of what I can or cannot reasonably use as my base Javascript requirement for my extension, and update this post with the results. EDIT: I did, see the results below.

Nova version Nova build Min supported macOS version Supported ECMAScript version*
1.1 build 204146 Mojave 10.14.4 ???
8 build 332649 Catalina 10.15.7 12th Edition – ECMAScript 2021 †
9 build 381034 Catalina 10.15.7 12th Edition – ECMAScript 2021 †
10 build 460547 Big Sur 11.6 12th Edition – ECMAScript 2021

*The supported ECMAScript version is detected by testing for a subset of expected language features that should be available. This may not be 100% reliable.

† While the script detects ECMAScript 2021 features on Catalina 10.15.7, it’s unlikely to support the full spec as Catalina was released in May 2021 and the full ECMAScript spec was published in June 2021.

However, would you be so kind as to share with us which versions of Nova are still currently supported by Panic? It’d help to know I can get away with only targeting users running e.g. Nova 8+.

Thank you for your help!

1 Like

“Supported” is a difficult term to nail down. We provide customer support to all Nova users back to 1.0 if we are able. However, in terms of receiving software updates, we only support the latest major release (Nova 10 currently). If a significant security issue were to be discovered, we have policy to release updates back to one or two major previous releases, as well, if it’s deemed possible.

In terms of analytics on our installed user base over the last month, over 90% are on the latest major version of Nova, so you are likely fine supporting only Nova 10 as a minimum if you were so interested. If you wanted to ensure a bit more backward compatibility, Nova 9 and Nova 8 exponentially fall off in terms of active users after Nova 10, and anything before that isn’t significant enough in our analytics to mention.

Thank you @Logan, I updated the table in my previous post with the Javascript versions I could detect on Catalina and Big Sur.

It looks like for now using features from the ECMAScript 2020 standard should be safe when supporting Nova 8+ :partying_face:

1 Like