Skip to content
CAI
Software that uses CAICheck a score

pqina/filepond

49.3

Weak · 1 October 2026

10.7k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

FilePond is a JavaScript file upload library that provides a comprehensive, component-based interface for handling file selection, drag-and-drop, and server-side uploads. It features a robust internal architecture with centralized state management, a plugin system for extensibility, and support for multiple layout modes and internationalization. The system includes built-in utilities for file processing, accessibility, and performance optimization, packaged with TypeScript definitions and a full test suite.

Features

Add FilePond CSS stylesheets

The project now includes the complete set of CSS styles for the FilePond file upload component. This adds styling for the root container, file items, progress indicators, drop zones, and various UI states (such as drag-and-drop, processing, and errors), along with layout modifiers for integrated, compact, and circle panel layouts.

src/css · high confidence

Expanded language support with new locale files

The application now supports a significantly wider range of languages, including Amharic, Azerbaijani, Catalan, Czech, Welsh, Danish, German, Greek, Hebrew, Hungarian, Indonesian, Italian, Japanese, Khmer, Korean, Central Kurdish, and Finnish. These new locale files provide translated UI labels for file upload interactions, such as drag-and-drop prompts, error messages, and button actions, allowing users to interact with the file picker in their native language.

locale · high confidence

Initial TypeScript type definitions for FilePond

This release introduces the first official TypeScript definitions for FilePond, providing a comprehensive \index.d.ts\ file that exposes core types such as \FilePondFile\, \FileStatus\, \FileOrigin\, and server configuration interfaces (\ServerUrl\, \ProcessServerConfigFunction\). It also includes a \tsconfig.json\ to support type checking and validation via dtslint, enabling TypeScript users to get full autocomplete and type safety when integrating FilePond into their projects.

types · high confidence

Initial implementation of core file upload utilities and state management

The \src/js/app/utils\ directory has been populated with the foundational utilities required for the file upload component. This includes the creation of file items (\createItem\), file loaders (\createFileLoader\), and processors (\createFileProcessor\) that handle local, remote, and server-side file interactions. The diff introduces a robust drag-and-drop system (\createHopper\, \dnd\), a global paste listener (\createPaster\), and a perceived performance updater (\createPerceivedPerformanceUpdater\) to smooth out upload progress visuals. Additionally, it establishes the internal state machine via a set of enums (e.g., \ItemStatus\, \ChunkStatus\) and provides configuration management through \createOptions\ and \createOptionAPI\.

src/js/app/utils · high confidence

Initial implementation of core utility functions

The \src/js/utils\ directory has been populated with a comprehensive suite of foundational utility functions to support the application's core logic. This includes helpers for DOM manipulation (\attr\, \createElement\, \text\), data type checking and conversion (\isArray\, \toBytes\, \toNaturalFileSize\), and file handling (\createBlob\, \getFileFromBlob\, \resetFileInput\). Additionally, it introduces networking capabilities via \sendRequest\ for HTTP operations, worker management through \createWorker\, and various formatting and string processing tools (\debounce\, \fromCamels\, \replaceInString\).

src/js/utils · high confidence

Initial implementation of frame layout and animation utilities

This change introduces a new set of utility modules in src/js/app/frame/utils to support the application's rendering and animation engine. It adds helpers for DOM manipulation (createElement, appendChild, event binding), layout calculation (getViewRect, updateRect, getChildCount), and animation logic (spring, tween, easing, and a createAnimator factory). These utilities provide the foundational capabilities for managing element positioning, handling SVG elements, and driving visual transitions within the frame.

src/js/app/frame/utils · high confidence

Initial implementation of the view mixin system

This change introduces the core mixin architecture for the application's view layer, located in src/js/app/frame/mixins. It adds four primary mixins: 'styles' for applying CSS transforms (translate, scale, rotate, opacity) and dimensions via cssText; 'animations' for managing property interpolation and animator lifecycles; 'listeners' for handling event registration and removal on view elements; and 'apis' for exposing property getters and setters to the external API. A utility function 'addGetSet' is also included to facilitate the binding of properties to internal and external APIs.

src/js/app/frame/mixins · high confidence

Initial public release of FilePond v4.32.12

This commit introduces the initial public release of the FilePond file upload library (version 4.32.12). It establishes the core build infrastructure using Rollup and Babel, adds a demo page with polyfill support for older browsers, and includes the full source code, TypeScript declarations, and a comprehensive changelog documenting the library's history and features.

