JupyterLab 3.0 is released!

Jeremy Tuloup
Jupyter Blog
Published in
5 min readJan 5, 2021

--

The 3.0 release of JupyterLab brings many new features to users and substantial improvements to the extension system.

Installation

To install JupyterLab with pip:

pip install jupyterlab==3

With mamba:

mamba install -c conda-forge jupyterlab=3

With conda:

conda install -c conda-forge jupyterlab=3

(Note that many third-party extensions are still in the process of updating to be compatible with JupyterLab 3.0 — please check the extensions you use and be patient, or even better, help them update! Also, it may help to uninstall JupyterLab 2 if you already have it installed.)

Here is an overview of the major user-facing changes in JupyterLab 3.0.

Debugger

Announced earlier this year, the visual debugger is now shipped by default with JupyterLab.

To use the visual debugger, you will need a kernel that supports debugging. An example of such kernel is xeus-python, the first Jupyter Kernel for Python with support for debugging.

Stepping into Python code in JupyterLab with the visual debugger

Check out the user documentation for more information, including a notebook based tutorial to interactively learn how to use the debugger.

Table of Contents

The table of contents extension now ships with JupyterLab. This makes it easy to see and navigate the structure of a document.

Using the Table of Content in JupyterLab 3.0

Support for multiple display languages

JupyterLab now provides the ability to set the display language of the user interface.

Users will need to install the language pack as a separate Python package. Language packs are grouped in the language packs repository on GitHub, and can be installed with pip. For example, it is possible to install the language pack for Simplified Chinese using the following command:

pip install jupyterlab-language-pack-zh-CN
JupyterLab in Simplified Chinese

Check out the user documentation to learn more about the feature and how to add new language packs.

Improvements to the Simple Interface mode

The Simple Interface mode (previously known as the Single-Document Mode) has been significantly updated to have a more streamlined, document-oriented feel.

To make the Simple Interface mode more discoverable, there is now a switch to toggle it in the status bar. You can also toggle it from the View menu or the command palette, or use the default keyboard shortcut Ctrl/Cmd+Shift+D.

Enabling and disabling the Simple Interface Mode

Support for mobile has also greatly improved with a more compact layout. JupyterLab automatically switches to the Simple Interface when the window is resized down.

JupyterLab switches to the Simple Interface Mode on smaller screen

There is ongoing work to iterate on this concept and make the interface even more accessible on mobile devices.

Install new extensions with pip and conda / mamba

JupyterLab extensions can now be distributed as prebuilt extensions, which do not require a user to rebuild JupyterLab or have Node.js installed. Prebuilt extensions can be distributed as Python packages using familiar package managers such as pip, conda, and mamba. This makes installing and using extensions much faster and more convenient!

Installing a new extension with pip

Prebuilt extensions can be published to PyPI and conda-forge as separate packages, or bundled into existing packages with Jupyter Server extensions and Classic Notebook extensions. This helps make the ecosystem as a whole more coherent.

For example, install the new ipywidgets 7.6.0 with pip or conda to automatically enable ipywidgets in both the classic Jupyter Notebook and in JupyterLab 3.0 — no extra installation step or JupyterLab rebuild needed!

Installing ipywidgets works automagically in JupyterLab 3.0!

Improved development workflow for Extension Authors

The new prebuilt extensions are more convenient for extension authors to develop. The TypeScript extension cookiecutter has been updated to develop prebuilt extensions by default and provides all the necessary tooling to quickly create a new extension from scratch.

For more information, check out the Extension Developer Guide and the JupyterLab 2.x to 3.x Migration Guide.

Extension Examples

If you are looking for examples to learn how to make your own extension, make sure to check out the extension examples repository on GitHub. The examples have been updated to be compatible with JupyterLab 3.0 and provide a hands-on approach to developing extensions.

Changelog

This post was only an overview of what’s new in 3.0! If you are looking for a more complete list of the changes including bug fixes, be sure to have a look at the changelog.

Try it out on Binder

JupyterLab 3.0 can easily be tested on Binder using the following link:

https://mybinder.org/v2/gist/jtpio/8d392846c2f3ee6fab38cdfab5a364ec/master?urlpath=/lab

Get Involved

There are many ways you can participate in the JupyterLab effort. We welcome contributions from all members of the Jupyter community:

And don’t forget to participate in the user survey: https://www.surveymonkey.com/r/LCB7GBF

Thanks!

--

--

Scientific Software Engineer at QuantStack, Jupyter Core Developer and Distinguished Contributor.