Joone Hur, Outlook team, Patrick Brosset, Author at Microsoft Edge Blog https://blogs.windows.com/msedgedev/author/pbrosset/ Official blog of the Microsoft Edge Web Platform Team Tue, 09 Dec 2025 16:57:51 +0000 en-US hourly 1 https://wordpress.org/?v=6.6.4 https://winblogs.thesourcemediaassets.com/sites/33/2021/06/cropped-browser-icon-logo-32x32.jpg Joone Hur, Outlook team, Patrick Brosset, Author at Microsoft Edge Blog https://blogs.windows.com/msedgedev/author/pbrosset/ 32 32 Making complex web apps faster https://blogs.windows.com/msedgedev/2025/12/09/making-complex-web-apps-faster/ https://blogs.windows.com/msedgedev/2025/12/09/making-complex-web-apps-faster/#respond Tue, 09 Dec 2025 16:57:51 +0000 https://blogs.windows.com/msedgedev/?p=26139 On the web, speed is everything. The responsiveness of your browser, the time it takes for a web app to appear, and how quickly that app handles user interactions all directly impact your experience as a web user.

At Microsoft, we care deeply about

The post Making complex web apps faster appeared first on Microsoft Edge Blog.

]]>
  • Within the browser itself, by making Edge faster and more responsive.
  • Under the hood, by making the browser engine run complex web apps faster.
  • And finally, by helping web developers build faster web apps.
  • Based on our own experience, we know that complex applications require complex architectures that sometimes rely on multiple windows, iframes, or worker threads. To deal with the slowdowns that these multiple parallel contexts can introduce, we're proposing a new feature for web developers: the Delayed Message Timing API. If you're a web developer, continue reading to learn more about the Delayed Message Timing API proposal, and let us know if it might help you make your own web app faster, or share ways in which the API could be better.

    What causes delays in cross-context messaging?

    Delays can occur when an app exchanges a lot of messages between its various contexts, such as the app's main window, worker threads, or iframes. If those messages get queued and are not processed promptly, delays occur. These delays can degrade the user experience by making the application feel unresponsive. While it's easy to witness the delay, identifying its root cause is challenging with current development tools. Let's review the three types of delays which can occur when exchanging messages between contexts with the postMessage() API, and how the Delayed Message Timing API can help diagnose their root cause.

    Slowdown 1 – The receiving context is busy

    As the following diagram illustrates, the context to which you're sending a message might be processing a long synchronous task, effectively blocking its thread, causing your message to be queued up before it can be processed: Diagram showing two web app contexts (a main document and worker thread). The main document sends a message to the worker thread, but that thread is blocked on a long task and the message gets delayed. To understand if the receiver of the message is busy with other tasks, you need to know how long the message was blocked. To do this, the Delayed Message Timing API introduces the blockedDuration property, which represents the amount of time a message had to wait in the queue before being processed.

    Slowdown 2 – The task queue is congested

    Another possible reason for cross-document messaging slowdowns is when the task queue of a context is overloaded with many short tasks. In a webpage's main thread, this can often happen when the queue is saturated with high-priority tasks such as user interactions, network handling, and other internal system overhead tasks like navigation, loading, and rendering. In a worker, congestion can occur when many messages are posted in a short period of time. In both cases, tasks or messages arrive faster than they can be processed, creating a backlog that delays subsequent messages, including those that might be time sensitive. Although each individual task isn't long, together, they accumulate and cause congestion, which effectively acts like a single long task. Diagram showing two web app contexts (a main document and worker thread). The main document sends many messages to the worker thread, and each takes a little bit of time to process in that thread, leading, over time, to a longer and longer message blocked duration on the worker thread. To help diagnose this situation, the Delayed Message Timing API introduces the taskCount and scriptTaskCount properties, to show how many tasks were blocking the message.

    Slowdown 3 – Serialization and deserialization overhead

    Before crossing the boundaries between contexts, messages must be serialized and then deserialized again when received. These operations occur synchronously on the same threads where the messages are sent and received. Serializing and deserializing messages can therefore introduce noticeable overhead, particularly when sending a lot of data over postMessage(). Diagram showing two web app contexts (a main document and worker thread). The main document sends a message to the worker thread, but because the message contains a lot of data it takes time to serialize and then deserialize, leading to a long blocked duration. While the serialization and deserialization operations are internal to the browser and you can't change them, the Delayed Message Timing API provides the serialization and deserialization properties to accurately measure their duration.

    Using the Delayed Message Timing API

    The API will work with windows, tabs, iframes, or workers, and will cover cross-document messaging, cross-worker/document messaging, channel messaging, and broadcast channels. For a complete round-trip timing analysis, you'll need to correlate the Performance entries that you collect from both the sender and receiver contexts. To learn more, check out the explainer. The following code snippet shows how to use the proposed API:
    // Create a PerformanceObserver instance.
    const observer = new PerformanceObserver((list) => {
      console.log(list.getEntries());
    });
    
    // Start observing "delayed-message" Performance entries.
    observer.observe({type: 'delayed-message', buffered: true});
    And here is an example of the properties available on the corresponding "delayed-message" Performance entry:
    {
        "name": "delayed-message",
        "entryType": "delayed-message",
        "startTime": 154.90000009536743,
        "duration": 169,
        "traceId": 4,
        // The type of message-passing event.
        "messageType": "cross-worker-document",
        // The timestamp for when the message was added to the task queue.
        "sentTime": 155,
        // The timestamps for when the receiving context started and stopped
        // processing the message.
        "processingStart": 274.90000009536743,
        "processingEnd": 324.7000000476837,
        // The time the message spent waiting in the receiver's task queue.
        "blockedDuration": 119.90000009536743,
        // The time needed to serialize and deserialize the message.
        "serialization": 0,
        "deserialization": 0,
        // The number of queued tasks blocking the postMessage event.
        "taskCount": 38,
        // The number of entry-point JavaScript tasks, including those with
        // a duration lower than 5ms.
        "scriptTaskCount": 2,
        // The time needed to run all script.
        "totalScriptDuration": 119,
         // The list of PerformanceScriptTiming instances that contribute to the
         // delay.
        "scripts": [
            {
                "name": "script",
                "entryType": "script",
                "startTime": 154.90000009536743,
                "duration": 119,
                "invoker": "DedicatedWorkerGlobalScope.onmessage",
                "invokerType": "event-listener",
                "windowAttribution": "other",
                "executionStart": 154.90000009536743,
                "forcedStyleAndLayoutDuration": 0,
                "pauseDuration": 0,
                "sourceURL": "...",
                "sourceFunctionName": "runLongTaskOnWorker",
                "sourceCharPosition": 267
            }
        ],
        // The PerformanceMessageScriptInfo instance which provides details
        // about the script that sent the message.
        "invoker": {
            "name": "invoker",
            "sourceURL": "...",
            "sourceFunctionName": "sendMessage",
            "sourceCharPosition": 531,
            "sourceColumnNumber": 14,
            "sourceLineNumber": 13,
            "executionContext": {
                "name": "",
                "type": "window",
                "id": 0
            }
        },
        // The PerformanceMessageScriptInfo instance which provides details 
        // about the script that handled (or is handling) the message.
        "receiver": {
            "name": "receiver",
            "sourceURL": "...",
            "sourceFunctionName": "runLongTaskOnWorker",
            "sourceCharPosition": 267,
            "sourceColumnNumber": 41,
            "sourceLineNumber": 9,
            "executionContext": {
                "name": "",
                "type": "dedicated-worker",
                "id": 1
            }
        }
    }

    Let us know what you think

    The Delayed Message Timing API is in its early stages, and we'd love to hear your feedback about this proposal. There may be additional scenarios where cross-context slowdowns occur in your apps today and sharing your experiences with us will help us design the right API for you. Take a look at our proposal and let us know your feedback by opening a new issue on the MSEdgeExplainers repo.]]>
    https://blogs.windows.com/msedgedev/2025/12/09/making-complex-web-apps-faster/feed/ 0
    Unlock text editing use cases with highlightsFromPoint and other FromPoint APIs https://blogs.windows.com/msedgedev/2025/09/25/unlock-text-editing-use-cases-with-highlightsfrompoint/ https://blogs.windows.com/msedgedev/2025/09/25/unlock-text-editing-use-cases-with-highlightsfrompoint/#respond Thu, 25 Sep 2025 16:01:19 +0000 https://blogs.windows.com/msedgedev/?p=26050 We're excited to announce the availability of the highlightsFromPoint() method in Microsoft Edge 140, and other Chromium-based browsers, a useful addition to the CSS Custom Highlight API, which makes it possible to f

    The post Unlock text editing use cases with highlightsFromPoint and other FromPoint APIs appeared first on Microsoft Edge Blog.

    ]]>
    highlightsFromPoint() method in Microsoft Edge 140, and other Chromium-based browsers, a useful addition to the CSS Custom Highlight API, which makes it possible to find existing highlights at a given x, y coordinate.

    Drawing highlights in CSS

    The CSS Custom Highlight API allows you to highlight arbitrary ranges of text, without having to add new elements to the DOM. This API works by creating Range objects in JavaScript, registering these ranges using the CSS.highlights registry, and then highlighting the ranges in CSS, by using the ::highlight() pseudo-element: A high-level diagram of the CSS Custom Highlight API, showing two custom highlight objects, each with their own ranges. The highlight objects are registered in the CSS highlights registry, under custom names. And CSS code can then style the ranges by using the ::highlight pseudo-classes corresponding to the custom names. This API is great for dynamic styling of text ranges that don't need to, or can't, exist in the DOM, which is often the case for client-side text editors. The following screenshot shows different types of highlights that were created by using the CSS Custom Highlight API (see the live demo): A paragraph of text with five different types of highlights. Some parts are highlighted in yellow, others have a wavy red underline, others a double blue underline, etc. Some highlights overlap.

    Introducing highlightsFromPoint()

    And today, starting with Edge 140, we're adding one more piece to the puzzle: the CSS.highlights.highlightsFromPoint() method. This new method lets you detect the custom highlights that exist at a given x, y coordinate location on the screen, so that you can alter the appearance of the highlight or display additional UI elements around it. This makes it a lot simpler to implement features like spellcheck, collaborative editing, tooltips, contextual menus, or search. CSS.highlights.highlightsFromPoint() can detect highlights and their corresponding text ranges in the DOM and Shadow DOM without having to write complicated hit-testing code. Now, adding interactive features, with high performance, particularly when dealing with overlapping highlights or shadow DOMs, is much easier. The following screenshot shows a popup which lists three overlapping highlights applied to a text range which the user clicked: A paragraph of text with multiple different highlights, including some which overlap. The user has clicked on an area of the text where highlights exist. A popup is displayed where the user clicked, listing the highlights that were found at this point. To learn more, see HighlightRegistry: highlightsFromPoint() method, at MDN, and see the API in action by using our API demo (source code).

    Other *FromPoint APIs

    The highlightsFromPoint() method might remind you of other similarly named methods: Just like highlightsFromPoint(), these methods also provide DOM information based on x, y coordinates on the screen, and they can be very useful for cases where users interact with the UI by clicking or hovering, and where location-based detection is needed instead of using pre-set event listeners or explicit element references. The *FromPoint APIs are especially useful for text editing scenarios but can also be used to implement drag and drop, simulate actions at specific coordinates (such as in automated testing or games), and enable tools or extensions to identify page elements without prior knowledge of their IDs or selectors. Check out our highlighter demo (and source code) to see how you can use the caretPositionFromPoint and highlightsFromPoint together to let users create and delete different highlights in text, without needing to create extra DOM elements. Screenshot of the highlighter demo. It shows a toolbar on the side, with different types of highlights to choose from. It also shows a text area with multiple paragraphs. Various ranges of the text in the text area have been highlighted in different styles.

    Let us know what you think

    We'd love to hear your feedback about the new CSS.highlights.highlightsFromPoint() API, such as the use cases it allows you to implement, the ideas you have for future improvements, or the problems you might be running into. For feedback about the API, please file an issue in the CSS Working Group repository. If your feedback is about a bug in Microsoft Edge instead, please send feedback to our team from the browser directly: go to Settings and more (...) > Help and feedback > Send feedback.]]>
    https://blogs.windows.com/msedgedev/2025/09/25/unlock-text-editing-use-cases-with-highlightsfrompoint/feed/ 0
    Calling for Interop 2026 proposals https://blogs.windows.com/msedgedev/2025/09/04/calling-for-interop-2026-proposals/ https://blogs.windows.com/msedgedev/2025/09/04/calling-for-interop-2026-proposals/#respond Thu, 04 Sep 2025 16:26:26 +0000 https://blogs.windows.com/msedgedev/?p=26048 The Interop 2026 call for proposals is now open, submit your ideas now!

    We're very proud to have been part of Calling for Interop 2026 proposals appeared first on Microsoft Edge Blog.

    ]]>
    The Interop 2026 call for proposals is now open, submit your ideas now! We're very proud to have been part of the Interop project for the past 5 years, and it's amazing to see the collective enthusiasm of our industry for pushing the limits of what's possible for developers to do on the web. Critical building blocks like grid, subgrid, flexbox, container queries, popover, the :has() selector, and declarative shadow DOM would just not be in their current state today if it wasn't for the Interop project. In fact, just this year, View Transitions, URLPattern, and the @scope rule are on track to becoming interoperable across the web, making it possible for web developers to truly rely on these features in a simple and performant way. Interoperability is essential for ensuring the web remains a unified platform where developers can build great products and users have the freedom to achieve their goals using the browser of their choice. But interoperability is never done. The web needs to constantly evolve to meet the needs of its users and the devices they use. We need to continue adding new standards-based capabilities to the web all the time, and ensure they're interoperable quickly, down to the tiniest details. That's why the Interop project has been running for the past 5 years, and that's why we're already planning for the next iteration of the project. Starting today, you can now send your ideas for Interop 2026! Help us choose which web platform features to improve next year by sharing what matters most to you. Review the submission guidelines and submit your proposal now. The submission period will remain open through September 24, 2025. You can also take a look at the selection process to understand how and when we'll review the proposals, and what the next steps are.]]> https://blogs.windows.com/msedgedev/2025/09/04/calling-for-interop-2026-proposals/feed/ 0
    The Edge 2025 web platform top developer needs dashboard https://blogs.windows.com/msedgedev/2025/06/26/the-edge-2025-web-platform-top-developer-needs-dashboard/ https://blogs.windows.com/msedgedev/2025/06/26/the-edge-2025-web-platform-top-developer-needs-dashboard/#respond Thu, 26 Jun 2025 15:58:08 +0000 https://blogs.windows.com/msedgedev/?p=25950 For the fifth year in a row, together with our partners at Igalia, Google, Mozilla, and Apple, we're working hard on improving the consistency of some of the major features which web developers need the most. Indeed, the The Edge 2025 web platform top developer needs dashboard appeared first on Microsoft Edge Blog.

    ]]>
    Interop 2025 project is now operating at full speed and already bearing fruit: the overall interop score has now reached 50%, up from its starting 28% score at the beginning of the year. The Interop score chart from the Interop 2025 dashboard. It shows 5 lines going up and to the right, signifying that the 4 tested browsers are getting more interoperable across the selected focus areas, and that the overall interop score is also improving. Interop is the most effective way we have to collectively catch up on implementation differences and bugs. The project has a good track record of bringing implementations into alignment for the areas that are selected. However, there's more that web developers need. On the Microsoft Edge team, we're always listening to developers, whether through surveys, bug reports, or direct collaborations. Through this listening, we know that developers have been asking for more than what the Interop project's consensus process selects. We want to help raise the visibility of these needs and track progress from browser vendors to implement them. To that end, we're announcing our updated Edge 2025 web platform top developer needs dashboard. The Edge top developer needs 2025 dashboard webpage, showing the title, intro paragraph, and main chart, which shows the WPT scores for the tracked features, across all browsers. Like last year, our dashboard tracks compatibility and test success (as measured by the WPT project) of important features like:
    • Scroll-driven animations, which enable smooth, multithreaded animations in response to user scrolling.
    • Cross-document view transitions, which smoothly animates between multiple pages of a site.
    • Render blocking, which delays rendering until certain scripts or stylesheets have loaded; an important improvement for delivering smooth page transitions.
    • Container queries (including style queries), which apply styles to elements based on the dimensions, or styles, of a container element.
    • Fetch upload streaming, which sends ReadableStream objects to the server without punishing device memory.
    • The ::marker pseudo-element, which styles list item bullets or numbers.
    • Speculation rules, which hint the browser to proactively download pages in the background, providing near-instant page loads for a large fraction of sessions.
    • And more on the dashboard.
    If you have feedback or think there are items we've missed, please let us know by leaving a comment about the dashboard. The Edge web platform team is committed to transparency and openness. We hope that by providing a fuller picture of what we're hearing we can play a positive role in improving the platform for everyone.]]>
    https://blogs.windows.com/msedgedev/2025/06/26/the-edge-2025-web-platform-top-developer-needs-dashboard/feed/ 0
    Creating a more accessible web with Aria Notify https://blogs.windows.com/msedgedev/2025/05/05/creating-a-more-accessible-web-with-aria-notify/ https://blogs.windows.com/msedgedev/2025/05/05/creating-a-more-accessible-web-with-aria-notify/#respond Mon, 05 May 2025 15:59:58 +0000 https://blogs.windows.com/msedgedev/?p=25790 We're excited to announce the availability, as a developer and origin trial, of ARIA Notify, a new API that's designed to make web content

    The post Creating a more accessible web with Aria Notify appeared first on Microsoft Edge Blog.

    ]]>
    ARIA Notify, a new API that's designed to make web content changes more accessible to all users. You can try ARIA Notify today as an Origin Trial starting with Microsoft Edge 136, or locally by enabling the --enable-blink-features=AriaNotify feature flag. ARIA Notify is designed to address scenarios where a visual change that's not tied to a DOM change and not accessible to assistive technology users, happens in the page. Examples include changing the format of text in a document, or when a person joins a video conference call. Developers have come to rely on ARIA live regions as a limited workaround. ARIA Notify is an imperative notification API that's designed to replace the usage of ARIA live regions, and overcome its limitations, in these scenarios.

    The problems with ARIA live regions

    For individuals who are blind or have low vision, identifying non-user-initiated changes in the content of a web page can be very challenging. ARIA live regions are the only mechanism available today that communicates dynamic content changes to users of assistive technology. However, ARIA live regions are tightly coupled with DOM elements because they're built around the assumption that visual changes happen in sections or UI widgets of a web page. But many important changes can happen on a web page without the DOM of the page being modified. Consider these two examples:
    • The user is interacting with a text editing area. The user highlights a word and then presses the Ctrl+B shortcut to make it bold. In this scenario, no UI elements were used by the user, and the DOM didn't necessarily change. The user should still hear confirmation that the action was successful.
    • The user is composing an email and presses the Send button. In normal circumstances, the message is sent, and a focus change occurs, which confirms that the action was successful. But, if the action is delayed or later fails, the user should still hear a notification about the delay or failure.
    In these scenarios, developers tend to resort to using workarounds where they mimic dynamically changing content using DOM nodes that are placed offscreen. Unfortunately, this can lead to unexpected side effects for end users, like making the offscreen content accidentally discoverable by screen reader users with their virtual cursor, or not accessible if a modal dialog is opened and the offscreen content is not placed within it. In addition, using ARIA live regions in these scenarios also comes with timing issues that developers must deal with, such as having to wait for an undetermined amount of delay between creating a region and adding the content into it. The ARIA Notify API addresses these issues.

    Introducing the ARIA Notify API

    ARIA Notify is an ergonomic and predictable way to tell assistive technologies (ATs), such as screen readers, exactly what to announce to users and when. In its simplest form, developers can call the ariaNotify() method with the text to be announced to the user. The method is available both on the document object and on DOM nodes.
    // Dispatch a message associated with the document.
    document.ariaNotify("John Doe is connected");
     
    // Dispatch a message associated with an element.
    document.querySelector("#text-editor").ariaNotify("Selected text is bold");
    When called on the document object, the language of the provided notification string is assumed to match that of the document. When called on an element, the element's nearest ancestor's lang attribute is used to infer the language. The ARIA Notify API also lets developers hint to an AT about the importance of notifications to ensure that important messages that the user should be aware of are announced with urgency. To do this, developers can use the priority option. This option indicates how the AT should rank the notification with respect to other, pending, notifications:
    • high - The AT should add the notification to the end of any other pending high priority notifications but before all normal priority pending notifications.
    • normal (default) - The AT should add the notification to the end of all pending notifications.
    Here's an example showing how to set priorities:
    // Dispatch a normal priority notification about a background task status update.
    document.ariaNotify("Background task completed", { "priority":"normal" });
     
    // Dispatch a high priority notification that data may be lost.
    document.ariaNotify("Unable to save changes, connection lost", { "priority":"high" });
    In this example, assuming that the normal priority notification hasn't already been announced, the high priority notification is guaranteed to be announced first, followed by the normal priority notification.

    Try ARIA Notify today and let us know what you think

    We're excited that ARIA Notify is now ready to be tested by developers, either locally, or as part of a Microsoft Edge Origin Trial to gather developer feedback on the API. If you want to test ARIA Notify in Microsoft Edge on your own device only, start Edge from the command line and use the --enable-blink-features=AriaNotify argument to enable the feature. For example, if you're using Microsoft Edge Canary on Windows, run the following command in a command prompt: "C:\Users\<username>\AppData\Local\Microsoft\Edge SxS\Application\msedge.exe" --enable-blink-features=AriaNotify To test your entire website with users instead, register your website for an Edge Origin Trial:
    • Go to AriaNotify API on the Microsoft Edge Origin Trial site.
    • Sign-in to the site with your GitHub credentials.
    • And then register for the Origin Trial.
    To learn more about the API, check out the ARIA Notify explainer. And, if you're interested in using the API in other browsers, checkout out the ariaNotify-polyfill GitHub repository. We'd love to hear your feedback about the API, to ensure that our solution meets your needs. Let us know your thoughts by opening a new issue on our GitHub repository.]]>
    https://blogs.windows.com/msedgedev/2025/05/05/creating-a-more-accessible-web-with-aria-notify/feed/ 0
    Contextual logging with console.context() https://blogs.windows.com/msedgedev/2025/04/22/contextual-logging-with-console-context/ https://blogs.windows.com/msedgedev/2025/04/22/contextual-logging-with-console-context/#respond Tue, 22 Apr 2025 16:01:54 +0000 https://blogs.windows.com/msedgedev/?p=25774 If you work on a large enough code base involving multiple teams at your organization, you probably have to deal with large amounts of logs when inspecting your webapp.

    This is an area that we're interested in improving, and are Contextual logging with console.context() appeared first on Microsoft Edge Blog.

    ]]>
    proposing a new feature, based on the console.context() method, to enable helpful contextual logging in DevTools. Logging can be a very helpful way to debug problems, and we know that many web developers like the simplicity of logging, over the more involved process of breakpoint debugging. However, having to sort through hundreds of console log messages can quickly become difficult. It's hard to identify which log comes from which part of the application, and it's hard to filter logs. The Console tool in Edge DevTools, showing a long list of errors, warnings, and messages. We're proposing a way to log to the browser console in a contextual way, and we'd love your feedback about the proposal. To read the full proposal, see our explainer: DevTools contextual logging with console.context(), and provide feedback about it by opening a new issue on the repo.

    Enhancing console.context()

    The context() method of the console namespace is a method that already exists in Chromium-based browsers. This method accepts a context name and returns an object that implements the same interface as the console namespace:
    const myLogger = console.context("name-of-my-context");
    myLogger.log("This is a log message from my context");
    myLogger.warn("This is a warning message from my context");
    This allows you to create different loggers for the different parts of your application. Each log that's emitted by one of these loggers belongs to a context, and you can later filter by context in the Console tool in Edge. We think that console.context() is a great solution to the challenges of having to deal with many log messages, but we want to go further and address its limitations:
    • We want to help standardize the method so that other browsers can also implement it. See the specification discussion on the WHATWG repository.
    • We want to make contexts more visually recognizable.
    • And, we want to make it easier to filter messages by contexts.

    Making contexts visually different

    The first improvement we're proposing is to make each context truly unique and quickly recognizable by giving it a color. Currently, contextual loggers produce messages that look just like regular logs: The Console tool in Edge, showing that a contextual log created from console.context() looks like any other log. We want to improve this as follows:
    const myColoredLogger = console.context("storage", { color: "lemonchiffon" });
    myColoredLogger.log("This is a log from my contextual logger");
    The above code would display the log message in the Console tool, preceded by a badge that shows the context name and color, so that it's easy to quickly recognize where the log comes from: Mockup showing how the proposed contextual logs would look like. The log message displays a badge at the beginning of the line, that's colored, and that has the name of the context in it. We'd love to hear your feedback on this proposal as we're considering multiple alternatives such as:
    • Using %c formatting in the context name, instead of introducing a second parameter for the color. For example: const myColoredLogger = console.context("%cstorage", “background:red;color:white”);
    • Not requiring developers to define colors and letting DevTools do it. This would make it easier to use the context() method and DevTools would generate accessible background and text color combos for you.
    • Using the color as the outline of the badge rather than its fill color, which would avoid text contrast accessibility issues, but might be harder to quickly visually differentiate.

    Making it easy to filter contextual logs

    The second improvement we're proposing is to make it much easier to filter the messages that originate from a given context only. Currently, to filter the logs from a console context, you must enter context: <name of the context> in the filter of the Console tool. We think we can improve this. We're proposing to list the contexts that were created by an app in the Console tool's sidebar: The Console tool in Edge, showing the filtering sidebar. This mockup shows the contexts listed in the sidebar. In the above example, the app created two contexts: App and Storage. Clicking on any of these context names in the sidebar would show only the messages that belong to that context. In addition, it would be possible to expand a context and review the number of errors, warning, info, and debug logs in that context, and display only those messages.

    Let us know what you think

    Does the console.context() method seem useful? Do the proposed improvements match your use cases? Are there any other or different changes you would like to make? If you have any questions, comments, or suggestions, please let us know by opening a new issue on the MSEdgeExplainers repo.]]>
    https://blogs.windows.com/msedgedev/2025/04/22/contextual-logging-with-console-context/feed/ 0