Skip to content
Native Animation
Base Progress animation previewBase Progress animation preview

This preview uses fictional demo content. See the props below for the customization options available in this component.

npx nativeanimation add base-progress

Base Progress

React Native Progress Component

A determinate or indeterminate progress bar with animated updates and configurable value, height, and theme.

Native Animation Base · Free · MIT

Add to your project

Copy the component and its assets into your app with the Native Animation CLI, or paste the agent prompt into Claude Code, Codex or Cursor once the MCP server is connected.

About this component

Related guides

A determinate or indeterminate progress bar with animated updates and configurable value, height, and theme.

How it works

  1. The track uses primary at 20% opacity and a full corner radius.
  2. Values clamp to 0–100 and animate with the 300/35 progress spring, mass 1.
  3. A small relative energy threshold lets the bar settle precisely in Reanimated 4.
  4. Indeterminate mode moves a 40% segment across the measured track in a 1.4 second in-out loop.

Install

npx nativeanimation add base-progress

The CLI also copies base-theme. Dependencies, if you copy by hand:

npx expo install react-native-reanimated react-native-worklets

Usage

import { BaseProgress } from './base-progress';

<BaseProgress value={uploadPercent} accessibilityLabel="File upload" />
<BaseProgress value={75} height={6} accessibilityLabel="Workspace setup" />
<BaseProgress indeterminate accessibilityLabel="Preparing export" />

The component measures its own width, so it works within cards, forms, and narrow containers. It applies no safe-area padding. Supply a label describing the task.

Wrap your app in BaseThemeProvider (from base-theme) to choose light/dark and an accent; without it, pieces use the light neutral theme. The theme prop overrides the provider. Load the font families declared in your theme once in the host app.

Props

PropTypeDefaultDescription
valuenumber0Progress from 0 to 100, clamped to that range.
indeterminatebooleanfalseShows a looping segment instead of a percentage.
heightnumber8Track height in pt.
accessibilityLabelstring—Accessible description of the task.
themeBaseThemeproviderOverrides the shared family theme.
styleStyleProp<ViewStyle>—Container style.
testIDstring—Stable test identifier.

Compatibility

Expo SDK 58 · React Native 0.88 · Reanimated 4.7 · react-native-worklets 0.13. Runs on iOS, Android and web, in Expo Go and development builds. Part of Native Animation Base, a free family that shares one theme.

Accessibility

Exposes a progressbar role with min, max, and current values. Indeterminate mode exposes a busy state instead of a fabricated percentage. Reduce Motion updates determinate progress immediately and holds the indeterminate segment still.

Source code

Loading public source…