Skip to content
CAI
Software that uses CAICheck a score

jaredpalmer/formik

48.2

Weak · 28 September 2026

9.4k

lines of production code

TypeScript

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This release marks a significant architectural shift to a Turborepo monorepo structure, replacing the previous single-package setup and Jest-based testing with Playwright end-to-end tests. The core library undergoes a major refactor to a fully TypeScript-based implementation, introducing the \useFormik\ hook and \FormikContext\ while removing legacy HOCs and class components. Additionally, the release expands the public API with numerous new Formik examples, a \useSubmitButton\ hook for React Native, and a complete redesign of the documentation website.

Features

Add Formik examples and fixtures to the app

Added new pages to the application including a basic form with validation, a sign-in form with dynamic validation controls, and a home page linking to examples. These pages serve as fixtures and demonstrations for Formik usage, including handling form state, validation schemas, and error logging.

app/pages · high confidence

Add basic TypeScript example for Formik

A new basic TypeScript example has been added to the examples/basic-typescript directory. This includes a React application demonstrating how to use Formik with TypeScript, featuring a signup form with first name, last name, and email fields. The example includes all necessary configuration files (tsconfig.json, index.html, index.tsx) to run the demo.

examples/basic-typescript, examples/with-material-ui · high confidence

Add checkbox group example

Added a new example in the examples/checkboxes directory that demonstrates how to use Formik with a checkbox group. The example includes a README and an index.js file that shows how to handle both a single boolean checkbox and a group of checkboxes that bind to an array of values.

examples/checkboxes · high confidence

Add dependent fields example

A new example demonstrating how to set the value of one field based on the current values of other fields in Formik v2. The example includes a React component that uses \useFormikContext\ and \useEffect\ to update a dependent field (textC) when other fields (textA and textB) are touched and non-empty, illustrating dynamic form behavior.

examples/dependent-fields, examples/dependent-fields-async-api-request, examples/radio-group · high confidence

Add field-arrays example demonstrating array field management

A new example has been added to the repository that demonstrates how to work with array fields in Formik. The example includes a React component that allows users to dynamically add and remove friends from a list, utilizing the FieldArray component to manage an array of form fields. This provides a practical reference for implementing dynamic list forms.

examples/field-arrays · high confidence

Add instant feedback example with accessible live regions

A new 'instant-feedback' example has been added to the examples directory. It demonstrates how to provide immediate, inline validation feedback while the user is typing, rather than waiting for form submission. The implementation uses a live region (aria-live='polite') to announce validation status to screen readers, ensuring accessibility. The example includes the necessary React components, styling, and README documentation.

examples/instant-feedback · high confidence

Add new Formik example projects

Added new example projects for async submission, basic usage, and field-level validation, each containing an index.js component and a README.md file to demonstrate specific Formik patterns such as async form submission and field-level validation with error messages.

examples/basic · high confidence

Added Next.js-based test application

A new Next.js application has been added to the app directory to serve as an integration test environment. This includes standard project configuration files (tsconfig.json, next-env.d.ts), global styles, a .gitignore, and a README, providing a functional base for testing Formik integration.

app · medium confidence

Added TypeScript type declarations and site configuration for the website

Added TypeScript type declarations for various remark and rehype plugins, as well as for external libraries like classnames, docsearch.js, and prismjs. Additionally, introduced a new site configuration file containing metadata about the project, including edit URLs, copyright information, and Algolia search settings.

website/src · high confidence

Added TypeScript type declarations for external dependencies

TypeScript type declarations have been added for the 'tiny-warning', 'react-lifecycles-compat', 'deepmerge', and 'scheduler' packages, as well as a global '\_\DEV\\_' variable. This improves type-checking and IntelliSense support for these dependencies within the Formik package.

packages/formik/types · high confidence

Added benchmarking scripts and git tag management utilities

A new benchmarking script (scripts/benchmark.tsx) was added to compare the performance of form libraries (Formik vs. React Hook Form) using the Benchmark.js library. Additionally, shell scripts (scripts/btag.sh and scripts/retag.sh) were introduced to automate git tag creation and deletion workflows.

scripts · high confidence

Added new Formik examples for validation, wizards, and HOCs

Added a suite of new example files in the examples directory, including AsyncValidation, CombinedValidations, CustomInputs, DebouncedAutoSave, ErrorMessage, FastField, MultistepWizard, RoutedMultistepWizard, SchemaValidation, SyncValidation, ValidateFieldWithSchema, and withFormik. These examples demonstrate various Formik patterns such as async and sync validation, Yup schema usage, multi-step wizards with and without routing, debounced auto-save, and the withFormik HOC.

examples · high confidence

Added useSubmitButton hook to formik-native

The formik-native package now exports a new \useSubmitButton\ hook. This hook leverages Formik's context to provide an \onPress\ handler that triggers form submission, simplifying the creation of submit buttons in React Native applications.

packages/formik-native/src · high confidence

Initial release of Formik v2 with React 18+ and TypeScript support

The Formik library has been refactored from a JavaScript codebase to a fully TypeScript-based implementation, introducing a new \FormikContext\ for state management and replacing the previous \Formik\ class component with a \useFormik\ hook. This update brings improved type safety for all components (\Field\, \FastField\, \FieldArray\, \ErrorMessage\) and handlers, while also upgrading the internal implementation to use React hooks and modern React patterns.

packages/formik/src · high confidence

