Two Very Different Tools That Do the Same Thing
Both JupyterLab and VS Code Jupyter run IPython kernels and execute .ipynb files. The notebooks themselves are identical. The difference is the environment around them.
JupyterLab 4: What Is New
JupyterLab 4 (released 2023) addressed the main complaints about JupyterLab 3:
Real-time collaboration. Multiple users can edit the same notebook simultaneously with cursor presence — like Google Docs. Enable with: pip install jupyter-collaboration
Faster rendering. The cell rendering pipeline was rewritten. Large outputs (DataFrames, images, plots) no longer freeze the browser.
Better extension system. Extensions are now distributed as PyPI packages and installed without rebuilding JupyterLab:
pip install jupyterlab-git # Git integration
pip install jupyterlab-lsp # Language server (autocomplete, hover docs)
pip install jupyterlab-github # GitHub integration
Jupyter AI (Jupyternaut). AI copilot built into JupyterLab 4:
pip install jupyter-ai
Chat interface in the sidebar, %%ai magic in cells, supports Claude/GPT-4/local models.
VS Code Notebooks: What It Does Better
IntelliSense in notebooks. VS Code runs Pylance on notebook cells — you get full type inference, go-to-definition, and find-all-references that work across cells.
Integrated debugging. Set breakpoints in notebook cells and step through with the full VS Code debugger. JupyterLab has %pdb but not integrated debugging.
Git integration. The VS Code Git panel works naturally with notebooks. You can review diffs, stage changes, and commit without leaving the IDE.
Refactoring. Extract function, rename symbol, and other refactoring tools work inside notebook cells in VS Code.
Setup Comparison: GPU Remote Server
JupyterLab on remote GPU:
# On the GPU server
pip install jupyterlab
jupyter lab --no-browser --port=8888
# On your local machine
ssh -L 8888:localhost:8888 user@gpu-server
# Open http://localhost:8888 in browser
VS Code on remote GPU:
- Install Remote-SSH extension
- Ctrl+Shift+P → "Remote-SSH: Connect to Host" → gpu-server
- Open folder, select kernel → done
VS Code Remote-SSH is significantly more convenient for GPU server work.
When JupyterLab Wins
- Multi-user JupyterHub deployment (university, research teams)
- Real-time collaboration with cursor presence
- Custom kernels (Julia, R, Scala, Haskell)
- Full browser-based workflow with no local install
- Heavy extension ecosystem (Voilà for dashboards, nbgrader for assignments)
When VS Code Wins
- Solo development with strong typing and autocomplete needs
- Debugging notebook code step-by-step
- Mixed Python scripts + notebooks in one project
- Remote GPU server without wanting a browser tab
Resources: JupyterLab docs, VS Code Jupyter extension.