What browsers does Octoprint officially support?

Does Octoprint have a list of officially supported browsers? I'd like to know which versions of which browsers are supported, or partially supported, by core/bundled ui code.

I am planning to submit pull requests to Octoprint's front end and I would like to know how "courageous" I can be with modern css and javascript features, etc. (For example: can official code use "alpha" hex colorcodes, like transparent red: #ff000088)

#development #frontend #ui

tagging @foosel

1 Like

No officially maintained list. But in general assume no support for ES6 features because we try to stay compatible to ES5 only stuff that is still deployed on old-ish tablets used for dashboard purposes by people.

I'd say, the closest to a compatibility list is probably the caniuse.com ES5 support matrix then.

Note that OctoPrint's UI is going to be replaced ASAP (read: hopefully we'll have a first shot at something by 2.0, but the bigger focus for that is getting rid of Python 2 and adding a new comm layer), so depending on what you plan to do and how disruptive it will be, it might be better to focus that energy on helping figure out how to build a new UI with dynamic plugin support in React.

1 Like

Awesome news. Can't wait for a 2.0 UI!

The tweaks I have in mind for the current UI are pretty minor (e.g. changing the way the temperature graph draws "dim" lines for target temperatures, as well as changing the draw order so that actual temperatures are always visible)

Oh man. Don't wanna sound like a hipster, but no arrow functions in ES5. :crying_cat_face:

Since Octoprint is already bundling web assets (including javascript), perhaps it wouldn't be stretch to have it transpile ES6 to ES5. :thinking:

If I remember right, Gina did do some experiments in that direction but they weren't very successful. Ideally this would be done with Python (rather than nodejs) so it can be done on the server itself - and without significant changes to the server to incorporate nodejs, since this likely breaks everyone running OctoPrint at the moment and introduces another dependency.
Distributing the compiled assets would be possible, but that would also require changes to the update mechanism and that is also very difficult to do.

I have done this with my WLED plugin - but because I did it from new it was very easy as everything is setup and working right away, without having to migrate users first. I have a Babel/webpack build step.

We could do it by changing the development environment setup and bundle the compilation results in the distributed sources. However, that would frankly be way more overhead than I'd like to invest into the frontend code at this point given that we want to replace it.

1 Like