Blueprint is Palantir's React-based UI toolkit, distributed as a set of modular NPM packages, designed for building complex, data-dense desktop web interfaces. It ships polished components including an interactive spreadsheet-like table, date/time pickers, selects, and an extensive icon set with a cohesive design system.
A React UI component library and design system maintained by Palantir, organized as a monorepo of scoped @blueprintjs packages (core, datetime, select, table, icons, colors).
When to use blueprint
Reach for Blueprint when building information-dense, desktop-class web applications—dashboards, admin consoles, data tools—where you need professional-looking tables, date pickers, and form controls out of the box with a consistent enterprise aesthetic.
When not to
Avoid it for mobile-first or touch-centric apps (it explicitly targets desktop browsers), for marketing/content sites where a lighter or more brandable library fits better, or when you want utility-first styling freedom (Tailwind + headless libraries) or unstyled primitives like Radix.
Strengths
High-quality, battle-tested components honed inside Palantir's own data products
Standout scalable table/spreadsheet component that few peers match
Modular package split lets you pull in only what you need
Strong TypeScript typings and accompanying ESLint/Stylelint plugins to enforce correct usage
Built-in light and dark themes plus a cohesive color/icon system
Trade-offs
Opinionated Sass-based styling is harder to deeply customize than CSS-in-JS or utility frameworks
Distinct visual identity can feel heavy or dated for consumer-facing products
Not optimized for mobile/responsive touch interfaces
Major version migrations (e.g., to 6.x) require non-trivial upgrade work
Smaller mindshare and ecosystem than Material UI or Ant Design
Maturity
Very mature and production-proven, with ~22k stars, active maintenance, regular major releases with documented migration guides, visual regression testing via Chromatic, and a well-structured pnpm/Nx monorepo. It is dogfooded by Palantir, signaling long-term stewardship.
Blueprint is a React-based UI toolkit for the web.
It is optimized for building complex, data-dense web interfaces for desktop applications which run in modern browsers.
This is not a mobile-first UI toolkit.
These are hosted on GitHub Pages as static web applications:
docs-app – Documentation site at blueprintjs.com/docs
landing-app – Landing page at blueprintjs.com
These are used as development playground environments:
demo-app – demo page that shows many components all on the same page in light and dark themes
table-dev-app – demo page that supports manual testing of all table features
Build tooling
These packages define development dependencies and contain build configuration. They adhere to the standard NPM package layout, which allows us to keep clear API boundaries for build configuration and isolate groups of devDependencies. They are published to NPM in order to allow other Blueprint-related projects to use this infrastructure outside this monorepo.
pnpm manages third-party and inter-package dependencies in this monorepo.
Builds are orchestrated via Nx's task runner and NPM scripts.
Lerna-Lite is used to prepare releases.
Prerequisites: Node.js v24.11+ (see version specified in .nvmrc), pnpm v10.x (see version specified in package.json)
nvm use to use the supported Node version for Blueprint development.
corepack enable to activate pnpm as the Node package manager.
pnpm install to install all dependencies for the monorepo.
If seeing an error like "Error when performing the request ...", you may be using a VPN that needs to be disabled to install the dependencies.
If running on Windows:
npm install -g windows-build-tools to install build tools globally
Ensure bash is your configured script-shell by running:
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
(reset this by running npm config delete script-shell)
pnpm verify to ensure you have all the build tooling working properly.
(Optional) Run pnpm dev:demo to start the demo app and verify your setup is working.
Incorporating upstream changes
If you were previously in a working state and have just pulled new code from develop:
If there were package dependency changes, run pnpm install at the root.
This command is very quick if there are no new things to install.
Run pnpm compile to get the latest built versions of the library packages in this repo.
This command is quicker than pnpm verify since it doesn't build the application packages (docs-app,landing-app, etc.) or run tests
Developing libraries
There are a few ways to run development scripts, here they are listed from simplest to more advanced usage:
Run pnpm dev from the root directory to watch changes across all packages and run the docs application with webpack-dev-server.
Alternately, most libraries have a dev script to run the docs app and watch changes to only that package:
pnpm dev:core
pnpm dev:docs
pnpm dev:datetime
pnpm dev:demo
pnpm dev:select
pnpm dev:table
Lastly, if you want to control exactly which dev scripts are run and view the console output in the cleanest way, we recommend opening separate terminal windows or splits and running local package dev tasks in each one. This is the recommended workflow for frequent contributors and advanced developers. For example, to test changes in the core and icons packages, you would run the following in separate terminals:
cd packages/core && pnpm dev
cd packages/icons && pnpm dev
cd packages/docs-app && pnpm dev
Updating documentation
Much of Blueprint's documentation lives inside source code as JSDoc comments in .tsx files and KSS markup in .scss files. This documentation is extracted and converted into static JSON data using documentalist. If you are updating documentation sources (not the docs UI code which lives in packages/docs-app or the docs theme in packages/docs-theme), you'll need to run pnpm compile from packages/docs-data to see changes reflected in the application. For simplicity, an alias script pnpm docs-data exists in the root to minimize directory hopping.
Updating icons
The One-time setup and Incorporating upstream changes steps should produce the generated source code in this repo used to build the icons documentation. This is sufficient for most development workflows.
If you are updating icons or adding new ones, you'll need to run pnpm compile in packages/icons to see those changes reflected before running any of the dev scripts.
Thanks
Thanks to Chromatic for providing the visual testing platform that helps us review UI changes and catch visual regressions.
License
This project is made available under the Apache 2.0 License.