# WGLMakie no longer working with jupyter

**URL:** <https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331>\
**Category:** Visualization\
**Tags:** wglmakie, bonito\
**Created:** [June 30, 2025, 10:16am UTC](https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331 "2025-06-30T10:16:04Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![snowgum](https://avatars.discourse-cdn.com/v4/letter/s/ecc23a/32.png) [@snowgum](https://discourse.julialang.org/u/snowgum)\
**Post date:** [June 30, 2025, 10:16am UTC](https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331/1 "2025-06-30T10:16:05Z")

</div>

I have some code with WGLMakie and Bonito for interactive visualisations. This used to work with Jupyter, but now any plot or figure shows nothing. The same code works fine with `CairoMakie`, `GLMakie`, or with `WGLMakie` inside VSCode or Pluto. The problem seems to be Jupyter (tried jupyter notebook and jupyter lab, both fail).

Here’s a minimal working example:

```julia
using WGLMakie

scatter(1:4, color=1:4)

```

It just shows empty space in Jupyter. I’ve tried with multiple options that made it work previously:

```julia
Page(listen_url="localhost")
WGLMakie.activate!()

```

But it still does not work.

For `Bonito`, I tried following the [documentation for deployment](https://simondanisch.github.io/Bonito.jl/stable/deployment.html), but the “hello world” example also fails to display:

```julia
using JSServe

example_app = App(DOM.div("hello world"), title="hello world")

```

Jupyter lab displays:

```julia
App(JSServe.var"#12#18"{Hyperscript.Node{Hyperscript.HTMLSVG}}(<div>hello world</div>), Base.RefValue{Union{Nothing, Session}}(nothing), "hello world", false)

```

I am teaching a course this fall that makes heavy use of Jupyter. Most of the time, I can get away with static plots with `CairoMakie`, but in a few cases I really need interaction. Does anyone have recommendations on how to do this with Julia packages? Students will mostly run it from Windows and Mac laptops, so ideally something that runs on a wide variety of machines with as little installation effort as possible.

Ideally, a static HTML+JS would be ideal (no need to change source code for interactive plots). I’ve tried the example plot from the docs (under [Execute Javascript directly](https://docs.makie.org/stable/explanations/backends/wglmakie#Execute-Javascript-directly)), but although a plot was produced, it did not change when moving the sliders.

I am using Julia 1.11.5, Makie 0.24.2, WGLMakie 0.13.2, Bonito 4.0.9, and Jupyter lab 4.4.4.

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [June 30, 2025, 10:17am UTC](https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331/2 "2025-06-30T10:17:27Z")

</div>

I can try to take a look this week to see if there’s something that can be done on the Bonito/WGLMakie side.

---

<div class="post-metadata">

**Author:** ![loisel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/loisel/32/50626_2.png) [@loisel](https://discourse.julialang.org/u/loisel)\
**Post date:** [November 20, 2025, 9:49pm UTC](https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331/3 "2025-11-20T21:49:05Z")

</div>

I have the same problem. Is Jupyter unsupported for GLMakie/WGLMakie?

Edit: it seems that this is a known Jupyter Lab issue, maybe not just Jupyter Lab, and has been going on for years, so I think the practical answer is: unsupported.

> <https://github.com/MakieOrg/Makie.jl/issues/3117>
>
> \- \[x\] are you running newest version? Julia 1.9.2, WGLMakie 0.8.11, IJulia 1.24.…2
> \- \[x\] can you reproduce the bug with a fresh environment ? (\`\]activate --temp; add Makie\`) yes
> \- \[x\] What platform + GPU are you on? M1 Mac. v12.5.
> MWE Steps:
> 1) Run jupyter-lab 
> \`\`\`
> using WGLMakie
> Makie.inline!(true)
> 
> f = Figure(resolution = (800, 800))
> Axis(f\[1, 1\], backgroundcolor = "black")
> 
> xs = LinRange(0, 2pi, 20)
> ys = LinRange(0, 3pi, 20)
> us = \[sin(x) \* cos(y) for x in xs, y in ys\]
> vs = \[-cos(x) \* sin(y) for x in xs, y in ys\]
> strength = vec(sqrt.(us .^ 2 .+ vs .^ 2))
> 
> arrows!(xs, ys, us, vs, arrowsize = 10, lengthscale = 0.3,
> arrowcolor = strength, linecolor = strength)
> 
> f
> \`\`\`
> An example output with no figure below the cell:
> !\[Screen Shot 2023-08-01 at 9 57 11 PM\](https://github.com/MakieOrg/Makie.jl/assets/43300454/99ddfd22-16fd-48eb-a62a-00cc124ec9d0)

> <https://github.com/MakieOrg/Makie.jl/issues/2464>
>
> WGLMakie runs great locally, but when trying it on a remote Jupyterlab launched …via the cluster's Jupyterhub instance, I get this:
> 
> !\[Screenshot from 2022-12-03 00-52-57\](https://user-images.githubusercontent.com/1510968/205432992-8ca17978-d219-4c14-b0a6-c10006141370.png)
> 
> https://github.com/JuliaPlots/WGLMakie.jl/issues/90 seems related but couldn't figure out what I'm supposed to do. 
> 
> Is there a way to make this set up work? 
> 
> julia 1.8.3 / WGLMakie v0.7.4 / Jupyterlab 3.4.7

> <https://github.com/MakieOrg/Makie.jl/issues/2405>
>
> Hi there,
> I just tried using Makie.jl, especially WGLMakie.jl and while it work…s locally within VSCode, which is awesome, it fails on mybinder.org.
> 
> There is no error message, the plot just won't appear. On Chrome nothing appears, on Firefox I get a \`Not Found\`
> !\[image\](https://user-images.githubusercontent.com/4255480/200199923-0353647e-e9e5-4a1d-b809-fc9736401011.png)
> 
> This is a link to my example notebook which I wanted to work https://mybinder.org/v2/gh/galleon/scikit-decide/julia-jolin?filepath=notebooks-jupyter/01-introduction-maze.ipynb
> 
> It is defined within the \`notebooks-juypter\` directory of this branch https://github.com/galleon/scikit-decide/tree/julia-jolin
> 
> Any help about is highly appreciated

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [November 21, 2025, 11:36am UTC](https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331/4 "2025-11-21T11:36:32Z")

</div>

Yeah supporting Jupyter reliably has been difficult, which has been one of the main reasons for [BonitoBook](https://bonitobook.org/website/).  
I still want to support it though, but I haven’t found any leads on how to properly fix it.  
If anyone knows how to better check the proxy setup for Jupyter/JupyterLab/IJulia, and how to differentiate them we could move forward there.

---

<div class="post-metadata">

**Author:** ![loisel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/loisel/32/50626_2.png) [@loisel](https://discourse.julialang.org/u/loisel)\
**Post date:** [November 21, 2025, 11:40am UTC](https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331/5 "2025-11-21T11:40:42Z")

</div>

I had not heard about BonitoBook, thanks for the information, I will take a look!

---

<div class="post-metadata">

**Author:** ![loisel](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/loisel/32/50626_2.png) [@loisel](https://discourse.julialang.org/u/loisel)\
**Post date:** [November 24, 2025, 3:35pm UTC](https://discourse.julialang.org/t/wglmakie-no-longer-working-with-jupyter/130331/6 "2025-11-24T15:35:59Z")

</div>

@sdanisch I must apologize for the following. I’d like to think I’m a competent programmer (I’m a former NVidia dev, now a math prof), but this is 2025 and I have shamefully vibe-coded this PR with Claude Code because I have no idea how Bonito works. Nevertheless, it seems to work for me and allows WGLMakie use in Jupyter Lab. I hope you will find it useful!

> <https://github.com/SimonDanisch/Bonito.jl/pull/375>
>
> I must apologize for the following. I'd like to think I'm a competent programmer… (I'm a former NVidia dev, now a math prof), but this is 2025 and I have shamefully vibe-coded this PR with Claude Code because I have no idea how Bonito works. Nevertheless, it seems to work for me and allows WGLMakie use in Jupyter Lab. I hope you will find it useful!
> 
> Sincerely,
> 
> S. Loisel
> 
> \---
> 
> \## Summary
> 
> This PR fixes JupyterLab support which has been broken due to incorrect proxy URL generation.
> 
> \## Changes
> 
> \- \*\*Fix proxy URL\*\*: \`jupyter-server-proxy\` mounts at \`/proxy/\` on the server root, not under \`base\_url\` (e.g., \`/lab/\`). The previous code generated URLs like \`http://127.0.0.1:8888/lab/proxy/9384\` when it should be \`http://127.0.0.1:8888/proxy/9384\`.
> 
> \- \*\*Add \`find\_jupyter\_executable()\` fallback\*\*: If IJulia's configured jupyter path doesn't exist (e.g., points to a non-existent conda environment), fall back to finding jupyter in PATH.
> 
> \- \*\*Wrap \`jupyter\_running\_servers()\` in try-catch\*\*: Prevents display crashes if the jupyter command fails.
> 
> \- \*\*Documentation\*\*: Document JupyterLab's \`jupyter-server-proxy\` requirement in deployment.md.
> 
> \## Test plan
> 
> \- \[x\] Tested with local JupyterLab (homebrew install)
> \- \[x\] Verified Bonito apps display correctly
> \- \[x\] Verified WGLMakie plots render in JupyterLab

Edit: apologies, this is my first PR and I accidentally deleted it when I nuked the fork I had of Bonito.jl. I’ve recreated it now.
