Instructions and notes for preparing and publishing a release.

NOTE as part of release 5.7 or RISE, the sources repo layout has changed and the code for the classic notebook extension has moved under the classic subdir; at this point the jlab area is not ready for shipping, and so these instructions are only about the classic extension.

NOTE be aware that the official JupyterLab RISE extensions eventually landed in a separate github repo at

Pre-Release check

Step 0. Clean your local repo copy at your top level (ROOT) directory:

git clean -fdx

Step 1. Check for updated version numbers in


Step 2. Build rise-reveal (new step in release 5.7)

cd $ROOT/rise-reveal
npm install
npm run build

Step 3. Build the JS and CSS:

cd $ROOT/classic
npm install
npm run build


Step 4. Tag the repo with:

git tag -a release_tag -m "Release msg"
git push origin release_tag

Step 5. Build sdist and wheels packages:

cd $ROOT/classic
python sdist
python bdist_wheel

Step 6. Upload sdist and wheels to PyPI:

cd $ROOT/classic
twine upload dist/*

NOTE when checking the RISE packaging, it can come in handy to publish onto so as to not pollute the official index; for that purpose do

# to publish on
twine upload --repository-url dist/*
# to install from that location
pip install --index --upgrade --pre rise

Step 7. Push changes to conda-forge:

NOTE this is performed automatically by some conda-forge bot around one hour after we release on PyPI; but in case you need detailed information about the manual process, please see below

The conda recipe to build the RISE package is maintained in a separate github repo at

  • First read this section:

  • You need to update the version number here:

  • You need to update the sha number here:

  • (Optional) You need to update any dependencies if you have new ones or remove old ones.

  • (Optional) You may want to update the recipe, for instance, eventually, we will get rid of the post-link steps (see,

  • (Optional) You may need to rerender the feedstock, eventually.

Open a PR with those changes and when the PR is merged, several CI runs will be triggered and the packages will be generated and uploaded to