Library / SDK
MAIF/shapash avatar
MAIF/shapash

Shapash: a Python explainability layer that turns SHAP output into a shareable web app

đź”… Shapash: User-friendly Explainability and Interpretability to Develop Reliable and Transparent Machine Learning Models

3,259 stars388 forksJupyter NotebookApache-2.0

At a glance

What is it?
Shapash wraps SHAP and other explainability backends in a Dash web app plus a report generator, so a model's behaviour can be inspected locally and globally by people who do not read Python. Here is what the repository documents, where it stops, and who should skip it.
Who is it for?
Adopt Shapash if you already compute SHAP values and need to hand model behaviour to reviewers, auditors or business owners through a browser rather than a notebook, and if your stack is scikit-learn, XGBoost, CatBoost, LightGBM or an SVM. Do not adopt it if you need a hosted service, if your model is a deep network outside the listed backends, or if you cannot pin scikit-learn to the 1.8.x line the project declares.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 6 days ago.
What is it written in?
Mainly Jupyter Notebook, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 26, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Shapash adds on top of raw SHAP values

SHAP gives you numbers. Shapash gives you a place to look at them. The README describes the project as a Python library that makes machine learning interpretable and comprehensible for everyone, with visualizations that carry explicit labels. The stated audience is data scientists who need to understand their own models and, more pointedly, to share those results with non-data experts. That second half is the real product. A SHAP summary plot in a notebook is a private artifact. Shapash's web app is a Dash application with tabs, filters and an identity card for the selected sample, which the repository's changelog lists as arriving in version 2.3.x. The library also produces what the README calls a comprehensive report for data science auditing. It supports regression, binary classification and multiclass problems, and the README names Catboost, Xgboost, LightGBM, Sklearn Ensemble, Linear models and SVM as compatible. For anything else, the README says solutions to integrate Shapash are available and points at a section titled how shapash works. If your model is not on that list, read that section before you plan anything around the library.

How the explainability pipeline is wired

The architecture visible in the repository is a wrapper, not a new attribution method. Shapash depends on the shap package (declared as shap>=0.46.0), on scikit-learn, and on a Dash stack. The pyproject.toml also lists category_encoders, numba, numpy, pandas, plotly, scipy and shapely as runtime dependencies, with dash>=3.0.0,<4.0.0 and dash-bootstrap-components>=2.0.0 for the interface. Two entries are worth reading twice. plotly is pinned below version 6, and scikit-learn is pinned to >=1.8.0,<1.9.0, an unusually narrow window for a library that sits downstream of a model you trained elsewhere. The pandas constraint carries a comment explaining that 3.0.4 was yanked upstream because it segfaults in datetime operations. That comment is a small piece of honesty about how tightly this stack is coupled to the numeric libraries beneath it. The changelog notes that version 2.0.x refactored the compile method attributes and the implementation for new backends, which tells you the extension point for unsupported models exists but has moved between releases.

Installing Shapash and getting a first web app running

The package is on PyPI, so installation is a pip command. The optional extras are named in pyproject.toml: report for the notebook and report tooling, xgboost for xgboost>=2.1.0, and catboost for the CatBoost binding. Install the base package first and add extras only when you need them.

bash
pip install shapash

The tutorial directory in the repository is where the project expects you to start. It contains notebooks such as tutorial01-Shapash-Overview-Launch-WebApp.ipynb and, under generate_webapp, tuto-webapp01-additional-data.ipynb. The overview notebook is the shortest path to a running app. The general shape documented there is: fit or load a model, build a Shapash explainer object, compile it, and launch the interface. The exact constructor arguments are version-sensitive, which is why the 2.0.x changelog explicitly mentions refactoring compile method attributes and init. Copy the calls from the notebook that ships with the release you installed rather than from a blog post written against an older version.

The report extra adds Jinja2, jupyter-client, nbconvert, notebook, papermill, phik and pyarrow. It is a heavier install than the core library and it is only worth it if you intend to generate the audit report rather than just the web app. The README does not document a rollback or cleanup path for generated artifacts, so plan where the output files land before you run it.

Where Shapash is the wrong tool

