# Developer Release Procedure

To release a new version of the widgets on PyPI and npm, first checkout master and cd into the repo root. Make sure the version of jupyter-js-widgets matches the semver range __frontend_version__ specified in ipywidgets/_version.py.

### Publish jupyter-js-widgets

`` # nuke the `dist` and `node_modules` git clean -fdx npm version [patch/minor/major] npm install npm publish --tag next ``

### widgetsnbextension

Edit package.json to point to new jupyter-js-widgets version npm version [patch/minor/major]

Edit widgetsnbextension/_version.py (Remove dev from the version. If it’s the first beta, use b1, etc…)

`` python setup.py sdist python setup.py bdist_wheel --universal twine upload dist/* ``

### JupyterLab

Edit the package.json to have jupyter-js-widgets point to the correct version.

`` npm version patch/minor/major npm install npm run build npm publish python setup.py sdist python setup.py bdist_wheel --universal twine upload dist/* ``

### ipywidgets

edit ipywidgets/_version.py (remove dev from the version and update the frontend version requirement to match the one of jupyter-js-widgets)

Change setup.py install_requires parameter to point to new widgetsnbextension version

`` python setup.py sdist python setup.py bdist_wheel --universal twine upload dist/* ``

### Push changes back

commit and tag (ipywidgets) release

### Back to dev `` edit ipywidgets/_version.py (increase version and add dev tag) edit widgetsnbextension/widgetsnbextension/_version.py (increase version and add dev tag) git add ipywidgets/_version.py git add widgetsnbextension/widgetsnbextension/_version.py git commit -m "Back to dev" git push [upstream master] git push [upstream] --tags ``

On GitHub 1. Go to https://github.com/ipython/ipywidgets/milestones and click “Close” for the released version. 2. Make sure patch, minor, and/or major milestones exist as appropriate.