{"id":6695,"library":"jupyter-contrib-nbextensions","title":"Jupyter Contrib Nbextensions","description":"Jupyter Contrib Nbextensions is a collection of community-contributed unofficial extensions that enhance the functionality of the classic Jupyter Notebook interface. These extensions are primarily written in JavaScript and are loaded directly in the browser. The library, currently at version 0.7.0, is maintained independently and aims to provide various productivity and usability enhancements for Jupyter Notebook users. While the core package updates are infrequent (last release Nov 2022), the collection of extensions remains a popular way to customize the classic notebook experience.","status":"active","version":"0.7.0","language":"en","source_language":"en","source_url":"https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git","tags":["jupyter","notebook","extensions","productivity","javascript","ui-enhancement"],"install":[{"cmd":"pip install jupyter_contrib_nbextensions","lang":"bash","label":"Install Python package"},{"cmd":"conda install -c conda-forge jupyter_contrib_nbextensions","lang":"bash","label":"Install Python package with Conda"}],"dependencies":[{"reason":"Provides a graphical user interface in Jupyter Notebook for enabling, disabling, and configuring individual nbextensions. It is installed as a dependency of `jupyter_contrib_nbextensions` but may need manual enabling.","package":"jupyter_nbextensions_configurator","optional":false}],"imports":[{"note":"The primary interaction is through command-line tools or the Jupyter Notebook UI, not Python `import` statements for using individual extensions.","symbol":"N/A","correct":"This library provides Jupyter Notebook extensions (mostly JavaScript) and `jupyter` subcommands, rather than Python objects for direct import into scripts."}],"quickstart":{"code":"# 1. Install the main Python package (if not already done)\npip install jupyter_contrib_nbextensions\n\n# 2. Install the JavaScript and CSS files to the Jupyter data directory\n#    Use --user for a user-specific installation, or --sys-prefix for a virtual environment.\n!jupyter contrib nbextension install --user\n\n# 3. Enable the nbextensions configurator (usually enabled by default with install)\n!jupyter nbextensions_configurator enable --user\n\n# 4. Launch Jupyter Notebook and navigate to the 'Nbextensions' tab\n#    (This step is manual, outside of this script)\n#    You can then enable individual extensions like 'Table of Contents (2)' or 'Codefolding'.\n\n# Example: To programmatically enable a specific extension (e.g., Codefolding):\n# !jupyter nbextension enable codefolding/main --user\n\nprint(\"Jupyter Contrib Nbextensions installed and configurator enabled. Please launch Jupyter Notebook to manage extensions.\")","lang":"python","description":"This quickstart demonstrates how to install the `jupyter_contrib_nbextensions` Python package and then install its client-side JavaScript and CSS files for the current user. It also ensures the `jupyter_nbextensions_configurator` is enabled, which provides a 'Nbextensions' tab in the Jupyter Notebook interface for easy management of the extensions. While individual extensions can be enabled via command line, the GUI configurator is the recommended way for most users."},"warnings":[{"fix":"Use the classic Jupyter Notebook interface. For JupyterLab, search for 'JupyterLab extensions' or 'jupyterlab-contrib' for compatible alternatives.","message":"Jupyter Contrib Nbextensions are NOT compatible with JupyterLab. They are designed exclusively for the classic Jupyter Notebook interface. Users attempting to use them in JupyterLab will find they do not work.","severity":"breaking","affected_versions":"All versions of jupyter-contrib-nbextensions with all versions of JupyterLab"},{"fix":"Users may need to downgrade their Jupyter Notebook version (e.g., `pip install notebook==5.7.8` or `pip install notebook==6.1.5`). Alternatively, in the Nbextensions tab, uncheck the option 'disable configuration for nbextensions without explicit compatibility' (use with caution).","message":"Incompatibility with newer Jupyter Notebook versions (6.x and above). Many extensions in the configurator may be marked as 'possibly incompatible'. This can lead to unexpected behavior or extensions not loading correctly. Anaconda updates have also been reported to cause issues.","severity":"breaking","affected_versions":"Jupyter Notebook 6.x and higher (as of 0.7.0 of jupyter-contrib-nbextensions)"},{"fix":"Always follow the complete installation instructions, including the `jupyter contrib nbextension install` command and then enabling extensions via the Jupyter Notebook 'Nbextensions' tab.","message":"Extensions require a multi-step installation and activation. Installing the Python package (`pip install ...`) is only the first step. The JavaScript/CSS files must then be installed (`jupyter contrib nbextension install ...`), and finally, individual extensions need to be explicitly enabled, often through the 'Nbextensions' tab provided by `jupyter_nbextensions_configurator`.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Increase the `requirejs` timeout by adding `window.requirejs.config({waitseconds: 60});` (or a higher value) to your `custom.js` file. Consult Jupyter's documentation for the location of `custom.js`.","message":"Extensions may fail to load in large notebooks due to a default `requirejs` timeout. This can manifest as extensions not appearing or not functioning correctly after a notebook with many cells loads.","severity":"gotcha","affected_versions":"All versions (dependent on Jupyter Notebook's `requirejs` configuration)"},{"fix":"Use `jupyter contrib nbextension uninstall --user` (and potentially `--system`) to remove old files, then reinstall. Debug logs from `jupyter notebook --debug` can help identify the location of duplicate files.","message":"Migrating from older installations or experiencing issues can result in 'double entries' of extensions in the configurator. This occurs when old extension files are not properly removed during updates or reinstallation.","severity":"gotcha","affected_versions":"Older installations or migration scenarios"}],"env_vars":null,"last_verified":"2026-04-15T00:00:00.000Z","next_check":"2026-07-14T00:00:00.000Z","problems":[]}