JBrowse 2 · Linear Genome View examples

Web worker

Move parsing and rendering off the main thread.

Under webpack, import @jbrowse/react-linear-genome-view2/esm/makeWorkerInstance instead of the ?worker entry, and set output.publicPath: 'auto' so the worker finds its own URL. A module worker, which Vite builds here, cannot load a UMD plugin; a classic worker can.

View source — 24 lines
import {
  JBrowseLinearGenomeView,
  useCreateViewState,
} from '@jbrowse/react-linear-genome-view2'
import RpcWorker from '@jbrowse/react-linear-genome-view2/esm/rpcWorker?worker'

export default function WebWorker() {
  const state = useCreateViewState({
    assembly: {
      name: 'volvox',
      uri: 'https://jbrowse.org/genomes/volvox/volvox.2bit',
    },
    tracks: [
      {
        trackId: 'volvox_gff3',
        name: 'Volvox genes',
        uri: 'https://jbrowse.org/code/jb2/main/test_data/volvox/volvox.sort.gff3.gz',
      },
    ],
    view: { loc: 'ctgA:1105..1221', tracks: ['volvox_gff3'] },
    makeWorkerInstance: () => new RpcWorker(),
  })
  return state ? <JBrowseLinearGenomeView viewState={state} /> : null
}