Three constraints stand out. First, the model support list is finite. Catboost, Xgboost, LightGBM, sklearn ensembles, linear models and SVM are named; the README directs everyone else to an integration section rather than promising a drop-in path. If you serve a transformer or a custom PyTorch model, you are writing the adapter yourself. Second, the dependency pins are tight enough to become your problem. scikit-learn is constrained to the 1.8.x series, plotly to below 6.0.0, and pandas to everything except 3.0.4. In an environment where another library demands scikit-learn 1.9, you will be resolving that conflict, not Shapash. Third, the README's emphasis is lopsided. The web app, its tabs and its visual features get detailed treatment across the changelog and the linked articles; the audit report is mentioned in one sentence and one optional extra. If the report is your reason for adopting Shapash, you are working from thinner documentation than the web app users get. None of this makes the library a poor choice. It makes it a choice with a defined perimeter, and the perimeter is the model backends plus the declared version ranges.

Shapash compared with using SHAP and a dashboard directly

The obvious alternative is the shap package on its own, plus whatever charting you already use. The difference is in what each one owns. SHAP owns the attribution computation: TreeExplainer, KernelExplainer, the force plot, the summary plot. It does not own the delivery layer. If you go that route, you build the tabs, the sample picker, the filter controls and the feature labels yourself, and you maintain them as your model changes. Shapash owns the delivery layer and delegates the attribution maths to SHAP and to the model libraries. The trade is control for assembly time. A team with an existing internal dashboard framework may find Shapash's Dash app redundant and its version pins an unnecessary constraint. A team without one gets a working interface from a notebook in the time it takes to install the package and follow one tutorial. The honest framing: Shapash is not a better explainability algorithm, it is a packaging decision. The changelog entries for version 2.2.x, which added a dataset filter tab and a picking-samples tab that plots true values against predicted values, are interface work, not methodology work.

Maintenance, licence and the cost of upgrading

The repository is not archived, and the last push was on 2026-09-10, which is recent. The most recent release listed is v2.9.0 on 2026-05-27, following v2.8.1 on 2026-01-30 and v2.8.0 on 2026-01-20. That cadence suggests a project that ships, though the gap between the May release and the September push means you should check the commit history for what landed after v2.9.0 rather than assuming it is released. The licence is Apache-2.0, declared in both the README badge and the pyproject.toml license field, and the classifiers mark it OSI Approved. Apache-2.0 is permissive and includes a patent grant, which matters for internal audit tooling that may be shown to third parties. It is not a copyleft licence, so it does not oblige you to publish modifications. This is a description of the declared licence, not legal advice; if you redistribute Shapash inside a commercial product, have your own counsel read the LICENSE file in the repository. The upgrade cost is dominated by the dependency pins rather than by Shapash's own API. The 2.0.x refactor of compile attributes and init is the kind of change that breaks notebooks, so pin Shapash to a minor version and read the changelog before moving.

Editorial conclusion

Adopt Shapash if you already compute SHAP values and need to hand model behaviour to reviewers, auditors or business owners through a browser rather than a notebook, and if your stack is scikit-learn, XGBoost, CatBoost, LightGBM or an SVM. Do not adopt it if you need a hosted service, if your model is a deep network outside the listed backends, or if you cannot pin scikit-learn to the 1.8.x line the project declares. Before committing, verify that your SHAP version satisfies the shap>=0.46.0 floor, that pandas is not 3.0.4, and that the report extra installs cleanly in your environment, since the README documents the web app in far more detail than the report pipeline.

Frequently asked questions

What is Shapash in Python used for?

Shapash is a Python library that makes machine learning models interpretable, offering visualizations with explicit labels and a web app for exploring local and global explainability. It also generates a report for data science auditing.

Which models does Shapash support?

The README names Catboost, Xgboost, LightGBM, Sklearn Ensemble, Linear models and SVM, and states that solutions to integrate other models are available. It supports regression, binary classification and multiclass problems.

What Python version does Shapash require?

The pyproject.toml declares requires-python of >=3.11, <3.15, with classifiers for Python 3.11 through 3.14.

Official sources

  1. License: Apache-2.0
  2. MAIF/shapash on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/maif-shapash.svg)](https://hysenlabs.com/projects/maif-shapash)