May 6, 2015 11:00 am

A break from the past, part 2: Saying goodbye to ActiveX, VBScript, attachEvent…

We recently posted “A break from the past: the birth of Microsoft’s new web rendering engine”, an in-depth look at the background and motivation behind building a new rendering engine to power Microsoft Edge. A key factor described was the ability to make a break from legacy Internet Explorer-specific technologies that had been built up over the years.

In this post, we are sharing a list of legacy IE technologies and features that are not part of Microsoft Edge. Not supporting these legacy technologies in Microsoft Edge has a number of benefits: better interoperability with other modern browsers, improved performance, security & reliability, and reduced code complexity, just to name a few. And just like all good developers, ours love to delete code – over 220,000 lines of code in MSHTML have been removed from Microsoft EdgeHTML!

Graphic showing lines of code removed and interoperability fixes

We’re also sharing more about how we plan to introduce new web platform features to Microsoft Edge using concepts like feature flags and API trials, with the goal of preserving the ability to experiment with new capabilities which eventually lead to stable, interoperable implementations across browsers.

Technologies and APIs not supported in Microsoft Edge

Here are some key technologies which will not be supported in Microsoft Edge. A number of these had been deprecated in the past few releases, but moving to a new engine allows us to remove support completely. To ensure future compatibility with Microsoft Edge and other modern browsers, we recommend against any future development or deployment of these technologies. These technologies will continue to be supported in Internet Explorer on Windows 10 for users and enterprises who depend on them.

Technology Why it existed Why we don’t need it anymore
ActiveX ActiveX is a binary extension model introduced in 1996 which allowed developers to embed native Windows technologies (COM/OLE) in web pages. These controls can be downloaded and installed from a site and were subsequently loaded in-process and rendered in Internet Explorer. The need for ActiveX controls has been significantly reduced by HTML5-era capabilities, which also produces interoperable code across browsers. Microsoft Edge will support native PDF rendering and Adobe Flash as built-in features rather than external add-ons.We recently demonstrated our early work on a modern, HTML/JavaScript-based extension model to provide extensibility beyond what is available with HTML5. We will enable this new model after our initial release of Microsoft Edge this summer and we look forward to sharing more details soon.
Browser Helper Objects (BHO) BHOs are a binary extension model introduced in 1997 which enabled developers to write COM objects that were loaded in-process with the browser and could perform actions on available windows and modules. A common use was to build toolbars that installed into Internet Explorer.
Document modes Starting with IE8, Internet Explorer introduced a new “document mode” with every release. These document modes could be requested via the x-ua-compatible header to put the browser into a mode which emulates legacy versions. Similar to other modern browsers, Microsoft Edge will have a single “living” document mode. In order to minimize the compatibility burden, features will be tested behind switches in about:flags until they are stable and ready to be turned on by default.
Vector Markup Language (VML) VML is an XML-based format for 2D vector graphics, originally proposed in 1998 and originally supported in IE5. 2D vector graphics are supported via Scalable Vector Graphics (SVG) which provides interoperability across modern browsers.
VBScript VBScript is a scripting language modeled after Visual Basic. It was introduced in 1996 to provide web developers with a language option when scripting on the web. JavaScript has become the de-facto language of the web and is evolving quickly with ECMAScript 6 and beyond. Microsoft Edge delivers the leading implementation of ES6.
attachEvent / removeEvent IE8 and below supported a proprietary model for DOM events, which supported bubbling but not capture and used a global event object rather than passed as an argument to the event listener. IE9 and above support the DOM Level 3 Events standard with addEventListener/ removeEventListener.
currentStyle The currentStyle property retrieves the cascaded style of the element. IE9 and above support the getComputedStyle property (part of DOM L2 standard) to retrieve the final computed style of any element.
Conditional Comments Conditional comments provided a way to embed code that was only targeted at specific versions of Internet Explorer. It is more effective to use feature detection and other progressive enhancement rather than browser specific code in conditional comments.
IE8 layout quirks IE8 specific layout behaviors that were then emulated in later versions of Internet Explorer. Most websites are written for standards-based layout. Sites that require IE8 specific behavior on the intranet can be rendered using Enterprise Mode.
DirectX Filters and Transitions DX filters and transitions enabled web developers to apply various visual effects to elements on the web page. Similar effects can be achieved using standards-based features in CSS3 and SVG.