(repo-wide) · high confidence

Initial release of FilePond core library

This change introduces the initial version of the FilePond JavaScript library, establishing the core architecture for file upload handling. It adds the main entry point (\src/js/index.js\) which exposes public APIs for creating, destroying, and finding file upload instances, along with plugin registration and option management. The diff includes the foundational modules for app creation (\createApp\, \createAppAtElement\, \createAppObject\), a plugin system (\createAppPlugin\) that allows extending functionality, and a filter mechanism (\filter.js\) for modifying behavior. It also includes utility functions for file handling, attribute mapping, and browser feature detection to ensure compatibility.

src/js · high confidence

Initial release of FilePond view components

This change introduces the complete view layer for FilePond, adding new JavaScript modules for the assistant (accessibility notifications), browser (file input handling), data (hidden field management), drip (drag-and-drop visual feedback), drop label, file item (with action buttons and status), file wrapper, item (drag-and-drop reordering), list (grid layout and animations), list scroller, panel (resizable container), progress indicator, and root container. These components collectively enable file selection, drag-and-drop, reordering, progress tracking, and accessibility support.

src/js/app/view · high confidence

Initial release of the FilePond application core

This change introduces the core application logic for FilePond, establishing the foundational architecture for file handling. It includes the central state management system (actions, queries, and options) that governs file loading, processing, and removal, as well as the main entry point that initializes the store and manages the rendering loop. The update also defines the default configuration options, such as feature toggles for drag-and-drop and reordering, server API settings, and user-facing labels, providing the base behavior for the file upload component.

src/js/app · high confidence

Behavioural changes

New frame rendering and state management architecture

The application introduces a new internal frame system in src/js/app/frame that manages the render loop, state, and view hierarchy. The createPainter module handles the animation loop, switching to setTimeout when the browser tab is inactive to improve performance and reduce resource usage. The createStore module provides a centralized state management system with action queues and dispatch handling. The createView module establishes a component-based view hierarchy with read/write cycles for DOM updates. The createRoute module provides action routing capabilities. This new architecture replaces the previous rendering approach with a more structured, performant system that handles visibility changes and optimizes rendering cycles.

src/js/app/frame · high confidence

Fixes

FilePond 4.32.12 release

Updated FilePond to version 4.32.12, including the minified and ESM distribution files and updated CSS. This release incorporates numerous bug fixes and improvements such as handling of circular drop areas, revert handler calls, paste errors, file processing states, and rendering issues across various layouts and browsers.

dist · high confidence

Test coverage

Initial test suite for FilePond core functionality

Added a comprehensive set of unit tests covering core FilePond behaviors, including instance creation, file addition (blobs, base64, files), file removal (including server-side revert logic for chunked uploads), callback execution, and server configuration. The suite also includes specific tests for parsing filenames from Content-Disposition headers and mocks for the JSDOM environment to ensure reliable test execution.

src/js/\\tests\\_ · high confidence_

Dependencies

Initial release of FilePond v4.32.12 with build tooling and TypeScript support

This change introduces the initial package configuration for FilePond version 4.32.12, establishing the project's dependency tree and build infrastructure. The package.json defines the main entry points for the library (dist/filepond.js and dist/filepond.esm.js) and includes TypeScript declaration files (types/index.d.ts) to support type checking. The build process is configured using Rollup for script bundling and PostCSS with Autoprefixer and cssnano for style processing. Development dependencies include Babel for transpilation, Jest for testing, and Prettier for code formatting, ensuring a standardized development environment for the file upload component.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 51 → 49 (-1.6)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 48 → 48 (+0.0)
  • Architecture 100 → 84 (-16.0)
  • Maturity 57 → 57 (-0.0)
  • Readiness 44 → 45 (+1.1)
  • Security 67 → 52 (-14.7)

Resolved (3)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no installation or build instructions (README.md)
  • Off-boarding risk: anonymized user #1

New (5)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile resolved no direct production dependency)
  • End-of-life runtime: Node.js 10
  • Malicious package: MAL-2023-462 (package-lock.json)
  • Off-boarding risk: anonymized user #1
  • Projects may be oversized for their cohesion

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

pqina/filepond was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 1304c6d6a4687c4fecf9029710eec933277ce4dd — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.