UploadKit
SDK@uploadkitdev/react

UploadDataStream

A Matrix/Warp-inspired data stream visualizer with falling characters that accelerate during upload.

Columns of hex characters rain down like the Matrix. While idle, streams are slow and dim. During upload, they accelerate and brighten proportional to progress. A center overlay shows filename, percentage, and real-time throughput (2.3 MB/s).

Design inspiration: The Matrix, Warp terminal, htop.

The rain animation uses CSS @keyframes — no Motion dependency required. Streams dim automatically when prefers-reduced-motion is set.

// DROP FILES

or click to browse

Matrix · Warp — data stream

Basic usage

import { UploadDataStream } from '@uploadkitdev/react';

export default function Page() {
  return (
    <UploadDataStream
      route="fileUploader"
      columns={24}
      onUploadComplete={(results) => {
        console.log('Stream complete:', results.length);
      }}
    />
  );
}

Props

PropTypeDefaultDescription
routestringRequired. Route name from your file router.
acceptstring[]Accepted MIME types.
maxSizenumberMaximum file size in bytes.
maxFilesnumberMaximum number of files.
metadataRecord<string, unknown>Metadata forwarded to the server.
columnsnumber20Number of character stream columns.
onUploadComplete(results: UploadResult[]) => voidCalled after all files upload.
onUploadError(error: Error) => voidCalled on failure.
classNamestringAdditional CSS class(es).

Theming

VariableDefaultPurpose
--uk-stream-color#00ff41Character and accent color
--uk-stream-bg#0a0a0aBackground

Throughput display

Real-time upload speed is calculated from a 2-second sliding window of byte samples and displayed as ↑ 2.3 MB/s.

Accessibility

  • Container accepts drag-drop and click
  • aria-live region for status announcements
  • Respects prefers-reduced-motion — streams stop animating

On this page