Open-source project
palantir/blueprint avatar
palantir/blueprint

Palantir Blueprint: a React UI toolkit for data-dense desktop web apps

A React-based UI toolkit for the web

22,102 stars2,361 forksTypeScriptApache-2.0

At a glance

What is it?
Blueprint is Palantir's React component library for dense, desktop-oriented browser interfaces, shipped as separate npm packages for core, icons, select, datetime and table. It is not a mobile-first design system, and its install path is npm rather than a single download.
Who is it for?
Adopt Blueprint when your interface is a desktop-class, data-heavy browser application and you want components that assume a mouse, a keyboard and a wide viewport. Skip it if your product is mobile-first, because the README states this is not a mobile-first UI toolkit.
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 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

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

Editorial analysis

What Blueprint is for, and who should not reach for it

Blueprint is a React-based UI toolkit for the web. The README is explicit about the target: it is optimized for building complex, data-dense web interfaces for desktop applications that run in modern browsers. The phrase that matters most is the negative one, which the README states plainly: this is not a mobile-first UI toolkit.

That sentence does most of the positioning work. If you are building an internal operations console, an analyst workbench, a log viewer or anything where a user spends eight hours a day in front of a wide screen, the component set is aimed at you. If your primary surface is a phone, the toolkit was not designed around that constraint and you should look elsewhere.

The repository is a monorepo, and the published libraries are split by concern rather than shipped as one bundle: @blueprintjs/colors for design system color variables, @blueprintjs/core for core styles and components, @blueprintjs/icons for icon APIs, @blueprintjs/select for selecting items from a list, @blueprintjs/datetime for dates and times, and @blueprintjs/table for a spreadsheet-like table component. That split is the first real decision a new user faces: you install the pieces your screens actually use rather than a single monolithic dependency.

How the packages and the monorepo fit together

The repository contains multiple projects under packages/ in three categories. The first is the libraries published to npm, listed above. The second is applications: docs-app serves the documentation at blueprintjs.com/docs, landing-app serves the landing page, and demo-app and table-dev-app exist as development playgrounds rather than as things you install. The third category is build tooling, and it is the unusual part.

Those build packages are published to npm too: @blueprintjs/docs-theme, @blueprintjs/eslint-config, @blueprintjs/eslint-plugin, @blueprintjs/node-build-scripts, @blueprintjs/stylelint-plugin, @blueprintjs/test-commons and @blueprintjs/webpack-build-scripts. The README explains why, stating that they are published in order to allow other Blueprint-related projects to use this infrastructure outside this monorepo. So the lint rules and Sass build scripts that Palantir uses internally are available to you as packages, not just as source you copy.

The data flow for a consumer is ordinary npm: you depend on one or more @blueprintjs packages, import components from them, and compile your own application. The monorepo's own tooling is a separate concern. According to the README, pnpm manages third-party and inter-package dependencies, Nx's task runner orchestrates builds through npm scripts, and Lerna-Lite prepares releases. None of that is required to use the published packages, but it is what you would be working inside if you contribute.

Installing Blueprint and rendering a first component

There is no installer or download in the usual sense. Blueprint is distributed as npm packages, so the install step is a package manager command against the registry. The README does not give a consumer-facing install snippet, but it does name the packages and their scope, so the package names below come directly from that list.

Install the core library and the icon package, which is the minimum most applications start with:

bash
npm install @blueprintjs/core @blueprintjs/icons

The README also links a CodeSandbox template for Blueprint v6 on React 18, which is the fastest way to see the components render without setting up a build first. For a local project, the packages are consumed like any other React dependency: import a component from @blueprintjs/core and render it. The documentation site at blueprintjs.com/docs is where the README points for the full component reference, and the repository's docs-app is the source of that site.

If you want to work on Blueprint itself rather than consume it, the README's development section is the relevant path. It lists Node.js v24.11+ as a prerequisite, with the exact version specified in .nvmrc, and pnpm v10.x as specified in package.json. The one-time setup is:

bash
nvm use
corepack enable
pnpm install
pnpm verify

The README notes that pnpm install can fail with a request error if you are on a VPN that needs to be disabled, and that Windows users are instructed to install windows-build-tools globally and set bash as the configured script-shell. The pnpm verify step is described as a way to confirm all the build tooling is working properly.

Where Blueprint stops: mobile, and the questions the README leaves open

The clearest limitation is stated by the project itself. Blueprint is not a mobile-first UI toolkit. If a meaningful share of your users are on phones, the component set was not designed with that as the primary constraint, and adapting a desktop-dense toolkit to a small viewport is work you own.

The second limitation is documentation scope. The README points elsewhere for several things a reader might expect to find in it. Changelogs and migration guides for major versions live on the repository's GitHub wiki, not in the README. Frequently asked questions also live on the wiki. That means the README is an orientation document, and the answers to version-upgrade questions are one hop away.

