Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

MacRumors

macrumors bot
Original poster
Apr 12, 2001
68,122
38,886


Apple is phasing out UIWebView, which is used by developers for integrating web content into an app in a quick and secure manner. Apple is replacing UIWebView (and WebView) with WKWebView, an updated version, as UIWebView has been deprecated.

apple-developer-banner.jpeg

Apple originally told developers that app updates with UIWebView would no longer be accepted as of December 2020, but Apple is now providing additional time for developers to adopt WKWebView and has extended the deadline period. There's no new deadline in place at this time, with Apple planning to provide an update at a later time.

Along with the deadline extension, Apple today also informed developers that App Store server notifications are able to provide real-time updates on a subscriber's status, allowing for customized user experiences.

There's an option to be notified when a subscriber auto-renews and an option that lets you know when the App Store begins asking users to agree to a new subscription price, letting developers send reminders about a service's value.

Article Link: Apple Extends Deadline Requiring Apps to Stop Using UIWebView
 
The problem is that unless something has changed recently, WKWeb is woefully inadequate as a replacement for UIWebView. In particular, it isn't possible to change out the network machinery under the hood. You use Apple's networking stack, period. Want to do something interesting, such as changing the caching behavior? Too bad. You get what Apple gives you.

Basically, what Apple is saying is that they no longer care about any of those interesting corner cases that WKWebView can't handle, and that developers who need to do these things should choose another platform. That's why folks are shocked that Apple is doing this, just like we were all shocked when they deprecated UIWebView before making WKWebView a full-featured replacement.

Implementation of this ridiculous policy doesn't need to be delayed. It needs to be canceled outright until such time as WKWebView can replace EVERY use case for UIWebView. Best case is late 2021.
 
Ha, and I just this week sent in updates for my two apps where I migrated to WKWebView from UIWebView :) But for me it's alright, the apps are now much improved, given the fact that WKWebView behaves much better as a "browser" view. I only ran into two snags: Default scaling is different so needed to compensate for that, and loading local image files using a "file://" URL is not supported due to security (or rather sandboxing) reasons per default, so needed to handle those URLs myself. Other than that, painless, and I should really have done this years ago, since at least in my use case, WKWebView was way more suitable.
 
I'm a developer and I agree with this, I hate using an app that is just a webwiew wrapper. I think Apple is trying to "encourage" developers to just create a native UI experience. If I'm in an app with a link, just send me to the default browser, don't keep me in your app.
 
Every use-case? That's not happening. Sounds like you're using quirks that Apple either doesn't want you to use any more or wants you to do differently. Reading between the lines sounds like hidden APIs or overloading but I don't have enough experience with this library to comment.
 
  • Like
Reactions: sideshowuniqueuser
In particular, it isn't possible to change out the network machinery under the hood. You use Apple's networking stack, period. Want to do something interesting, such as changing the caching behavior? Too bad. You get what Apple gives you.

That's probably precisely the point. :(
 
  • Like
Reactions: sideshowuniqueuser
I'm a developer and I agree with this, I hate using an app that is just a webwiew wrapper. I think Apple is trying to "encourage" developers to just create a native UI experience. If I'm in an app with a link, just send me to the default browser, don't keep me in your app.
I,m not a developer but I agree complitly, if your app is not in the category web browsers(or equivalent) the correct way to display a web page is to pop up a new tab in the users default browser, people might want to continue using the app fir something else and check the “web content” later, or use a thurd oarty orowser wirh password sync to a service apple/the app developer does not currently support etc. Anyway it should be the yser choice not a random app developer
 
Ya, everything gets depreciated eventually...

Unfortunately, you wouldn't know it because some message references are still in Mac "Console" today. To me, that's the single most stuff up Apple ever did, by leaving these old messages there, even if they are refereces tojust deprecated stuff. If they were as quick with cleaning this up, as they are with getting everyone on the latest OS,, things would be better.

You can't keep stuff around forever, even in hidden//out of the way places like Console, where most users would never see.. That's doesn't give you an excuse.

It's good Apple is moving on on in some direction here, but console is as bad as the Registry on Windows.
 
  • Like
Reactions: martyjmclean
I'm a developer and I agree with this, I hate using an app that is just a webwiew wrapper. I think Apple is trying to "encourage" developers to just create a native UI experience. If I'm in an app with a link, just send me to the default browser, don't keep me in your app.
I'm also an app developer and I prefer WKWebView as I find I can do more with it, not less.
I suspect Apple's motivations are to do with privacy and security and that WKWebView has tighter control over both.
 
