{"id":2136,"library":"nbclassic","title":"Jupyter NbClassic","description":"Jupyter NbClassic is an implementation of the classic Jupyter Notebook 6 as a Jupyter Server extension. It allows users to continue using the Notebook 6 tech-stack and its associated extensions and customizations alongside newer Jupyter environments like Notebook 7 or JupyterLab. The project is currently at version 1.3.3 and receives ongoing maintenance, primarily focusing on security and bug fixes while providing a stable, familiar interface. [1, 6, 7, 14]","status":"active","version":"1.3.3","language":"en","source_language":"en","source_url":"https://github.com/jupyter/nbclassic","tags":["jupyter","notebook","classic","server","extension","ui","legacy","compatibility"],"install":[{"cmd":"pip install nbclassic","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required Python version.","package":"python","version":">=3.9","optional":false},{"reason":"nbclassic is a Jupyter Server extension and requires it to run.","package":"jupyter-server","optional":false}],"imports":[{"note":"While nbclassic is primarily used via the command line, this is the main application class for programmatic configuration or advanced extension development. Most users will interact via 'jupyter nbclassic'.","symbol":"NBClassicApp","correct":"from nbclassic.nbclassicapp import NBClassicApp"},{"note":"Relevant for applications that previously subclassed `NotebookApp` and need to leverage the Jupyter Server backend while handling moved traits. [4]","symbol":"NBClassicConfigShimMixin","correct":"from nbclassic.nbclassicapp import NBClassicConfigShimMixin"}],"quickstart":{"code":"jupyter nbclassic","lang":"bash","description":"To launch the classic Jupyter Notebook interface, simply run `jupyter nbclassic` in your terminal. This will start a Jupyter Server and open the notebook interface in your web browser, typically at `http://127.0.0.1:8888`. [1, 2]"},"warnings":[{"fix":"Upgrade to nbclassic v1.3.3 or newer.","message":"Static asset paths for the classic Notebook were changed in nbclassic v1.3.2, breaking the ability to serve them from original endpoints. This was fixed in v1.3.3 by copying assets to legacy paths. Users on v1.3.2 may experience UI issues. [1]","severity":"breaking","affected_versions":"1.3.2"},{"fix":"Access nbclassic at the `/nbclassic/tree` URL endpoint in your browser. Notebook 7 may provide a dropdown to switch interfaces. [10, 11]","message":"When nbclassic is installed alongside Jupyter Notebook 7 (or JupyterLab), its UI will be served under the `/nbclassic/tree` base path, rather than the default `/tree` path. This is to avoid conflicts with Notebook 7, which uses `/tree`. [10, 11]","severity":"gotcha","affected_versions":"All versions when co-existing with Notebook 7"},{"fix":"Ensure your Python environment is 3.9 or newer.","message":"Support for Python 3.8 was dropped in nbclassic v1.3.0. Attempts to install or run nbclassic on Python 3.8 or older will fail. [15]","severity":"breaking","affected_versions":"<1.3.0"},{"fix":"Carefully manage dependencies, potentially using a virtual environment and checking `notebook`'s explicit `nbclassic` requirements. Consider upgrading to `notebook` v7+ if possible, which uses `jupyter-server` and `nbclassic` more smoothly. [16]","message":"Older `notebook` package versions (e.g., `notebook==6.5.1`) might have strict dependency requirements on specific `nbclassic` versions (e.g., `nbclassic==0.4.5`). Installing a newer `nbclassic` (e.g., `0.4.6` or `1.x.x`) can lead to dependency conflicts during `pip install`. [16]","severity":"gotcha","affected_versions":"nbclassic versions >0.4.5 when `notebook<7` is present"},{"fix":"Update scripts and configurations to use the new `jupyter-nbclassic-extension` (or other relevant `jupyter-nbclassic-*` commands) for managing nbclassic extensions. [8]","message":"Entrypoints for extensions were renamed in NbClassic (e.g., `jupyter-nbclassic-extension`, `jupyter nbclassic-serverextension`, `jupyter-nbclassic-bundlerextension`). Older commands or configurations using `jupyter nbextension` for nbclassic might fail or target the wrong server. [7, 8]","severity":"breaking","affected_versions":"All versions, relative to Notebook 6 entrypoints"},{"fix":"Use `jupyter server --generate-config` to create the correct configuration file and set `c.ServerApp.root_dir` for the desired startup path. [18]","message":"When configuring the startup directory for nbclassic (especially alongside JupyterLab >= 3), use `c.ServerApp.root_dir` in `jupyter_server_config.py` instead of the older `c.NotebookApp.notebook_dir` in `jupyter_notebook_config.py`. [18]","severity":"gotcha","affected_versions":"All versions, particularly when Jupyter Server is the backend"}],"env_vars":null,"last_verified":"2026-04-09T00:00:00.000Z","next_check":"2026-07-08T00:00:00.000Z"}