JupyterLite is an unofficial Jupyter distribution that runs entirely in the web browser without any server components. Deployment and hosting are easy as JupyterLite sites are just static websites.
The new 0.6.0 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.
Support for kernel stdin requests is now available, enabling interactive input functions like Python’s input()and getpass() in notebooks. This fixes a long standing limitation of JupyterLite when executing the following code:
name = input("What is your name? ")print(f"Hello {name}!")
Since input()is used quite extensively in introductory Python courses, this new feature should help make teaching with JupyterLite easier!
The REPL exposes new options as URL parameters:
- promptCellPosition — place the prompt cell to the top, left, right or bottom
- clearCodeContentOnExecute — when disabled, the code submitted for execution remains in the code editor, allowing for further edits.
- hideCodeInput — when enabled, only the execution output is shown in the console.
- clearCellsOnExecute — when enabled, only the last cell is displayed.
- showBanner — when disabled, hide the banner for the kernel
Toggling all the new options transforms the console into an interactive editor resembling an ephemeral notebook with a single cell.
In addition to these URL parameters, the toolbar includes new items to:
- Execute code
- Restart the kernel
- Clear the cells
- Switch the kernel
Check out the REPL documentation for more details on how to use these parameters.
A new notebook toolbar item has been added to show the kernel status with three different states:
- Loading: the kernel is starting or performing some actions
- Success: the kernel is ready to execute code
- Failure: an error occurred while starting the kernel or during execution, and likely requires a restart of the kernel
This new toolbar item gives users better visibility into the kernel’s status and allows them to view the kernel logs by clicking on the toolbar item to open the log console.
By default JupyterLite stores user-created notebooks and settings in the browser.
In previous versions, users had to manually clear the data using the browser developer tools. With JupyterLite 0.6.0 it is now possible to clear the browser data from the UI by clicking on the Help > Clear Browser Data menu item. The confirmation dialog will show options to clear settings and contents.
A new indicator has been added to let users know JupyterLite is currently starting up, which is useful for deployments that take some time to load, especially on slow connections.
By default, the loading indicator is only visible in the JupyterLab application (not for Jupyter Notebook or REPL). If you would like to enable or disable the indicator for some or all applications, check out the guide in the documentation.
Settings can now be exported to an overrides.json file from the Settings Editor. This file can then be used to pre-configure defaults in deployments or to restore settings.
This allows users to interact with a JupyterLite deployment, make a couple of changes to the settings, and export them to an overrides.json that can be then included in a JupyterLite deployment, or imported in another one.
Open the command palette and search for Advanced Plugin Manager to open the plugin manager. With the plugin manager, users can:
- View active plugins in the running JupyterLite environment
- Understand dependency relationships between plugins
- Gain better visibility into the configuration of their environment
The default in-browser storage is now scoped using the baseUrl of the deployment. This allows hosting multiple sites under the same domain, and keeps user created files isolated from each other.
For example if two sites are hosted on GitHub Pages and available under the following URLs:
In practice this fixes the issue where users would create new files in one site, and they would show up in another site hosted under the same domain.
Using JupyterLite in multiple browser tabs at the same time should now result in less issues, in particular when interacting with the file system.
In previous versions, JupyterLite was creating a separate application to register “server” extensions. Examples of such extensions are the different managers (sessions, kernels, settings, contents) but also the actual kernels (Pyodide, Xeus Python). This was not ideal because it introduced a separate namespace for these extensions, and extension authors had to configure their extension to be either a regular JupyterLab extension or a JupyterLite “server” extension.
Starting with JupyterLite 0.6.0, all extensions are now registered at the same level as regular JupyterLab extensions, making use of the new ServiceManagerPlugin type of extension introduced in JupyterLab 4.4.
JupyterLite 0.6.0 is built on top of JupyterLab 4.4 and Notebook 7.4, and brings many of the respective improvements and bug fixes. Check out the announcement blog post to learn more.
In addition to the JupyterLite 0.6.0 release, the Pyodide and Xeus Python kernels have also been updated to be compatible with the latest release.
Other components of the stack such as Voici and thebe-lite will also soon be updated.
As mentioned above, JupyterLab 4.4 introduced the ability to replace some of the core ServiceManager plugins responsible for interacting with the server, such as the kernel and session managers.
This allows JupyterLite to progressively become a set of JupyterLab extensions that can be integrated in regular JupyterLab instances.
Using in-browser and regular kernels together
⚠️ This is still very experimental!
An example of such integration is the jupyterlab-hybrid-kernels extension.
This extension allows using both in-browser (JupyterLite) and regular Jupyter kernels together in the same JupyterLab session.
There is also some work happening to explore automatically promoting in-browser kernels as regular kernels when some computations are not possible in the browser, or when some modules are not available.
If you maintain a JupyterLite deployment and would like to update to the latest version, check out the migration guide.
For a more interactive tour of the new features, watch the video below:
If you would like to try the new features in your browser, click on the following link:
The work on JupyterLite at QuantStack was contributed by Anastasia Sliusar, Ian Thomas, Jeremy Tuloup, Martin Renou and Thorsten Beier.
Thanks to Bloomberg for funding this work and for their ongoing support for JupyterLite in general.
Thanks to the Bill & Melinda Gates Foundation (through a grant to CourseKata) for funding the work on the interactive input feature.
Many thanks to all the contributors to JupyterLite, Jupyter Frontends and related project in the Jupyter ecosystem (list below is based on GitHub usernames):
@2xB | @anutosh491 | @bollwyvl | @davidbrochart | @ianthomas23 | @jtpio | @juntyr | @lesteve | @martinRenou | @RMattB1 | @trungleduc | @westurner | @yogabonito