In addition to ActiveX and BHOs, there are a number of other legacy extensibility points that are not in Microsoft Edge and will be replaced by a unified, modern extensibility model. These include:

  • Binary behaviors
  • Pluggable protocols
  • Shell Helper API
  • Active Documents
  • Custom Download Managers
  • Custom Security Managers
  • MIME filters
  • Custom Print and Print Preview Handlers
  • Explorer Bars
  • Custom Context Menu entries (via registry)
  • Edit Designers
  • Timers
  • Accelerators
  • Webslices

There are also ">hundreds of other non-interoperable APIs which have been removed. In most cases, these APIs now have interoperable, standardized replacements—removed APIs do not necessarily mean removed capabilities. All too often, the presence of these non-interoperable APIs cause site compatibility issues. Removing them makes a substantial improvement to user experience in Microsoft Edge and doubles down on our commitment to the web’s best feature: interoperability.

Preserving interoperability and experimentation on the web

Some of the more notable removals are those where Microsoft Edge supports the latest standard API definition and removes support for MS prefixed versions of the APIs. Examples include CSS Transforms, Fullscreen API, and Pointer Events. This brings up an important topic: vendor prefixes. You’ll see a trend in the vendor prefixes in Microsoft Edge compared to IE:

Graphic showing vendor prefixes in IE11 versus Microsoft Edge

Our support (or lack thereof) of prefixed APIs is data-driven with compatibility as the sole purpose for any that remain. As examples, -webkit-border-radius is still in use on over 60% of page loads and the MS-prefixed Encrypted Media Extensions APIs are still in use on top video streaming services. Because of the impact on interoperability across the Web, these are supported in Microsoft Edge for the time being.

The consensus across the industry is that vendor prefixes cause more harm than good and the necessity of browsers supporting other vendor’s prefixes is a good example of why. Going forward, we’re using feature flags (accessible by navigating to about:flags) to introduce experimental APIs and minting new vendor prefixed APIs sparingly, if ever. Today, you’ll find examples like early implementations of CSS Filters, Touch Events, and HTML5 date inputs in about:flags. We’re also working with other browser vendors on exploring new approaches to experimental APIs that enable easier and broader access to experimental APIs while minimizing the compatibility burden that prefixes incur. Check out this talk (starts around 31 min mark) for an initial proposal we’ve made, tentatively named “API Trials”.

Ready for the future

We hope that this provides some insight into of how Microsoft Edge is leaving behind some legacy in order to provide a great foundation for the future. Please continue to test your sites in Microsoft Edge via the Windows Insider Program or RemoteIE, and give us your feedback via @MSEdgeDev or Connect.

If you have any questions about legacy technologies in Microsoft Edge, or about Microsoft Edge in general, join us live at 2:30 PM PDT on Channel 9 for an open Q&A with the Microsoft Edge engineering team! We’ll be taking audience questions from Microsoft Edge Web Summit attendees, as well as questions to @MSEdgeDev on Twitter with the hashtag #AskMSEdge.

Charles Morris, Principal Program Manager Lead, Microsoft Edge
Jacob Rossi, Senior Program Manager, Microsoft Edge

