Flag of Ukraine   We stand with the brave people of Ukraine. Stop the war. Find out how you can help.


Uppy provides React components for the included UI plugins.


All React components are provided through the @uppy/react package.

Install from NPM:

npm install @uppy/react


Make sure to also include the necessary CSS files for each Uppy React component you are using. Follow links for individual components docs below for details on that.


The components can be used with either React or API-compatible alternatives such as Preact.

Instead of adding a UI plugin to an Uppy instance with .use(), the Uppy instance can be passed into components as an uppy prop.
All other props are passed as options to the plugin.

import React from 'react'
import Uppy from '@uppy/core'
import Tus from '@uppy/tus'
import { DragDrop } from '@uppy/react'

const uppy = new Uppy({
  meta: { type: 'avatar' },
  restrictions: { maxNumberOfFiles: 1 },
  autoProceed: true,

uppy.use(Tus, { endpoint: '/upload' })

uppy.on('complete', (result) => {
  const url = result.successful[0].uploadURL
    type: 'SET_USER_AVATAR_URL',
    payload: { url },

const AvatarPicker = ({ currentAvatar }) => {
  return (
      <img src={currentAvatar} alt="Current Avatar" />
          strings: {
            // Text to show on the droppable area.
            // `%{browse}` is replaced with a link that opens the system file selection dialog.
            dropHereOr: 'Drop here or %{browse}',
            // Used as the label for the link that opens the system file selection dialog.
            browse: 'browse',

The following plugins are available as React component wrappers (you need to
install each package separately):