mrkeyoor.com_
Thu 29 Oct 15:37 UTC
Dev Toolsevaluationupdated 29 Oct 2026

date-fns review

date-fns is a JavaScript date utility library whose documented API uses separate functions with native Date values. This review examines preparation of its source repository, rather than measuring the cost or correctness of the published application package.

Verdict

Our date-fns repository installation succeeded, but build and tests were skipped. The result supports a narrow conclusion: dependencies were installed for the measured checkout. Evaluate the published package for application use; prepare the repository when you need source work, then locate and run the relevant checks. Neither calendar correctness nor package footprint was established here.

We ran it

Lab card: what happened when we ran date-fnsScreenshot of date-fns (date-fns.org)
Install✓ · 17s751 packages · 545 MB
Buildn/ano build script
Testsn/ano test script
Repo2070 files~114,404 lines of source · 11.3 MB · 6 CI workflows

Answers from our run

Does date-fns build from source?

Dependencies installed in 17 seconds (751 packages), and the project has no separate build step. We cloned commit df2af04 into a clean Debian container with 3 CPUs and no project-specific setup.

Does date-fns have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Who should not use date-fns?

Teams seeking evidence here that a source build or test suite passed: both steps were skipped.

What are the alternatives to date-fns?

Day.js, Luxon. Our date-fns repository installation succeeded, but build and tests were skipped.

SetupN/AInstallation succeeded in the recorded sandbox. We did not establish whether that environment matched upstream's supported contributor setup, and neither build nor tests ran. The successful dependency step alone does not support a numerical setup rating.
DocsN/AThe supplied README and v4.4.0 release extracts explain the package entry point and CDN deprecation. Complete function documentation, contributor instructions, and the workspace validation path were not assessed, so a documentation score would overstate the evidence.
CommunityN/AThe supplied metadata records a recent push, and the packet includes a dated TypeScript issue report. These are activity signals. They do not establish support responsiveness, resolution speed, or maintainer capacity, so community quality remains unassessed.
MaturityN/AThe packet identifies release v4.4.0, but this run completed neither a source build nor tests. It did not exercise calendar behavior, compiler compatibility, or runtime-zone differences. Release existence and installation success do not justify a numerical maturity score.

Who it’s for

JavaScript and TypeScript developers separating package adoption from source contribution.
Teams whose application already passes native Date values between components.
Contributors prepared to locate and verify workspace checks after installing repository dependencies.

Who it’s NOT for

Teams seeking evidence here that a source build or test suite passed: both steps were skipped.
Developers who require a chainable date-object API rather than separate functions over native dates.
CDN users planning to keep relying on the main package's scripts without reviewing the v4.4.0 deprecation.

Setup reality

Our sandbox installed date-fns commit df2af04 in 17 seconds, recording 751 dependencies and 545 MB on disk. Build and tests were skipped because the selected project exposed no script or target for either. These results describe preparation of the source repository. They do not measure installing the published package in an application or establish that date operations work correctly.

The scan identified pnpm and monorepo workspaces. The recorded sandbox configuration was 3 CPUs, 8 GB of RAM, and image label lab-node:22. The label does not establish actual runtime or operating-system versions. Installation succeeded in that sandbox; whether it matched upstream's supported contributor environment was not established.

The supplied README documents installation through npm and an example importing format and compareAsc. That example was not executed in our run, and the README comes from main rather than a v4.4.0 snapshot. For contribution, locate the relevant workspace and its checks before changing source. For application adoption, evaluate the released package with your own compiler settings, date inputs, and runtime zones. CDN users should also review the v4.4.0 move toward @date-fns/cdn.

The 545 MB recorded in our date-fns run belongs to a developer checkout. It is not a measurement of what an application adds by installing the published package. That distinction determines how much this repository review can tell you.

What happened when we ran it