The problem is that unless something has changed recently, WKWeb is woefully inadequate as a replacement for UIWebView. In particular, it isn't possible to change out the network machinery under the hood. You use Apple's networking stack, period. Want to do something interesting, such as changing the caching behavior? Too bad. You get what Apple gives you.

Basically, what Apple is saying is that they no longer care about any of those interesting corner cases that WKWebView can't handle, and that developers who need to do these things should choose another platform. That's why folks are shocked that Apple is doing this, just like we were all shocked when they deprecated UIWebView before making WKWebView a full-featured replacement.

Implementation of this ridiculous policy doesn't need to be delayed. It needs to be canceled outright until such time as WKWebView can replace EVERY use case for UIWebView. Best case is late 2021.

*WebView apps are trash and lazy.
Change my mind.
 
Every use-case? That's not happening. Sounds like you're using quirks that Apple either doesn't want you to use any more or wants you to do differently. Reading between the lines sounds like hidden APIs or overloading but I don't have enough experience with this library to comment.

Literally every company I've done any iOS development for for since iOS came out had things that they used to be able to do with UIWebView, but can't do with WKWebView. In some cases, it was core functionality, and the products got dropped entirely. In other cases, features fell permanently by the wayside. Either way, it's a major pain that WKWebView still hasn't reached feature parity with UIWebView after all these years.


In particular, it isn't possible to change out the network machinery under the hood. You use Apple's networking stack, period. Want to do something interesting, such as changing the caching behavior? Too bad. You get what Apple gives you.

That's probably precisely the point. :(

Unfortunately, that makes it much harder (or, in some cases, impossible) to do interesting and useful things, such as:
  • Providing a permanent on-device cache for your app's help content.
  • Using custom protocol compression.
  • Providing an in-app VPN browser that doesn't route everything on your device through it.
  • Writing functional or unit tests that involve web views.
That last one is a real pain, because it means that on iOS, all of your web-view-related tests depend on the server consistently returning exactly the same results for a given request every time, with high speed and 100% reliability. In the real world, none of those things are typically the case, which is why anybody sane uses hermetic tests, where you fake a server response, periodically updating those responses in a controlled fashion so that minor changes on the server side don't constantly break your tests. With UIWebView, hermetic testing is easy because all of the requests are made in-process, and you can swizzle the networking stack or use custom protocol handlers or whatever. With WKWebView, it is impossible, because the APIs for snagging traffic don't let you capture/replace requests for individual resources (IIRC), don't handle POST requests (IIRC), etc.

Everything that's in your web view can be read by the app anyway, so this isn't actually securing anything meaningfully. All it does is prevent all sorts of very useful networking stack manipulation that can be handy in some shipping apps, and can be absolutely critical for writing proper functional and unit tests.
 
*WebView apps are trash and lazy.
Change my mind.

No need to try and change your mind as WebView apps don't get past Apple app store review process for obvious reasons.

There are good and legitimate reasons for using WKWeb in an app for example to take a user to a support page where they can see stuff like known bugs being worked on, FAQ's and anything you don't want to hardwire into your app and be able to update instantly.
Also HTML formatting makes for nice in app document presentation so you can include in-app guides etc in html with graphics which the app will load from memory and not over the net.
 
  • Like
Reactions: amartinez1660
Every use-case? That's not happening. Sounds like you're using quirks that Apple either doesn't want you to use any more or wants you to do differently. Reading between the lines sounds like hidden APIs or overloading but I don't have enough experience with this library to comment.
For most use cases, sure. But every now and again there are use cases that you just can't replicate. Professionally, I work with a few teams of 2-5 developers each, we're all working on the same app. We have 3rd party vendors that we cannot not use, and in some cases the only way to get data is via a webview as the API doesn't (and may never) exist.

We're a small department in the company, just 50ish people, and we've been working on reducing our dependency on this vendor, among other things, for about a year now. And if we can remove the vendor completely in the next year it'll be a miracle. In the meantime we've made the app a worse experience for our end users, just to appease Apple. Only to find out that we didn't need to do so. Lovely.
 
I don't understand why Webview is a thing even?

I'm not a dev, just Apple fan, but this bugs me. Why we have so many "so-called apps" that just use web stuff warped in an app? I could just open up Safari?

Also, I hate scaling on my XS Max vs 6S. I feel like i have all the extra space but everything is zoomed? (Facebook app (i assume web wrapper some kind) is differently scaled between "native app" and Safari?!?)
 
No need to try and change your mind as WebView apps don't get past Apple app store review process for obvious reasons.

