Stefano CappelliniSC

AI • Deep Learning • Machine Learning • Software Engineering

Bye bye Jupyter Notebook App, welcome JupyterLab!

Written on

; In: ,

Have you already switched to the new JupyterLab? If no, you should really give it a try because it is amazing!

But what makes it so great?

What I like (a lot)

A complete IDE experience

Like its older brother (the Jupyter Notebook App), it is a Web application that allows you to create, manage and run notebooks. Unlike its predecessor, JupyterLab offers almost a complete IDE experience, with a unique and integrated window: everything is at a glance. For example, by using the new file browser you have now access to all your files while you are working on your notebooks.

JupyterLab window
The JupyterLab browser window

Extremely customizable

The work area can be organized the way you prefer: you can split it into panels, placing the notebooks (or other documents) you are working on side by side, one over the other and in many other different ways. Each panel can be further organized using tabs, giving you extreme flexibility.

You can organize the work area the way you prefer!

If you want to focus on a single document, you can switch to the single-document view, using the option available under the view menu.

The layout can be saved

JupyterLab is built around the concept of workspace. A workspace keeps track of the currently opened files, the layout of the work area, the tabs used and so on. The beautiful thing is that workspaces can be saved, giving them a custom URL. In that way you can access a specific workspace from everywhere in the world (provided you have access to the server serving the documents).


JupyterLab natively offers four different base elements:

  • Notebooks: the Notebook docs you are used to
  • Files: from text files, to media files
  • Terminals: as the name said, these are shells you can start and place directly in your workspace
  • Code console: enable you to run code directly in a kernel. For example, if you are using Python, this means having access to IPython using the virtual environment you chose. This is the new entry and it is fantastic for fast prototyping.

Writing papers and documents has never been so easy

JupyterLab supports lot of different media types. You can now open images, pdfs and text files directly in your work area: you can even interact with those files (for example zooming, rotating the images) and edit SVG files. However, it is on text document where JupyterLab really starts to shine. You can work on a markdown document and see the results of the edits you are making almost in realtime (and you can do almost the same thing with LateX using a plugin).

Images, pdfs, markdown documents: everything in the same window.
Working on a Markdown document like a boss

Built-in support for CSV and JSON files.

JupyterLab natively offers a CSV viewer, a CSV editor, a JSON viewer and a JSON editor.

JupyterLab makes working with JSON and CSV files easy!

Nice integration

Everything is nicely integrated and works smoothly: documents, kernels and code interact between each other allowing new way of working.

  • You can execute a piece of code written in a text document using the chosen kernel. This is useful to check if the code you are writing in your document contains errors.
  • You can copy a cell from one notebook to another simply by dragging it
  • The same file can be opened multiple times: all these istance will be kept synchronized automagically
  • You can log the outputs produced by the entire notebook using an independent console (using the "new console for output" option)

  • You can monitor and replicate the output of a single notebook's cell using an independent view (using the "create new view for output" option)

  • Jupyter correctly recognizes JSON objects produced by a notebook cell and renders them properly, allowing you to navigate their trees.

And a lot more!

There are many other interesting features I won't discuss here (simply for the sake of simplicity). If you are interested, you can take a look at the original doc. For example, a fantastic feature is the new auto-complete, doesn't it look amazing?

What I do not like

JupyterLab is fairly a new product and it is still under heavy development. So there is clearly room for improvement (and that's the beauty of open source!)

Multi-monitor support

As I said before, you can organize your work area in a very flexible way. You cannot, however, split your work area across multiple monitors, and this is something really frustrating. You are stucked on a single monitor because each workspace can be opened on a single tab/window at a time (yes you can set different names for the workspace but it something tedious). This is a severe limitation you do not have with the old Jupyter Notebook App.

Kernel interruptions

I found the kernel interruption mechanism to be less effective than the one offered by the older Jupyter Notebook App: sometimes it hangs and you have to wait. It is not big deal but something annoying.

To summarize

If you haven't tried JupyterLab yet, you should really try it, because it offers many new and useful functionalities and a pragmatic, effective, integrate environment that boosts your productivity. Bye bye Jupyter Notebook App.