Redesigned website components and layout

The website's UI has been completely rebuilt with new components including a responsive navigation bar, a structured footer with resource links and newsletter signup, and a documentation layout featuring a sidebar, table of contents, and page footers with previous/next navigation. The change also introduces a reaction-based feedback form at the bottom of documentation pages, a syntax-highlighted code block component with copy functionality, and a search modal powered by Algolia.

website/src/components · high confidence

Architecture

Repository migration to monorepo with Turborepo and Playwright

The project has been restructured into a monorepo using Turborepo for task orchestration, replacing the previous single-package setup. This includes adding a \turbo.json\ configuration and migrating from a custom webpack build system to a shared TypeScript configuration (\tsconfig.base.json\). Additionally, end-to-end testing has been upgraded from Jest to Playwright, evidenced by the new \playwright.config.ts\ and the removal of the \jest.config.js\ (implied by the shift). The repository also introduces a \.all-contributorsrc\ file to automatically track and display contributors in the README, and updates the license from MIT to Apache 2.0.

(repo-wide) · high confidence

Behavioural changes

Introduce new blog page templates for listing and individual posts

The blog section now uses dedicated Next.js page templates for the blog index and individual post views. The index page renders a list of posts with titles, dates, and previews, while the slug page displays the full post content using MDX. This change replaces the previous implementation (which relied on removed helpers) with explicit page components that fetch and render blog content directly from the file system.

website/src/pages/blog · high confidence

Redesign of the Formik website homepage and user showcase

The website's visual design and structure have been updated. The homepage now features a modernized layout with updated typography, styling, and component usage (e.g., Inter font, Tailwind CSS classes) to improve the user experience. Additionally, a dedicated 'Users' page has been added to showcase companies and projects using Formik, providing a new destination for users to see who trusts the library in production.

website/src/pages · high confidence

Removal of legacy Formik HOC and helper utilities

The legacy Formik higher-order component implementation and associated utility functions (such as \yupToFormErrors\, \touchAllFields\, and \validateFormData\) have been removed from the public API. This change eliminates the \recompose\-based HOC pattern in favor of the newer hooks-based architecture, requiring users to migrate from the older class/HOC-based form handling to the modern \useField\ and \useFormikContext\ hooks.

src · high confidence

Removed example Form component

The example/Form.tsx file, which contained a Formik-based form component, has been deleted from the codebase.

example · high confidence

Website infrastructure and tooling configuration

The website directory now includes configuration files for ESLint, Prettier, PostCSS, and TypeScript, alongside a new Next.js configuration that enables MDX support and route rewrites. These changes establish the development environment and build settings for the site, including Tailwind CSS integration and static file handling.

website · high confidence

Website navigation and documentation structure updated for v2.1.4

The site's navigation menu and documentation routing have been updated to reflect the v2.1.4 release, adding new API reference entries for hooks like useField, useFormik, and useFormikContext, as well as new example pages such as dependent-fields-async-api-request and more-examples. A new sitemap generation script was added to the build process, and a GitHub API client was introduced to fetch the latest release tag, supporting a shift toward GitHub-backed documentation.

website/scripts, website/src/lib/github, website/src/manifests · medium confidence

Fixes

Removed TypeScript declarations for the decomposed recompose library

The TypeScript declaration file for the 'recompose' library has been removed, indicating that the project no longer depends on or exposes type definitions for this library. This aligns with the removal of 'recompose' as a dependency, simplifying the type system by eliminating unused or obsolete declarations.

src/types · high confidence

Test coverage

Added comprehensive test coverage for Formik components and utilities; Added end-to-end tests for form validation and error handling; Added initial test suite for formik-native.

Dependencies

Update project dependencies and tooling

The project has been updated to use modern tooling and updated dependencies. The root \package.json\ now uses \turbo\ for task running and \changesets\ for versioning, replacing the previous \jest\ and \ts-jest\ setup. The \formik\ package has been updated to version 2.4.9, with \react\ and \react-dom\ peer dependencies set to \>=16.8.0. The \formik-native\ package now depends on \formik\ 2.4.9. The \website\ has been upgraded to use Next.js 13.4.4 and React 18.2.0. Example projects have been updated to use \formik\ latest, with some examples using React 16.12.0 and others using React 17.0.0 or 18.2.0. The \yarn.lock\ file has been regenerated to reflect these changes.

(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 36 → 48 (+12.7)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 85 → 82 (-2.9)
  • Architecture 99 (new)
  • Maturity 57 → 60 (+3.4)
  • Readiness 17 → 39 (+21.5)
  • Security 42 → 59 (+16.2)
  • Accessibility 45 (new)
  • Performance 85 (new)

Resolved (78)

  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Dimension evaluation failed
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • High CVE: [GHSA redacted] (yarn.lock)
  • …and 58 more

New (240)

  • Change coupling: index.tsx ↔ users.tsx (website/src/pages/index.tsx)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical CVE: [GHSA redacted] (yarn.lock)
  • Critical vulnerability: [GHSA redacted] (yarn.lock)
  • Documentation: no architecture or design documentation (docs/api/connect.md)
  • Documentation: no architecture or design documentation (docs/api/errormessage.md)
  • Documentation: no project overview (docs/tutorial.md)
  • …and 220 more

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

Survey your own repository

jaredpalmer/formik 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 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 91475adbf33579561e580eceea0c031f4ec2e992 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-24a00d372a4b.