There is also a dependency surface worth noticing. The build tooling packages are published, and the repository pins specific tool versions: Node.js v24.11+ per .nvmrc and pnpm v10.x per package.json. The package.json in the repository declares packageManager as [email protected], which is a different value from the pnpm v10.x the README's prerequisites mention. If you are setting up the monorepo for contribution, that is the kind of detail to resolve from the pinned files rather than from prose, since the two sources in this material do not agree.

Finally, the toolkit assumes modern browsers. The README says the target is desktop applications which run in modern browsers, and the repository carries a .browserslistrc, so browser support is configured rather than implied.

Blueprint compared with a general-purpose component library

The obvious alternative approach is a general-purpose React component library that treats mobile and desktop as one responsive target, with a single package and a theme layer on top. The difference is not quality, it is the assumption baked into the components.

Blueprint splits its surface by problem domain instead of shipping one package. @blueprintjs/table is a spreadsheet-like table component, and the README describes it as scalable and interactive. @blueprintjs/select handles selecting items from a list. @blueprintjs/datetime handles dates and times. A general-purpose library typically gives you a generic data grid and a generic picker and leaves the spreadsheet semantics to you. If your application is mostly a large editable grid, that difference is the whole argument.

The second difference is the styling pipeline. Blueprint's build tooling includes @blueprintjs/node-build-scripts, described in the README as utility scripts for building Sass sources, linting Sass and TypeScript, generating Sass and Less variables, and optimizing icon SVGs. Sass is a first-class part of the stack, not an afterthought bolted onto a CSS-in-JS core. Teams that have standardized on CSS-in-JS will find that a mismatch rather than a feature.

The third difference is governance. Blueprint is Apache-2.0 and developed in the open by Palantir, with contribution guidelines in CONTRIBUTING.md and a help wanted label for people looking for places to contribute. A library maintained by a single vendor for its own products tends to move in step with those products. That is a reasonable trade for teams building similar software, and a risk for teams whose needs diverge.

Licence, release cadence and what upgrades cost

Blueprint is licensed under Apache-2.0. That is a permissive licence that allows commercial use and modification, and it includes an explicit patent grant. It is not a copyleft licence, so it does not require you to publish your own source. This is a description of the licence identifier in the repository, not legal advice; if the patent or notice clauses matter to your organisation, have counsel read the LICENSE file rather than this paragraph.

The repository is not archived, and the last push was on 2026-09-18. Recent releases are frequent and versioned per package rather than as one product: @blueprintjs/[email protected], @blueprintjs/[email protected] and @blueprintjs/[email protected] were all published on 2026-09-17. Independent version numbers per package mean an upgrade is rarely a single version bump across your dependency list, and you should expect to track which packages you actually depend on.

The upgrade cost is concentrated in major versions. The README states that migration guides for major versions live on the GitHub wiki, alongside the changelog. That is the document to read before a major upgrade. The current major line visible in the release list is 6.x, and the CodeSandbox template the README links is described as the Blueprint v6 React 18 template, so React 18 is the version that template targets. For anything beyond that, the wiki is the source, and the README does not document rollback procedures or deprecation timelines.

Editorial conclusion

Adopt Blueprint when your interface is a desktop-class, data-heavy browser application and you want components that assume a mouse, a keyboard and a wide viewport. Skip it if your product is mobile-first, because the README states this is not a mobile-first UI toolkit. Before committing, check the 6.x changelog and migration guide on the GitHub wiki for the major version you are moving from, confirm that your Node and pnpm versions match the ones pinned in .nvmrc and package.json, and read the FAQ on the wiki for the questions the README does not answer.

Frequently asked questions

What is Blueprint in programming?

In this context Blueprint is a React-based UI toolkit for the web, published by Palantir as the @blueprintjs scope on npm. It is optimized for complex, data-dense desktop web interfaces rather than mobile-first ones.

How do I install Blueprint?

Blueprint is distributed as npm packages, so installation means adding the packages you need, for example @blueprintjs/core and @blueprintjs/icons, with your package manager. The README also links a CodeSandbox template for Blueprint v6 on React 18 if you want to try it without a local build.

Is Blueprint suitable for mobile applications?

No. The README states that Blueprint is optimized for desktop applications in modern browsers and that it is not a mobile-first UI toolkit.

Which packages make up Blueprint?

The published component libraries are @blueprintjs/colors, @blueprintjs/core, @blueprintjs/datetime, @blueprintjs/icons, @blueprintjs/select and @blueprintjs/table. The repository also publishes build tooling packages such as @blueprintjs/eslint-config, @blueprintjs/stylelint-plugin and @blueprintjs/webpack-build-scripts.

Where are Blueprint's changelog and migration guides?

The README states that the changelog and migration guides for major versions live on the repository's GitHub wiki, not in the README itself. The FAQ is on the wiki as well.

What licence does Blueprint use?

The repository is licensed under Apache-2.0, a permissive licence that permits commercial use and modification. The LICENSE file in the repository is the authoritative text.

Official sources

  1. License: Apache-2.0
  2. palantir/blueprint 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/palantir-blueprint.svg)](https://hysenlabs.com/projects/palantir-blueprint)