Our sandbox installed date-fns commit df2af04 in 17 seconds, recording 751 dependencies and 545 MB on disk. The run took place on October 22, 2026, with a recorded configuration of 3 CPUs, 8 GB of RAM, and image label lab-node:22. Actual runtime and operating-system versions are not established by that label.

The selected project exposed no build script or target, so build was skipped. It also exposed no test script or target, so tests were skipped. These are limits of the selected harness path; they do not establish that the repository has no build process or tests.

The scan identified pnpm and monorepo workspaces. The checkout contained 2,070 files, approximately 114,404 source lines, and occupied 11.3 MB. It found 6 CI workflow files, no Dockerfile, and no tests directory. Tests may live elsewhere in a repository, so that directory observation cannot establish their absence.

Installation succeeded in the recorded environment. Whether that environment matched upstream's supported contributor setup was not established. We measured neither a published-package installation nor a browser bundle, and we exercised no application-level date behavior.

Choose the package or contributor path first

The supplied date-fns README documents npm installation for application use. Its example imports format and compareAsc, formats a native Date value, and sorts an array of dates. This is a documentation example, not code executed in our sandbox.

The README says date-fns uses native dates and does not extend core objects. That API style is worth evaluating when an application already exchanges Date values and needs individual date operations. The supplied README is from main, however, so it is not proof of every API detail in v4.4.0 or in the measured checkout.

For source contribution, the next step is to locate the workspace responsible for your change and verify its documented checks. The dependency installation does not supply that missing build and test evidence.

The existing date-fns library guide addresses package use. This review focuses on what the source-preparation result establishes and what remains to check.

Compare the data model before comparing setup numbers

Day.js documents a largely Moment.js-compatible API. Its README also describes it as immutable and chainable. It is a candidate when a team wants chained date operations and familiar Moment.js patterns.

Luxon provides DateTime, Duration, and Interval types. Its README documents native time-zone and Intl support. It is a candidate when an application should carry explicit date-time or interval objects.

Those are documented API distinctions, not results from comparative testing. We did not install either alternative, and the date-fns repository timing provides no basis for ranking their setup cost, performance, or correctness.

v4.4.0 changes the CDN distribution path

The v4.4.0 release notes deprecate the main package's CDN scripts and direct users to @date-fns/cdn. They also say CDN source maps were removed from the main package and remain available in the separate package. The release was published on May 29, 2026.

If your application loads browser scripts directly, inspect the script URLs and package you deploy before upgrading. The release notes establish this distribution change; our sandbox did not test CDN loading.

Check your compiler settings separately

Issue #4411 reports a problem forwarding possibly undefined values into date-fns options with TypeScript's exactOptionalPropertyTypes enabled. The report identifies date-fns 4.4.0 and includes a wrapper that forwards an optional locale to format. It was opened on October 27, 2026. We did not reproduce it.

Treat it as a specific evaluation case if your application uses that compiler flag. It does not establish that all TypeScript integrations fail, and an issue report alone does not verify the proposed fix or workaround.

For application adoption, exercise the operations you need with your compiler settings and representative date inputs, including relevant daylight-saving transitions. For contribution, verify the workspace build and tests. Those checks answer the questions that a successful repository dependency installation leaves open.

Alternatives

ProjectWhat it isPick it when
Day.jsA JavaScript date library whose README describes an immutable, chainable API with largely Moment.js-compatible naming.Choose it for evaluation when your team prefers chained date operations and familiar Moment.js API patterns. This review did not install or benchmark it.
LuxonA JavaScript date library with DateTime, Duration, and Interval types and documented native time-zone support.Choose it for evaluation when explicit date-time and interval objects suit the application. This review did not test its behavior or compare its performance.

What people are saying

  1. [velocity-scout] date-fns/date-fns

Sources

  1. date-fns README from main
  2. date-fns v4.4.0 release notes
  3. Day.js README
  4. Luxon README
  5. date-fns issue #4411

More dev tools reviews

okhttp · the-craft-of-selfteaching · skills · compress · dsh-dafeiyu · awesome-ai-engineering · the whole board →