Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Very slow webviews on El Capitan #65

Open
OleksandrRakovets opened this issue Aug 1, 2015 · 10 comments
Open

Very slow webviews on El Capitan #65

OleksandrRakovets opened this issue Aug 1, 2015 · 10 comments

Comments

@OleksandrRakovets
Copy link

Hi, did you check any of MacGap projects on OS X 10.11?

I've got mine performing very slow, basically it reacts to any click or key press for 30 seconds.

Please help with the necessary updates for the upcoming Mac OS.

Many thanks.

@omarkilani
Copy link

@OleksandrRakovets please see my bug report here: https://bugs.webkit.org/show_bug.cgi?id=149761

It's a WebKit issue, not a MacGap issue.

We have a mostly rewritten MacGap under development at @rememberthemilk that solves these issues.

I hope we can clean it up and put it up on GitHub soon.

@rsaccon
Copy link

rsaccon commented Dec 9, 2015

@omarkilani, that sounds great. Please let us know here when you release it.

@omarkilani
Copy link

@rsaccon I will.

I wouldn't hold my breath on Apple fixing WebView however. So if someone wants this to work in the meantime, you need to port your code to WKWebView. Unfortunately that means all the JS/Obj-C bridging needs to be rewritten, Notification Center integration needs rewriting, mouse wheel/touch pad events need forwarding, etc, etc.

Or, never use GPU rendering.

Kind of a huge PITA just to put a frame around a web app. :)

@jeff-h
Copy link
Member

jeff-h commented Dec 9, 2015

@omarkilani Sounds intriguing. Is your MacGap rewrite primarily to move to WKWebView? Would it be appropriate to think of this as a potential MacGap 3?

@Montoya
Copy link
Contributor

Montoya commented Dec 9, 2015

I want to add a +1 to seeing this rewrite added to the repo, even if it has to be as an optional branch!

@omarkilani
Copy link

@jeff-h it uses WebView on 10.9 and WKWebView on 10.10+. I don't know if I'd call it a rewrite, more of a 'hack it until it works for us'. :)

We're still solving problems (WKWebView public APIs are fairly limited, so doing simple things like setting user agent is a PITA). Last issue was exposing geolocation APIs, currently we're figuring out why zoom (Cmd-+/-) doesn't work in WKWebView.

Also needs a JS shim between the actual web app/site and ObjC/MacGap.

I have no idea how long it would take to get it non task specific...

We kind of started with a simple task (put web app into Mac wrapper for Notification Center) and ended up putting 6 months of work into making it do simple things. :(

@idoza
Copy link

idoza commented Feb 23, 2016

Hey @omarkilani . Any good news for us? it seems like a very common problem.

@omarkilani
Copy link

@idoza no good news I'm afraid. We gave up on WKWebView and are redeveloping with Electron.

We were at a point where we started including private headers to access functionality like WebSQL and decided it was time to move on because you can't get that into MAS.

@philippedcote
Copy link

@omarkilani Since you gave up WKWebView and are redeveloping with Electron, how is it going to far? Thank you.

@omarkilani
Copy link

@bsidepcote Great! Should have done this sooner, but hindsight, etc. :)

The fact is that the original issue in WebView is still there, and no acknowledgement that the bug exists has been given in 6+ months -- highly unlikely it'll ever be fixed considering the focus has shifted to the multi-process WebKit.

So then you need to look at WKWebView, which is lacking basic functionality like zoom, print, offline storage, etc without needing to include private headers. If you include private headers you can't get into MAS.

With Electron, you can program your thing in JS instead of ObjC, get into the MAS, and support both Windows and Linux builds of the exact same thing with the addition of 2 command line args.

We're still needing to extend the basic system to do things like notifications on Win7/8 (it only supports Win10 notifications natively), but we had to do those things with WKWebView anyway.

Things that work out of the box on Electron:

  1. Zoom
  2. Print
  3. Geolocation
  4. Offline storage (WebSQL/IndexedDB, localStorage)
  5. Notifications on OS X, Win10.

There are many more, but those are the things we use.

The only downside is that the .zip or whatever for the app is much larger due to shipping your own browser, but that's a small price to pay.

I'll also mention that Blink is much faster than WebKit at rendering things like CSS animations, DOM changes, etc, etc that it was probably worth doing anyway.

Hope that was enough info.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants