Skip to content
Agents tracked: 440 Downloads (7d): 202M down 19.5% GitHub stars: 10.4M Releases (7d): 607 Agent status: 3 with issuesSince last limit reset: Claude 28d · Codex 0d Updated Oct 21, 2026

Date range picker in React Day Picker

Range mode selects a start and an end date, for bookings, reports or any period. The value is an object with from and to dates.

All React Day Picker examples React Day Picker: usage and stats

Date range picker in React Day Picker: screenshot of the example below running
The code below, running in Chromium on our server (Oct 12, 2026). Press Run to see it live and change it.

How it works

  1. Turn on range mode. mode="range" makes the calendar select a span of days. The state starts with a week of the current month as { from, to }. [1]
  2. Control the range. selected and onSelect work the same way as in single mode, only the value is a range object instead of one date. [1]
  3. Read from and to. A range has a from and a to date, and either can be empty while the user is picking. The side panel shows both and computes the nights as the difference divided by one day in milliseconds. [2]

Run and edit it

It runs in your browser, in a sandboxed frame that cannot see this site; the packages load from esm.sh only after you press Run.

import { useState } from "react";
import { DayPicker } from "react-day-picker";

// Smaller cells and an indigo accent, set through DayPicker's CSS variables
const vars = { "--rdp-accent-color": "#4f46e5", "--rdp-accent-background-color": "#e0e7ff", "--rdp-day-width": "32px", "--rdp-day-height": "32px", "--rdp-day_button-width": "30px", "--rdp-day_button-height": "30px", "--rdp-nav-height": "2.25rem" };
const page = { minHeight: "100vh", display: "flex", alignItems: "center", justifyContent: "center", gap: 20, background: "#111", color: "#e5e7eb", font: "14px system-ui, sans-serif" };
const card = { background: "#fff", color: "#111", borderRadius: 12, padding: "6px 14px" };

const day = (n) => { const t = new Date(); return new Date(t.getFullYear(), t.getMonth(), n); };

export default function App() {
  // A range is an object with `from` and `to` dates
  const [range, setRange] = useState({ from: day(8), to: day(14) });
  const nights = range?.from && range?.to ? Math.round((range.to - range.from) / 86400000) : 0;
  return (
    <div style={page}>
      <div style={card}>
        <DayPicker mode="range" selected={range} onSelect={setRange} style={vars} />
      </div>
      <div style={{ width: 180, lineHeight: 1.7 }}>
        <b>Your stay</b>
        <div>Check-in: {range?.from ? range.from.toDateString() : "pick a day"}</div>
        <div>Check-out: {range?.to ? range.to.toDateString() : "pick a day"}</div>
        <div style={{ color: "#a5b4fc", marginTop: 6 }}>{nights} nights</div>
      </div>
    </div>
  );
}
Ctrl/⌘ + Enter runs

Free for signed-in members, with a daily limit. Describe the change in plain words; the new code runs only in your browser.

Click a start day and then an end day; the check-in, check-out and nights update on the right. Code written by AgentGid [1].

Checked Oct 12, 2026: it starts without errors in Chromium with react-day-picker 10.0.2, react 19.3.0, react-dom 19.3.0. Needs WebGL.

More React Day Picker examples

Single date picker in React Day Picker Selecting multiple dates in React Day Picker Selecting a whole week in React Day Picker Accessible date picker with React Day Picker

Sources

  1. Docs: Getting Started
  2. Docs: Custom Selections

Explanations written by AgentGid from the official docs; the numbers in brackets point here. The code marked "written by AgentGid" is ours and free to copy.

Building something with React Day Picker? Ask AgentGid →