There are good and legitimate reasons for using WKWeb in an app for example to take a user to a support page where they can see stuff like known bugs being worked on, FAQ's and anything you don't want to hardwire into your app and be able to update instantly.
Also HTML formatting makes for nice in app document presentation so you can include in-app guides etc in html with graphics which the app will load from memory and not over the net.
Agreeing with this as an user.
I really don’t mind if there’s HTML based sections, text, graphics or even full browser functionality. Even in the online case, a lot of the times I really don’t want to get out of the app.
Example: chatting on Discord and someone sends a link to an animated gif, it would be annoying to tap it and the thing pans to a new app safari tab window, see it, click on the open tabs display, close that last one, app change back to discord... nah, it’s good to see the image open in built-in browser, tap done when... well, done.
Example 2, I actually mostly read macrumors at random hours of the day (like currently 3am) on my phone via the RSS reader app Feedly.
I think it’s definitely a webview for the links opened, with an option to open in safari button, share and whatnot... 99.9% of the time I’m just inside feedly’s builtin browser, including this very same comment. Once done I just tap done and get to where I was on the feed list.
 
  • Like
Reactions: Seoras
I'm a developer and I agree with this, I hate using an app that is just a webwiew wrapper. I think Apple is trying to "encourage" developers to just create a native UI experience. If I'm in an app with a link, just send me to the default browser, don't keep me in your app.

I hate it when apps do this, specifically Twitter, Facebook and LinkedIn!
 
I don't understand why Webview is a thing even?

I'm not a dev, just Apple fan, but this bugs me. Why we have so many "so-called apps" that just use web stuff warped in an app? I could just open up Safari?

Also, I hate scaling on my XS Max vs 6S. I feel like i have all the extra space but everything is zoomed? (Facebook app (i assume web wrapper some kind) is differently scaled between "native app" and Safari?!?)
Frameworks like Ionic use it, allowing developers to create an app in HTML/CSS/JavaScript and create apps for multiple targets like iOS and Android.
 
  • Like
Reactions: jbrwTP7u
Frameworks like Ionic use it, allowing developers to create an app in HTML/CSS/JavaScript and create apps for multiple targets like iOS and Android.
Which means they wrap some web resources into the app leading me to believe I'm having a native experience?

Personally i find Facebook app ****** (i don't know why Apple allows cluster**** like that) and the web version works just fine (plus smaller zoom/DPI or whatever it is).

I think Spotify is the same, ****** UI/UX across the board, just because they are lazy to write a proper app.
 
Which means they wrap some web resources into the app leading me to believe I'm having a native experience?
It is not a native experience, but it is a good compromise to get good performance if correctly used and interesting for smaller companies/teams.
 
It is not a native experience, but it is a good compromise to get good performance if correctly used and interesting for smaller companies/teams.
What about Facebook? I feel like they can't write a good app for ages now. Is that intentional or they are just that stupid/lazy/incompetent?
 
Which means they wrap some web resources into the app leading me to believe I'm having a native experience?

Personally i find Facebook app ****** (i don't know why Apple allows cluster**** like that) and the web version works just fine (plus smaller zoom/DPI or whatever it is).

I think Spotify is the same, ****** UI/UX across the board, just because they are lazy to write a proper app.
Spotify seems like a native app to me and it’s a good UX IMO. Why do you think it’s nonnative?
 
  • Like
Reactions: ArtOfWarfare
Spotify seems like a native app to me and it’s a good UX IMO. Why do you think it’s nonnative?
Bugs. Slow responses. Incosistencies. It looks like they made Mac/Windows/iOS/Android app as a webwrapper and it is frickin annoying.

To be honest I would make a switch to Apple music if it is a little bit more widespreaded. But again, maybe i'm completely wrong.
 
  • Disagree
Reactions: ArtOfWarfare
I bet many people who hate web wrapper apps can’t always tell when they’re seeing a web view. Some apps do a great job of hiding it for simple content views. Other apps, however, are absolute hogs - anything made by a team at Facebook, for example.

i don’t think they need to be eradicated, but I would like the ability to toggle per app how external links are handled. I use the fantastic Choosy on Mac, and it spoiled me. “Always open YouTube URLs in Safari,” ”open any links in Outlook emails in Brave,” etc.
 
  • Like
Reactions: ArtOfWarfare
This seems like a step backwards. Developers want to be able to use Blink, Gecko, or their own homegrown web client engine. WebKit is incredibly poorly documented and periodically doesn't behave the same as the others (namely, Gecko, which is easily the best documented engine.)

Although... honestly, what would stop us from doing that? How would Apple notice if a developer submitted an app that had its own javascript engine instead of using WebKit?
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.