jaredpalmer/formik
48.2
Weak · 28 September 2026
9.4k
lines of production code
TypeScript
with JavaScript
4
measurements over time
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.