With the new Firefox release 67.0 Vaadin 8 is broken, both on Linux and Windows 10 machines.
https://demo.vaadin.com/sampler/
Can be opened on Chrome/Chromium and with Firefox 66.0.5 (Windows), but not with FF 67.0 on neither Windows nor Linux.
I just checked the https://demo.vaadin.com/sampler/ on my Firefox 67.0 as i just updated it and i can confirm this.
In the console i see this error occuring multiple times.
This does not show up in Chrome.
Wed May 22 12:39:09 GMT+200 2019 com.vaadin.client.ApplicationConfiguration
SEVERE: (InvalidCharacterError) : String contains an invalid character
com.google.gwt.core.client.JavaScriptException: (InvalidCharacterError) : String contains an invalid character
at Unknown.kLb(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.VKb(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.vte(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Qse(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.lse(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.wse(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.KOd(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Pic(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Hic(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Wic(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.d3b(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.kec(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.kGc(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Qad(com.vaadin.demo.sampler.AppWidgetSet-3.js)
at Unknown.$h(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.di(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Ai(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Di(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Ci/<(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.anonymous(com.vaadin.demo.sampler.AppWidgetSet-3.js)
at Unknown.__installRunAsyncCode(https://demo.vaadin.com/sampler/VAADIN/widgetsets/com.vaadin.demo.sampler.AppWidgetSet/com.vaadin.demo.sampler.AppWidgetSet.nocache.js?1558521547992)
at Unknown.__gwtInstallCode(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Qi(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.mj(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.anonymous(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Ai(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Di(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.Ci/<(https://demo.vaadin.com/sampler/ line 9 > scriptElement)
at Unknown.anonymous(https://demo.vaadin.com/sampler/VAADIN/widgetsets/com.vaadin.demo.sampler.AppWidgetSet/deferredjs/AB8E0A7908A2A696EE46E149915F3EB6/3.cache.js)
at Unknown.anonymous(Unknown)
line 9 > scriptElement:1:3063
Basic hello world app created with archetype seems to work. @samo4b was this in your own app or in Sampler?
The reason is apparently that Firefox has added a feature called U2F, which overrides any variable named u2f. See this https://jsfiddle.net/6cewp2Lj/
Seems this was fixed for GWT in https://github.com/gwtproject/gwt/commit/9a9708107b1c460469ec57ba00c2a203703163e5
But the seems to be projected to possibly upcoming 2.9 version: https://github.com/gwtproject/gwt/issues/9619
I can confirm that the 8.8-SNAPSHOT version and the released 8.8.2 works also with our internal application with FF 67.0 in Linux and Windows 10 environments.
Good and quick work, team!
Just wondering if you guys have a deterministic example where the problem occurs. I tested most of our application with 7 and 8 and non had the problem. Is there some kind of special feature we have to use to get this "u2f" generated or just bad luck?
You can go to WEB-INF/VAADIN folder and find the actual widgetset file, and decompress it. Then use e.g. grep to check if it contains "u2f".
Presumably the minifier uses a, b, c,...aa, ab, .... aaa, ... for method names and variables. When you have a large enough widget set then it will get to using u2f at some point
Thanks Artur and Tatu!
Additional note: sometimes the app may break at load because of the issue, sometimes during the usage.
Most helpful comment
Additional note: sometimes the app may break at load because of the issue, sometimes during the usage.