# Julia1.12 world age problem related to PlotlyJS.jl (WebIO)

**URL:** <https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162>\
**Category:** General Usage\
**Tags:** question\
**Created:** [January 20, 2026, 2:46pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162 "2026-01-20T14:46:00Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 20, 2026, 2:46pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/1 "2026-01-20T14:46:00Z")

</div>

Hi,

A warning (about world age) is fetched when I load my project since I switched to Julia 1.12.

My project uses PlotlyJS.jl which is the only package in Project.toml being related to WebIO.jl.

```julia-auto
WARNING: Detected access to binding `WebIO.webio_serve` in a world prior to its definition world.
  Julia 1.12 has introduced more strict world age semantics for global bindings.
  !!! This code may malfunction under Revise.
  !!! This code will error in future versions of Julia.
Hint: Add an appropriate `invokelatest` around the access to this binding.
To make this warning an error, and hence obtain a stack trace, use `julia --depwarn=error`.

```

> **versioninfo ans Pkg status**
>
> ```julia-auto
> julia> versioninfo()
> Julia Version 1.12.4
> Commit 01a2eadb047 (2026-01-06 16:56 UTC)
> Build Info:
> Official https://julialang.org release
> Platform Info:
> OS: Linux (x86_64-linux-gnu)
> CPU: 16 × 13th Gen Intel(R) Core(TM) i5-13600H
> WORD_SIZE: 64
> LLVM: libLLVM-18.1.7 (ORCJIT, alderlake)
> GC: Built with stock GC
> Threads: 16 default, 1 interactive, 16 GC (on 16 virtual cores)
> Environment:
> DYLD_LIBRARY_PATH = /home/G36749/opt/xpressmp/lib:
> LD_LIBRARY_PATH = /home/G36749/opt/xpressmp/lib:
> JULIA_EDITOR = code
> JULIA_VSCODE_REPL = 1
> JULIA_NUM_THREADS = 16
> 
> (Viviane) pkg> status
> Project Viviane v0.1.0
> Status `~/Projects/Julia/viviane.jl/Project.toml`
> [ae650224] ChunkSplitters v3.1.2
> ⌅ [864edb3b] DataStructures v0.18.22
> [5789e2e9] FileIO v1.17.1
> [87dc4568] HiGHS v1.20.1
> [5903a43b] Infiltrator v1.9.7
> [c3a54625] JET v0.11.3
> ⌅ [033835bb] JLD2 v0.5.15
> [0f8b85d8] JSON3 v1.14.3
> [4076af6c] JuMP v1.29.3
> [b8f27783] MathOptInterface v1.48.0
> [c020b1a1] NaturalSort v1.0.0
> [67456a42] OhMyThreads v0.8.4
> [f0f68f2c] PlotlyJS v0.18.17
> [f27b6e38] Polynomials v4.1.0
> ⌅ [08abe8d2] PrettyTables v2.4.0
> [92933f4c] ProgressMeter v1.11.0
> [295af30f] Revise v3.13.1
> [10745b16] Statistics v1.11.1
> [856f2bd8] StructTypes v1.11.0
> [f8b46487] TestItemRunner v1.1.4
> [1c621080] TestItems v1.0.0
> [ac1d9e8a] ThreadsX v0.1.12
> [37e2e46d] LinearAlgebra v1.12.0
> [de0858da] Printf v1.11.0
> [9e88b42a] Serialization v1.11.0
> Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated
> 
> ```

As stated, Revise stop working (randomly).

Any ideas ?

Best,

Laurent

---

<div class="post-metadata">

**Author:** ![karei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karei/32/214809_2.png) [@karei](https://discourse.julialang.org/u/karei)\
**Post date:** [January 20, 2026, 3:32pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/2 "2026-01-20T15:32:34Z")

</div>

I think you should migrate to an actively maintained package, such as PlotlyJS.jl, PlotlyLight.jl.

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 20, 2026, 6:55pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/3 "2026-01-20T18:55:42Z")

</div>

Thank you for your piece of advice.  
Actually I do use PlotlyJS.jl (sorry) as one can see in the Pkg status list.  
I have corrected the initial post.

---

<div class="post-metadata">

**Author:** ![karei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karei/32/214809_2.png) [@karei](https://discourse.julialang.org/u/karei)\
**Post date:** [January 21, 2026, 1:37am UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/4 "2026-01-21T01:37:06Z")

</div>

Well, then there’s nothing I can do about it. 😢

---

<div class="post-metadata">

**Author:** ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)\
**Post date:** [January 21, 2026, 7:40am UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/5 "2026-01-21T07:40:50Z")

</div>

You would first need to identify where the problematic access is. For this you might be able to see it based on your precompile output (normally, there is context which we can’t see in your posted output). If that does not contain anything useful, you might want to precompile the dependencies of your project separately.

After you know the package which causes the access, you need to find the line where `webio_serve` is actually accessed with incorrect world age. Ideally, you would than change the logic to be consistent with word age. If this is not possible, you would add the indicated `invokelatest` call.

---

<div class="post-metadata">

**Author:** ![ChristianF](https://avatars.discourse-cdn.com/v4/letter/c/f19dbf/32.png) [@ChristianF](https://discourse.julialang.org/u/ChristianF)\
**Post date:** [January 25, 2026, 8:48pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/6 "2026-01-25T20:48:57Z")

</div>

I’m having the same “problem” but my project is still running, so I’m waiting and seeing.  
I’m hoping to see that it has to do with the implementation of JSON.jl from JSON3.jl in PlotlyJS.jl.

The last version update and commit on PlotlyJS.jl was made in Aug 2025, and I cannot see any coding activity on the PlotlyJS.jl repo. but issues are still beeing posted.  
I hope and think its work in progress since I think quite a lot of people use PlotlyJS.jl.

Wait and see and, and hope that some people get to fixing it, sadly I do not have the knowledge to help to assist such huge and complex repos.

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 26, 2026, 9:25am UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/7 "2026-01-26T09:25:23Z")

</div>

Thank you for your message: i feel less alone in facing this problem 🙂

I wonder if the ❤s given to the initial post also indicate that other users have encountered this error with PlotlyJS.js/Julia 1.12…

I wonder if I should switch back to Makie.jl (the interactivity of the graphs is really useful).

I had previously switched from Makie.jl to PlotlyJS.jl because it was difficult to keep up with the API changes.

---

<div class="post-metadata">

**Author:** ![ChristianF](https://avatars.discourse-cdn.com/v4/letter/c/f19dbf/32.png) [@ChristianF](https://discourse.julialang.org/u/ChristianF)\
**Post date:** [January 26, 2026, 9:52am UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/8 "2026-01-26T09:52:46Z")

</div>

I haven’t been looking into Makie.jl. but my plot is quite comprehensive, so I would love not to redo it all again.

This is one of my “simpler” plots, I removed some stuff for confidentiality reasons. And PlotlyJS.jl has good time handling, that I’m very dependent on.

Let’s see. I think PlotlyJS.jl will be updated.

 ![billede](https://global.discourse-cdn.com/julialang/original/3X/3/c/3c9ce551d3aad8ff7b3102238ed479aebbee8929.png)

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 26, 2026, 10:53am UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/9 "2026-01-26T10:53:01Z")

</div>

> [@ChristianF](#):
>
> I haven’t been looking into [Makie.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/Makie). but my plot is quite comprehensive, so I would love not to redo it all again.

Indeed.

Although Makie.jl is super powerful and allows for complex, reactive and beautiful plots, a translation from PlotlyJS.jl would take a significative amount of time

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [January 26, 2026, 11:56am UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/10 "2026-01-26T11:56:28Z")

</div>

Can you share a (M)WE that shows the issue?

Also, do you have Revise loaded here or not? If yes, can you try without?

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 26, 2026, 12:41pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/11 "2026-01-26T12:41:08Z")

</div>

Thank you for your suggestions !

Il will try to build a MWE.

Meanwhile,

> [@pfitzseb](#):
>
> Also, do you have Revise loaded here or not? If yes, can you try without?

I usually work using Revise but it does not seems to make a difference here.

```julia-auto
 $ julia --project -t auto
               _
   _ _ _(_)_ | Documentation: https://docs.julialang.org
  (_) | (_) (_) |
   _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` | |
  | | |_| | | | (_| | | Version 1.12.4 (2026-01-06)
 _/ |\ __'_|_|_|\__'_| | Official https://julialang.org release
|__/ |

julia> using Viviane
WARNING: Detected access to binding `WebIO.webio_serve` in a world prior to its definition world.
  Julia 1.12 has introduced more strict world age semantics for global bindings.
  !!! This code may malfunction under Revise.
  !!! This code will error in future versions of Julia.
Hint: Add an appropriate `invokelatest` around the access to this binding.
To make this warning an error, and hence obtain a stack trace, use `julia --depwarn=error`.

(Viviane) pkg> st
Project Viviane v0.1.0
Status `~/Projects/Julia/viviane.jl/Project.toml`
  [ae650224] ChunkSplitters v3.1.2
⌅ [864edb3b] DataStructures v0.18.22
  [5789e2e9] FileIO v1.17.1
  [87dc4568] HiGHS v1.20.1
  [5903a43b] Infiltrator v1.9.7
  [c3a54625] JET v0.11.3
⌅ [033835bb] JLD2 v0.5.15
  [0f8b85d8] JSON3 v1.14.3
  [4076af6c] JuMP v1.29.4
  [b8f27783] MathOptInterface v1.48.0
  [62286e6e] MinCostFlows v0.1.2
  [c020b1a1] NaturalSort v1.0.0
  [67456a42] OhMyThreads v0.8.5
  [f0f68f2c] PlotlyJS v0.18.17
  [f27b6e38] Polynomials v4.1.0
⌅ [08abe8d2] PrettyTables v2.4.0
  [92933f4c] ProgressMeter v1.11.0
  [10745b16] Statistics v1.11.1
  [856f2bd8] StructTypes v1.11.0
  [f8b46487] TestItemRunner v1.1.4
  [1c621080] TestItems v1.0.0
  [ac1d9e8a] ThreadsX v0.1.12
  [37e2e46d] LinearAlgebra v1.12.0
  [de0858da] Printf v1.11.0
  [9e88b42a] Serialization v1.11.0
Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated`
``
```

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 26, 2026, 1:15pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/12 "2026-01-26T13:15:48Z")

</div>

Good news : The problem is not related to my code and an empty project with the following dependencies:

```julia-auto
module WorldAgeBug

using JET
using JuMP
using HiGHS
using PlotlyJS
using ChunkSplitters
using ProgressMeter
using OhMyThreads
using PrettyTables
using DataStructures
using LinearAlgebra
using JLD2
using StructTypes
using JSON3
using Infiltrator
using Serialization
using MathOptInterface
using Statistics
using Polynomials

end # module

```

allows to reproduce the bug:

```julia-auto
$ julia --project
               _
   _ _ _(_)_ | Documentation: https://docs.julialang.org
  (_) | (_) (_) |
   _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` | |
  | | |_| | | | (_| | | Version 1.12.4 (2026-01-06)
 _/ |\ __'_|_|_|\__'_| | Official https://julialang.org release
|__/ |

julia> using WorldAgeBug
WARNING: Detected access to binding `WebIO.webio_serve` in a world prior to its definition world.
  Julia 1.12 has introduced more strict world age semantics for global bindings.
  !!! This code may malfunction under Revise.
  !!! This code will error in future versions of Julia.
Hint: Add an appropriate `invokelatest` around the access to this binding.
To make this warning an error, and hence obtain a stack trace, use `julia --depwarn=error`.

julia> 

```

Now I have to remove the depencies to a minimal set…

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 26, 2026, 1:27pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/13 "2026-01-26T13:27:41Z")

</div>

Two packages are enough for the bug to arise:

```julia-auto
$ julia --project
               _
   _ _ _(_)_ | Documentation: https://docs.julialang.org
  (_) | (_) (_) |
   _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` | |
  | | |_| | | | (_| | | Version 1.12.4 (2026-01-06)
 _/ |\ __'_|_|_|\__'_| | Official https://julialang.org release
|__/ |

julia> using WorldAgeBug
WARNING: Detected access to binding `WebIO.webio_serve` in a world prior to its definition world.
  Julia 1.12 has introduced more strict world age semantics for global bindings.
  !!! This code may malfunction under Revise.
  !!! This code will error in future versions of Julia.
Hint: Add an appropriate `invokelatest` around the access to this binding.
To make this warning an error, and hence obtain a stack trace, use `julia --depwarn=error`.

(WorldAgeBug) pkg> st
Project WorldAgeBug v0.1.0
Status `~/Projects/Julia/WorldAgeBug.jl/Project.toml`
  [c3a54625] JET v0.11.3
  [f0f68f2c] PlotlyJS v0.18.17

(WorldAgeBug) pkg> 

```

And the main file of the MWE project : src/WorldAgeBug.jl:

```julia-auto
module WorldAgeBug

using JET
using PlotlyJS

end # module

```

@pfitzseb : Is this MWE OK ?

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [January 26, 2026, 1:29pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/14 "2026-01-26T13:29:22Z")

</div>

Yeah, I was just about to suggest removing JET.

Does this repro with Revise.jl instead of JET?

Anyways, @aviatesk may have an idea as to why this happens

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 26, 2026, 2:43pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/15 "2026-01-26T14:43:05Z")

</div>

Sorry for the delay.

> [@pfitzseb](#):
>
> Does this repro with [Revise.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/Revise) instead of JET?

Yes !

```julia-auto
$ julia --project
               _
   _ _ _(_)_ | Documentation: https://docs.julialang.org
  (_) | (_) (_) |
   _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` | |
  | | |_| | | | (_| | | Version 1.12.4 (2026-01-06)
 _/ |\ __'_|_|_|\__'_| | Official https://julialang.org release
|__/ |

julia> using WorldAgeBug
Precompiling WorldAgeBug finished.
  1 dependency successfully precompiled in 2 seconds. 89 already precompiled.
WARNING: Detected access to binding `WebIO.webio_serve` in a world prior to its definition world.
  Julia 1.12 has introduced more strict world age semantics for global bindings.
  !!! This code may malfunction under Revise.
  !!! This code will error in future versions of Julia.
Hint: Add an appropriate `invokelatest` around the access to this binding.
To make this warning an error, and hence obtain a stack trace, use `julia --depwarn=error`.

(WorldAgeBug) pkg> st
Project WorldAgeBug v0.1.0
Status `~/Projects/Julia/WorldAgeBug.jl/Project.toml`
  [f0f68f2c] PlotlyJS v0.18.17
  [295af30f] Revise v3.13.2

(WorldAgeBug) pkg> 

```

---

<div class="post-metadata">

**Author:** ![aviatesk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aviatesk/32/7610_2.png) [@aviatesk](https://discourse.julialang.org/u/aviatesk)\
**Post date:** [January 26, 2026, 3:22pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/16 "2026-01-26T15:22:11Z")

</div>

Revise and JET are not designed to be usinged from packages.

---

<div class="post-metadata">

**Author:** ![LaurentPlagne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laurentplagne/32/10103_2.png) [@LaurentPlagne](https://discourse.julialang.org/u/LaurentPlagne)\
**Post date:** [January 26, 2026, 8:04pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/17 "2026-01-26T20:04:24Z")

</div>

OK thanks.

When I remove both JET.jl and Revise.jl from the dependencies of the empty package WorldAgeBug.jl, the problem disappear…

BUT, when I load the WorldAgeBug.jl package from vsode (alt-J alt-O), then the pb is still there… I know that vscode automatically use Revise (but I need it).

Surprisingly, when I add

```julia-auto
   "julia.additionalArgs": [
        "--depwarn=error"
    ]

```

to the settings.json of vscode Julia’s extension it seems to mitigate the pb…

---

<div class="post-metadata">

**Author:** ![pfitzseb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pfitzseb/32/45566_2.png) [@pfitzseb](https://discourse.julialang.org/u/pfitzseb)\
**Post date:** [January 26, 2026, 9:52pm UTC](https://discourse.julialang.org/t/julia1-12-world-age-problem-related-to-plotlyjs-jl-webio/135162/18 "2026-01-26T21:52:03Z")

</div>

Sounds similar to

> <https://github.com/timholy/Revise.jl/issues/993>
>
> Put these to \`startup.jl\`:
> \`\`\`
> using Revise
> import REPL
> 
> atreplinit() do repl
> … if !isdefined(repl, :interface)
> repl.interface = REPL.setup\_interface(repl)
> end
> REPL.numbered\_prompt!(repl)
> end
> \`\`\`
> Open julia, using some package, say \`using LinearAlgebra\`, then I get this warning:
> \`\`\`
> WARNING: Detected access to binding \`MainInclude.Out\` in a world prior to its definition world.
> Julia 1.12 has introduced more strict world age semantics for global bindings.
> !!! This code may malfunction under Revise.
> !!! This code will error in future versions of Julia.
> Hint: Add an appropriate \`invokelatest\` around the access to this binding.
> To make this warning an error, and hence obtain a stack trace, use \`julia --depwarn=error\`.
> \`\`\`
> 
> julia: 1.12.4
> Revise: 3.13.1