Join the conversation

    • Support for pinning a site as a live tile in Microsoft Edge is coming in an upcoming update. We’ll share more details once it’s available.

  1. “The need for ActiveX controls has been significantly reduced by HTML5-era capabilities, which also produces interoperable code across browsers. Microsoft Edge will support native PDF rendering and Adobe Flash as built-in features rather than external add-ons.”

    Wait, what the heck, Microsoft isn’t even going to bake in Silverlight?!?!?!
    I realize Silverlight is dead but this is actively supporting Flash instead, as if Silverlight was never invented!

    • PDF is downright evil for a lot of what it’s now used for. In other applications it’s really sweet.

      Quite right, Flash and no Silverlight suggests that Microsoft decision making has been taken over by hoards of flesh eating Borg zombies.

      (Be nice if there were a quoting mechanism here, re-edit capabilities, and markdown/up of some form. Without these the format isn’t as easy to read, as it should be.)

  2. I was hoping for a continuation of technologies that enable me to make the browser do what I want it to.

    Not what some browser designer wants to force down my throat. It’s not the designers fault, they’re held back by focus groups and the thought disease that “if most people are not yet able to do their own thing, lets lock helplessness in and make the innovators more stupid”.

    Really I just want to extend the browser and integrate it with what I need, instead of having this one size fits all misfit of a thing. Complete with a wide range of add-ins and extensions in which I have zero interest.

    I actually want to write my code in .NET rather than JavaScript – debugging proxies – web services. Directly plugged into the browser.

    I sure hope somebody comes up with a decent public domain code base that I can use without wasting too much time, that will last, has a decent programming model…

    The interference of politicians and legal bozos, in the “consent degree fiasco” that shaped modern browsers, sure knocked human progress back.

    RIP browsers. You had potential.

    • Sounds like you want to make a Windows only app. Thankfully Microsoft has wonderful documentation on how to do so.

      • No I don’t think Windows, iOS, Ubuntu. **Don’t define myself** by the OS’s / Execution Environments I use, at all.

        Nope I’m after software that does what I want it to. Based on a common core, extensible as I want, easily integrable to my choice.

        You’re a better man than I, you’re ready to build your own browser, from the ground up. In this age when there is no specification for markup, instead an unpredictable set of moving goal posts, not for me. At least not for general purpose use, not for browsing the “universally broken” Internet. (By which I mean the almost ubiquitous illegal markup that we are cursed with.)

        If you’re serious about building your own browser, I’d appreciate a look into your experiences.

        • Who said I was going to build my own browser?
          Also, no spec? So W3C, and to a lesser extent WHATWG, don’t exist?

          In the list above of Technologies and APIs not supported in Microsoft Edge, which one (or more) is:
          – cross platform
          – “…Based on a common core, extensible … easily integrable …”
          – not replaced by some other technology on the right-most column?

  3. What about the custom context menu entries from the registry? They were somewhat similar to accelerators.

    What about SearchUrl keyword searches?

    What about tracking protection lists?

  4. When can we expect documentation on the “website as app” feature where websites can push notifications?

  5. I am eagerly awaiting your announcement on Silverlight support so I can use the browser and recommend it to customers who need to access Silverlight apps. I am sure the announcement is coming right? I anything else makes no sense. After all Firefox runs Silverlight just fine.

          • As I see it Apple killed it but even then why does Microsoft need to pee on its grave just to insult everyone who invested in it? The browser has stupid Flash but can’t have Silverlight? Come on! Let alone that now the adoption of Edge will be slowed down in companies that have Silverlight apps and there are a good number of those.

    • That would be cool. Give us a way to more directly deliver decent computational content.

      I sure hope they continue the tradition of having a decent extensibility API. Just haven’t mentioned it yet? I fondly remember when I could write pages (for specialised audiences) in javascript (self really I suppose), VBScript and Perl. It wasn’t even that hard to write your own scripting provider, now that was a more advanced time!

    • So all the new features they added are going to be added without new LoC?

      LoC doesn’t translate linearly in to complexity.

      • Part of the story is a simpler and cleaner interface. Having more LoC suggests that’s not really true.

  6. In regards to the border-radius stat, is that for all sites that have -webkit-border-radius alone, or for sites that have that and also have the prefix-less version? I know many devs (myself included) that include all of the prefixes and non-prefixes still in their code. Yes, I realize it’s probably safe at this point to drop this specifically, but I’ve retained it out of habit.

    @Riasat: You can see documentation for the status at . The Push API and Web Application Manifest (I think for apps) are currently under consideration.

    In regards to the new blog system. I like the look, but it was unnecessarily difficult for me to copy Riasat’s name a minute ago in Firefox. Also, having an “Add Comment” button at the bottom of the comments would be nice. I read all of these replies and then had to scroll up to post a comment. That seems unintuitive.

    • Thank you for your reply Brian.

      I am aware of that but I think I remember some demo video talking about allowing websites to be “installed as app” where they have higher privileges like sending notification even if the website is not open.

    • Agreed the radius thing looks like a miscount of what it will actually work with. If not the web is in a more dire state than I realised.

  7. On a sadder note, I think this means it’s finally time to retire my “Inside Dynamic HTML” (Scott Isaacs, 1999) book. Here are some gems from the Amazon reviews:

    “…the examples in the book are Microsoft Internet Explorer centric. However, since the MS implementation is destined to become the WWW3 standard, it’s a great tool for boning up on what will be sure to become the de-facto standard for web scripting”

    “This book has a lot of fancy Java Script, but to those of us who refuse to write anything compatible with Netscrape (in other words, us VB Scripters), this book is difficult to read. You have to translate the miles of JScript into VB Script. Not much fun.”

    “Most of the examples do not work in Netscape browsers.”

    As a ~15-20-year web developer, I’m thrilled to see you guys embracing standards and removing all things proprietary. As my extended family’s IT guy, I’m thrilled about the death of BHO’s and Active-X. My family will appreciate seeing the web at a much higher resolution without 25 toolbars obstructing their view. Now if only I can get them to switch from NetZero…

    • I’d prefer a freer more malleable, more powerful world than one defined by committees and consensus. A core that is general and that people can write exclusively against (if they so choose) co-existing with the opportunity for creative and imaginative people to stand on the shoulders of those giants (toes of those dwarves) and go in new ways. Entirely their own choice, with shared functionality, and the opportunity to do many things without so much limit from needing to spend hundreds of hours re-inventing wheels, making sure it all works…

      After all, when you take a group of people the IQ(each decision) -> Min.IQ(Whole group).

      I’d be careful about the sarcasm though. There are conceptually better ways of designing browser automation, much, much better.

  8. Hope it has a separate search box, in the browser UI. (That all in one location indicator / search box is a bad design idea, which seemingly cannot be implemented without loosing capabilities.)

  9. With VBScript being deprecated, does this mean ASP pages have to get rewritten in JavaScript, e.g. mail submit forms, etc.? Ugh. This is pretty massive for a gazillion sites out there.

    Also, will applications that leverage the Web Browser Control still work?

    • No, the VBScript deprecation discussed in this post is client-side only (in the web browser). VBScript that runs server-side as part of VBScript will continue to work.

      Applications using the web browser control will continue to work but may not receive new features unless they are using the modern WebView control.

  10. This is a welcome change that I honestly thought Microsoft would never consider.

    While I think that what you’ve done is awesome, the way that Microsoft’s browser works is still quite different than other browsers. Previously we would sniff user agents to provide fallback behavior to bring IE up to par with other browsers. The UI sniffing was bad, but often required due to feature detection issues when the thing we were fixing was an API implementation failure *cough* getElementById(id) *cough*

    We can still sniff for ms prefixed features (though this feels bad) but the user agent changes of late (essentially claiming to be every other browser) have made stats tracking a nightmare. Is it safe to presume that “Edge” will remain in the UA?… and also will the version(s) of chrome/safari listed be constantly updated to current versions?

  11. Is there going to be as straightforward a way to disable flash and pdf in the browser? It’s odd that those were specifically mentioned when there was such a focus on dropping proprietary technology. I mean flash is dead, the only thing I miss out is some random ads.

    • Hi Jordan – Yes, you can disable Flash from “Advanced Settings” in the Settings menu, where there’s a toggle switch.

  12. What about com objects like Visio Viewer?, when are we going to get the replacement? I’m currently embedding a visio viewer into an MVC 5 app. I would love to see it become a full .Net Control

  13. What are Edge’s options for supporting digital signatures using smart cards and usb tokens (PKI infrastructure) It was usually implemented using Java Applets which could communicate with hardware. Now when ActiveX is gone and Java Applets altogether, what are alternatives for this scenario.
    Google Chrome offered Native Messaging API for this purpose, but what can we have offered from Microsoft?

  14. So why support native Flash and PDF and not also native Silverlight, native Unity, native VRML, native Microworlds and all those other plugins that were out there and covered specific needs?