Skip to content

[BUG]: Plotly doesn't render properly when used in the Colab VS Code extension.聽#5471

Open

Description

@kevineger

Description

Hi there 馃憢, I'm the maintainer of the Colab VS Code extension which we recently launched:

One of our users reported googlecolab/colab-vscode#339. Summarized, today Plotly doesn't render properly in VS Code when using the Colab extension. This requires users to manually configure the default renderer, instead of being able to lean on Plotly's detection.

Steps to reproduce

  • Install the Colab VS Code extension
  • Create a new Jupyter notebook file
  • Click Select Kernel
  • Select Colab
  • If prompted (first run), sign in to Google
  • Author a cell which renders a Plotly plot, e.g.:
    import plotly.express as px
    import pandas as pd
    import plotly.io as pio
    
    data = {'x': [1, 2, 3, 4, 5], 'y': [1, 2, 4, 8, 16], 'text': ['hello', 'world', '!', '!', '!']}
    df = pd.DataFrame(data)
    fig = px.scatter(df, x="x", y="y", text="text", title="Hello World Plotly Express")
    fig.update_traces(textposition='top center')
    fig.show()
  • Execute the cell

Expected behaviour: plot is rendered as it does if you set pio.renderers.default = "vscode" before showing the plot.

Actual behaviour: nothing is rendered. You can Copy cell output and see the HTML output that's returned instead. This works in web-based Colab.

Notes

As you'll see in my reply, this seems to be caused by this block in Plotly, where the default_renderer gets set to colab. If I set plotly.io.renderers.default to 'plotly_mimetype' or 'vscode', everything works as intended.

Unfortunately, VS Code doesn't set VSCODE_PID for these remote Colab kernels, so we can't simply re-order the default renderer checks. One possible solution is to extend the Colab check from only looking for import google.colab to also check for COLAB_NOTEBOOK_ID, which I believe (need to double check) is only set for web-based Colab. Feels a bit brittle. Open to suggestions, and happy to send a PR once we reach consensus!

Activity

  1. camdecoster commented on Jan 21, 2026

    @camdecoster
    Contributor

    Thanks for the bug report! Our team doesn't have a lot of experience with this extension, so we can't speak to alternative solutions. If you want to investigate options and propose a solution, we can have a discussion and figure out a path forward.

  2. kevineger commented on Jan 21, 2026

    @kevineger
    ContributorAuthor

    Gotcha. Currently I think checking for COLAB_NOTEBOOK_ID is our only reasonable option. I've confirmed it gets set on kernel init only for out web client. Here's a PR with the proposed change: #5473.

  3. kevineger commented on Mar 17, 2026

    @kevineger
    ContributorAuthor

    Could someone take a look at the PR I sent?

    #5473

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugsomething broken

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions