# JBrowse 2: A React-Based Genome Browser That Runs Without a Server

> JBrowse 2 is a pluggable, open-source genome browser built on React and TypeScript that offers linear, circular, dotplot, synteny, and spreadsheet views. Its static-site compatibility makes it a practical choice for labs that want to host a browser without managing a backend.

**GMOD/jbrowse-components** — Source code for JBrowse 2, a modern React-based genome browser

- Repository: https://github.com/GMOD/jbrowse-components
- Website: https://jbrowse.org/jb2
- Stars: 297 · Forks: 88
- Language: TypeScript
- License: Apache-2.0
- Published: 2026-08-27 · Updated: 2026-08-27 · Language: en
- Canonical page: https://hysenlabs.com/projects/gmod-jbrowse-components

## What Problem It Solves and Who It Is For

JBrowse 2 targets genomics labs and bioinformatics groups that need to visualize large-scale sequence data, including alignments, variants, and structural variants. The core problem it addresses is the difficulty of deploying a genome browser without standing up a server. The README states that the web app is 'static-site compatible': it is pure client-side JS, CSS, and HTML, so it can be hosted anywhere with no server. That makes it attractive for small teams that want to share a browser with collaborators without maintaining a database or an API. It is also for React developers who want to embed a genome view directly into their own web applications, since it ships as embeddable React components. The project is not a lightweight widget; it is a full platform with multiple view types and track types, so the intended user is someone who needs more than a simple sequence viewer.

## How the Architecture Fits Together

The stack is React, TypeScript, and @jbrowse/mobx-state-tree. The README points to agent-docs/ARCHITECTURE.md for the rendering pipeline and core architecture, but that file is not included in the material, so the exact data flow is not fully visible. What is clear is that the state management relies on mobx-state-tree, which means the application state is a tree of models that can be observed and mutated in a structured way. This is a deliberate choice for a complex application with multiple views and tracks, because it gives a single source of truth for the browser's configuration and runtime state. The rendering is React-based, which allows the views to update reactively when the state tree changes. The browser is pluggable, meaning track types and views are added as modules. The README lists linear, circular, dotplot, synteny, and spreadsheet views, and track types for alignments (BAM/CRAM), variants and structural variants, quantitative/coverage, and more. This modularity is likely why the project can support such a wide range of use cases, but it also means that understanding the internals requires reading the architecture document, which is not reproduced here.

## Getting It Running: Three Deployment Paths

There are three ways to run JBrowse 2, and the README gives a link for each. The desktop app is available as downloads for Mac, Windows, and Linux from jbrowse.org/jb2/download. The web app has a quickstart guide at jbrowse.org/jb2/docs/quickstart_web. For React developers, there is a tutorial on embedding a Linear Genome View at jbrowse.org/jb2/docs/tutorials/embed_linear_genome_view/. The README does not include any actual commands, so the exact installation steps are not in the material. However, the static-site compatibility implies that the web app is built into a set of static files that you can copy to any host. That is a significant practical advantage: you do not need to configure a server, handle CORS, or manage a database. The desktop app likely packages the same code into an Electron-like shell, but the README does not confirm that. If you want to embed it, you will need to install the React components via npm, but the package name is not given in the README, so you should consult the tutorial for the exact import paths.

## View Types and Track Types: What You Get

The README lists five view types: linear, circular, dotplot, synteny, and spreadsheet. The linear view is the classic genome browser layout, showing a contiguous sequence with tracks stacked vertically. The circular view is useful for comparing features across a whole genome or for displaying structural rearrangements. Dotplot and synteny views are specifically designed for comparing two or more genomes, which is a core use case for JBrowse 2 according to the 2023 publication title. The spreadsheet view is unusual for a genome browser; it likely displays tabular data such as variant annotations. Track types include alignments (BAM/CRAM), variants and structural variants, and quantitative/coverage. This means you can load standard bioinformatics file formats directly. The README does not specify which file formats are supported for variants, but BAM and CRAM are explicitly named. The feature list at jbrowse.org/jb2/features/ is the place to check for the full set, but it is not included in the material, so you should verify that your specific data types are covered before adopting.

## Where It Falls Short: Serverless Does Not Mean Zero Overhead

The biggest limitation is that being static-site compatible does not mean it is lightweight. The stack is React, TypeScript, and mobx-state-tree, which are all client-side frameworks that require a substantial JavaScript bundle. For a single-track viewer, this is overkill. The README mentions that some tutorials are 'upcoming in the v5.0.0 release', which suggests that documentation is still catching up with features. That is a signal that the project is evolving quickly, and you may find gaps in the docs for newer track types or views. Another limitation is that the web app is pure client-side, which means all data must be accessible from the browser. If your data is behind authentication or requires server-side filtering, you will need to set up a separate service to serve the files. The README does not mention any server-side components, so you cannot rely on JBrowse 2 to handle user permissions or data privacy. For sensitive genomic data, this is a real concern, and you should plan to put a proxy or access control layer in front of the static files.

## Comparing to a Traditional Genome Browser

The most common alternative is the original JBrowse (now called JBrowse 1) or other server-based browsers like IGV or Ensembl. The key difference is architectural: JBrowse 2 is designed to run entirely in the client, whereas JBrowse 1 also had a server component for indexing and serving data. According to the README, JBrowse 2 is a 'modern React-based genome browser' that is 'pluggable' and supports multiple views, which is a shift from the single linear view of earlier tools. Another alternative is IGV, which is a desktop application that runs locally and loads files from disk or remote URLs. IGV is faster for interactive exploration of large files because it does not need to transfer all data to the browser, but it is not embeddable in a web page. JBrowse 2's approach is to push all data to the client, which works well for small to medium datasets but can become slow for very large alignments. The synteny and dotplot views are a differentiator; most traditional browsers do not offer those views out of the box. If you only need a linear view, a simpler tool might suffice, but if you need comparative genomics, JBrowse 2 is one of the few open-source options.

## Maintenance and Upgrade Considerations

The repository is under active development, with recent releases v4.3.0 on 2026-05-21, v4.2.1 on 2026-04-27, and v4.2.0 on 2026-04-16. That is a release roughly every month, which means you should expect frequent updates and potential breaking changes, especially since the project is moving toward v5.0.0. The README mentions that some tutorials are 'upcoming in the v5.0.0 release', indicating that the next major version will bring new features and likely changes to configuration schemas. The license is Apache-2.0, which is permissive and allows you to modify and redistribute the code, but you must retain the license notice. There is no mention of a migration guide in the README, so upgrading between major versions may require manual effort. The project is not archived, and the last push is the same day as the v4.3.0 release, so it is actively maintained. However, the documentation is split across multiple sites (jbrowse.org, jbrowse.org/jb2/docs, and a staging site), which can make it confusing to find the current version of a tutorial. Before upgrading, check the release notes for each version to see if any config keys have changed, since the README does not list them.

## Conclusion

Adopt JBrowse 2 if you need a client-side genome browser that can be hosted as static files and embedded into React applications, especially for visualizing synteny or structural variants. Do not adopt it if you require server-side rendering, complex user authentication, or a lightweight viewer for a single track, as the React and mobx-state-tree stack carries overhead. Before committing, verify that the track types you need (BAM, CRAM, VCF, coverage) are covered in the feature list, and test the web quickstart with your own data on a static host, because the documentation warns that some tutorials are still upcoming in v5.0.0.

## FAQ

### What are the JBrowse 2 deployment options?

Three. The web app is static-site compatible, meaning pure client-side JavaScript, CSS and HTML that can be hosted anywhere with no server. There is also a desktop app for Mac, Windows and Linux, and a set of embeddable React components.

### What data can JBrowse 2 display?

It offers linear, circular, dotplot, synteny and spreadsheet views, with track types for alignments in BAM and CRAM, for variants and structural variants, and for quantitative or coverage data. A grammar of graphics plots any file's fields from configuration rather than from bespoke code.

### Which package manager does jbrowse-components use?

pnpm, pinned to pnpm@11.18.0 in the root package.json, which is a private ES module package whose workspaces are the globs packages/*, products/* and plugins/*. The main build is a single recursive pnpm -r build.

### Is there developer documentation for JBrowse 2?

Yes. The documentation home carries a user guide, a config guide, a developer guide and a CLI reference, with tutorials grouped by topic such as synteny, structural variants, methylation and RNA-seq. For architecture, CONTRIBUTING.md covers setup and agent-docs/ARCHITECTURE.md covers the rendering pipeline.

### How current is the latest JBrowse 2 release?

The newest tag is v4.3.0, published on 2026-05-21, after v4.2.1 on 2026-04-27 and v4.2.0 on 2026-04-16. The repository itself was last pushed on 2026-09-30 and is not archived, so the default branch is ahead of every tag.

## Sources

- [Official documentation](https://jbrowse.org/jb2)
- [Official README](https://github.com/GMOD/jbrowse-components#readme)
- [Project repository](https://github.com/GMOD/jbrowse-components)
- [Release notes](https://github.com/GMOD/jbrowse-components/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/gmod-jbrowse-components
