# \[ANN\] IJulia 1.30.0

**URL:** https://discourse.julialang.org/t/ann-ijulia-1-30-0/131811
**Category:** Package Announcements
**Tags:** jupyter, ijulia, notebooks
**Created:** [August 24, 2025, 2:34pm UTC](https://discourse.julialang.org/t/ann-ijulia-1-30-0/131811 "2025-08-24T14:34:11Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![JamesNZ](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jamesnz/32/35361_2.png) [@JamesNZ](https://discourse.julialang.org/u/JamesNZ)
#### Post date: [August 24, 2025, 2:34pm UTC](https://discourse.julialang.org/t/ann-ijulia-1-30-0/131811/1 "2025-08-24T14:34:11Z")

</div>

Salutations \o

IJulia.jl has been around forever, but [v1.30](https://julialang.github.io/IJulia.jl/stable/changelog/#%5Bv1.30.0%5D(https://github.com/JuliaLang/IJulia.jl/releases/tag/v1.30.0)-2025-08-24) was just been released and it’s quite a big one so I felt it deserves an announcement post.

The main change in this version is that the internals have been completely refactored to allow:

- Full tests of the eventloop for the first time.
- A precompilation workload to improve TTFX.

With luck you may notice a slight improvement to kernel TTFX with the precompile workload, and with some inference improvements we made to make precompilation more effective. While there is no breaking change to the public API it’s possible that some packages depend on internals and will break (e.g. please use [ProgressMeter.jl 1.11](https://github.com/timholy/ProgressMeter.jl/releases/tag/v1.11.0)). For this reason please look out for any strange behaviour of IJulia or other packages running in IJulia since it may be a bug caused by all the refactoring.

And lots of credit goes to everyone who helped out with the refactor, particularly @stevengj, @Mason, and @halleysfifthinc ❤

* * *

If you haven’t kept up to date with IJulia recently you might want to check out the [changelog](https://julialang.github.io/IJulia.jl/stable/changelog/) to see what’s changed. Some notable improvements in previous versions from this year are:

- A deadlock was fixed that would cause the IJulia kernel to hang when shutting down (v1.28.1).
- IJulia doesn’t hardcode a path in the kernel files now so it’s possible to use whatever IJulia version is installed in a notebook environment instead of the global environment (v1.28.0).
- IJulia kernels previously weren’t shut down properly when exiting `notebook()` or `jupyterlab()`, now they are (v1.29.0).
- `notebook()` and `jupyterlab()` now support passing `verbose=true` to show the command output, and passing arguments to their underlying command (v1.29.0).

---

<div class="post-metadata">

### Author: ![linwaytin](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@linwaytin](https://discourse.julialang.org/u/linwaytin)
#### Post date: [August 24, 2025, 3:26pm UTC](https://discourse.julialang.org/t/ann-ijulia-1-30-0/131811/2 "2025-08-24T15:26:18Z")

</div>

Great! Sometime ago when I used Jupyter, I did feel start/restart Julia kernel is much slower than the Python one. I’m glad this issue is resolved.

---

<div class="post-metadata">

### Author: ![JamesNZ](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jamesnz/32/35361_2.png) [@JamesNZ](https://discourse.julialang.org/u/JamesNZ)
#### Post date: [October 13, 2025, 9:09pm UTC](https://discourse.julialang.org/t/ann-ijulia-1-30-0/131811/3 "2025-10-13T21:09:54Z")

</div>

IJulia [v1.31](https://julialang.github.io/IJulia.jl/stable/changelog/#%5Bv1.31.0%5D(https://github.com/JuliaLang/IJulia.jl/releases/tag/v1.31.0)-2025-10-13) is out now, the big improvement in this release is a PythonCall.jl extension to add support for ipywidgets and interactive matplotlib plots: [Using IJulia · IJulia](https://julialang.github.io/IJulia.jl/stable/manual/usage/#Python-integration)  
 ![](https://global.discourse-cdn.com/julialang/original/3X/a/1/a187d841c1a30d6048fc6aef63119f5edc6f8896.gif)

Previously there were also 6 patch releases in the v1.30 series, mostly covering bug fixes from the big v1.30.0 refactor and some improvements to TTFX by lazy-loading Pkg.jl and Conda.jl.

---

<div class="post-metadata">

### Author: ![JamesNZ](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jamesnz/32/35361_2.png) [@JamesNZ](https://discourse.julialang.org/u/JamesNZ)
#### Post date: [November 4, 2025, 2:41pm UTC](https://discourse.julialang.org/t/ann-ijulia-1-30-0/131811/4 "2025-11-04T14:41:55Z")

</div>

Hey all, IJulia [v1.32](https://julialang.github.io/IJulia.jl/stable/changelog/#%5Bv1.32.0%5D(https://github.com/JuliaLang/IJulia.jl/releases/tag/v1.32.0)-2025-11-04) has been released. There’s a bunch of bug fixes and internal changes, but most importantly IJulia now detects when juliaup is being used. Previously it was necessary to rebuild IJulia every time the Julia binary path changed, meaning it had to be done for every minor and patch release. Now, if juliaup is detected the kernel spec will run `julia +major.minor`, so if you’re using juliaup it’ll only be necessary to rebuild IJulia for each Julia minor release instead of each patch release.

There was also some work done to improve inferability and precompilation, so IJulia should be a smidgen snappier than before.

---

<div class="post-metadata">

### Author: ![JamesNZ](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jamesnz/32/35361_2.png) [@JamesNZ](https://discourse.julialang.org/u/JamesNZ)
#### Post date: [November 5, 2025, 5:25pm UTC](https://discourse.julialang.org/t/ann-ijulia-1-30-0/131811/5 "2025-11-05T17:25:37Z")

</div>

> [@JamesNZ](#):
>
> There’s a bunch of bug fixes and internal changes, but most importantly IJulia now detects when juliaup is being used.

Alas, this turned out to be very buggy so it’s been disabled in IJulia [v1.32.1](https://julialang.github.io/IJulia.jl/stable/changelog/#%5Bv1.32.1%5D(https://github.com/JuliaLang/IJulia.jl/releases/tag/v1.32.1)-2025-11-05) 🥲

(but it will be back in a future release)
