Project Jupyter provides building blocks for interactive and exploratory computing. Central to the project is the Jupyter Notebook, a web-based interactive computing platform that allows users to author "computational narratives" that combine live code, equations, narrative text, visualizations, interactive dashboards and other media. JupyterLab goes beyond the classic Jupyter Notebook and provides a flexible and extensible web application with a set of reusable components. Users can arrange multiple notebooks, text editors, terminals, output areas, and custom components using tabs and collapsible sidebars. These components are designed to be used together or separately. Users can install or write third-party plugins to view custom file formats such as GeoJSON or FASTA, interact with external services such as Dask or Apache Spark, or collaborate with other users in real-time with Google Drive. In this tutorial, we will demonstrate JupyterLab, describe how it fits into the Jupyter ecosystem, show how it can be extended with custom plugins, encourage users to contribute pull requests, and share ways to create one's own extensions using our JavaScript and TypeScript cookie cutters.