npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

jewish-holidays

v2.0.1

Published

Jewish holidays

Readme

Jewish Holidays

An easy-to-use npm package for checking Jewish holidays and Shabbat.

To install the package, run one of the following commands:

npm i jewish-holidays

or with yarn

yarn add jewish-holidays

Usage

You can use the package in your JavaScript projects as shown below:

import { isYomTov, isShabbat } from 'jewish-holidays';

// Check if a date is Yom Tov
const date = new Date();
const isInChutzLaaretz = true; // Adjust as needed
console.log(isYomTov(date, isInChutzLaaretz)); // true or false

// Check if a date is Shabbat
console.log(isShabbat(date)); // true or false

Functions

getDateInfo

getDateInfo(date: Date | BasicJewishDate, isChutzLaaretz?: boolean, language?: Language) => DateInfo

Returns a full summary of the given date, aggregating every holiday/observance check in a single object.

  • date: A JavaScript Date object or a BasicJewishDate object.
  • isChutzLaaretz: (optional) A boolean indicating if the calculation should consider diaspora holidays.
  • language: (optional) 'en' or 'he' — the language to report names in. Defaults to 'en'. See Languages.

The returned DateInfo object contains the normalized jewishDate, the boolean flags isYomTov, isErevYomTov, isCholHaMoed, isShabbat, isErevShabbat, isRoshChodesh, isChanukah, isPurim, isTzom, and holidays — the name(s) of any matched observance (the specific Yom Tov name(s), the specific Purim name (Purim or Shushan Purim), the specific fast name (e.g. Tisha BeAv), plus a label for each of Chol HaMoed, Rosh Chodesh and Chanukah), or an empty array. Each observance is named only once, so 10 Tishri is ["Yom Kippur"] rather than a Yom Tov entry and a separate fast entry.

On a fast day it also carries tzom, a TzomInfo object naming the fast and saying how it was shifted off Shabbat, if at all — see getTzomInfo. The field is absent on every other day.

import { getDateInfo } from 'jewish-holidays';

const info = getDateInfo(new Date(2024, 9, 3)); // Rosh Hashanah
console.log(info.isYomTov); // true
console.log(info.holidays); // ["Rosh Hashanah", "Rosh Chodesh"]

const fast = getDateInfo(new Date(2029, 6, 22)); // 10 Av 5789
console.log(fast.tzom); // { name: "Tisha BeAv", shift: "postponed" }
console.log(fast.holidays); // ["Tisha BeAv"]

const hebrew = getDateInfo(new Date(2029, 6, 22), false, 'he');
console.log(hebrew.tzom); // { name: "תשעה באב", shift: "postponed" }
console.log(hebrew.holidays); // ["תשעה באב"]

getTodayInfo

getTodayInfo(isChutzLaaretz?: boolean, language?: Language) => DateInfo

A convenience wrapper that returns getDateInfo for today's date (new Date()).

  • isChutzLaaretz: (optional) A boolean indicating if the calculation should consider diaspora holidays.
  • language: (optional) 'en' or 'he'. Defaults to 'en'.

isYomTov

isYomTov(date: Date | BasicJewishDate, isChutzLaaretz: boolean) => boolean

Determines if the given date is a Yom Tov (Jewish holiday).

  • date: A JavaScript Date object or a BasicJewishDate object.
  • isChutzLaaretz: A boolean indicating if the calculation should consider diaspora holidays.

isShabbat

isShabbat(date: Date | BasicJewishDate) => boolean

Determines if the given date is Shabbat.

  • date: A JavaScript Date object or a BasicJewishDate object.

isErevShabbat

isErevShabbat(date: Date | BasicJewishDate) => boolean

Determines if the given date is Erev Shabbat (Friday).

  • date: A JavaScript Date object or a BasicJewishDate object.

isErevYomTov

isErevYomTov(date: Date | BasicJewishDate) => boolean

Determines if the given date is Erev Yom Tov (the day before a Jewish holiday).

  • date: A JavaScript Date object or a BasicJewishDate object.

isCholHaMoed

isCholHaMoed(date: Date | BasicJewishDate, isChutzLaaretz?: boolean) => boolean

Determines if the given date is Chol HaMoed (the intermediate days of Passover or Sukkot).

  • date: A JavaScript Date object or a BasicJewishDate object.
  • isChutzLaaretz: (optional) A boolean indicating if the calculation should consider diaspora holidays.

isRoshChodesh

isRoshChodesh(date: Date | BasicJewishDate) => boolean

Determines if the given date is Rosh Chodesh (the beginning of a new Jewish month).

  • date: A JavaScript Date object or a BasicJewishDate object.

isChanukah

isChanukah(date: Date | BasicJewishDate) => boolean

Determines if the given date is during Chanukah.

  • date: A JavaScript Date object or a BasicJewishDate object.

isPurim

isPurim(date: Date | BasicJewishDate) => boolean

Determines if the given date is Purim.

  • date: A JavaScript Date object or a BasicJewishDate object.

isTzom

isTzom(date: Date | BasicJewishDate) => boolean

Determines if the given date is a Jewish fast day (Tzom).

  • date: A JavaScript Date object or a BasicJewishDate object.

A fast whose calendar date falls on Shabbat is observed on another day, so this returns false for the Shabbat and true for the day the fast moved to.

getTzomInfo

getTzomInfo(date: Date | BasicJewishDate, language?: Language) => TzomInfo | undefined

Returns the fast day observed on the given date, or undefined when it is not a fast day.

  • date: A JavaScript Date object or a BasicJewishDate object.
  • language: (optional) 'en' or 'he'. Defaults to 'en'.

TzomInfo is { name: string; shift: "postponed" | "advanced" | null }. A fast observed on its own calendar date has shift: null. When the calendar date falls on Shabbat the fast is either postponed to the Sunday (Tzom Gdalia, Shiva Asar BeTamuz, Tisha BeAv) or advanced to the preceding Thursday (Taanit Esther, whose Sunday is Purim itself, and Taanit Bechorot, whose Sunday is Erev Pesach). Yom Kippur is fasted on Shabbat itself, and Asara BeTevet can fall on Friday but never on Shabbat.

import { getTzomInfo } from 'jewish-holidays';

getTzomInfo(new Date(2029, 6, 22)); // { name: "Tisha BeAv", shift: "postponed" }
getTzomInfo(new Date(2024, 2, 21)); // { name: "Taanit Esther", shift: "advanced" }
getTzomInfo(new Date(2025, 2, 13)); // { name: "Taanit Esther", shift: null }
getTzomInfo(new Date(2024, 2, 23)); // undefined — 13 AdarII fell on Shabbat
getTzomInfo(new Date(2029, 6, 22), 'he'); // { name: "תשעה באב", shift: "postponed" }

shift is a stable discriminator, not display text, so it stays in English in both languages — render it yourself, e.g. נדחה for "postponed" and מוקדם for "advanced".

getTzomotList

getTzomotList() => Tzom[]

Returns the list of fast days, each a Holiday plus shiftOnShabbat, the rule that applies when its calendar date falls on Shabbat ("postponed", "advanced", or null for the fasts that are never shifted).

import { getTzomotList } from 'jewish-holidays';

console.log(getTzomotList()[0]);
// { day: 3, monthName: "Tishri", name: "Tzom Gdalia",
//   hebrewName: "צום גדליה", shiftOnShabbat: "postponed" }

Languages

Names are available in transliterated English and in Hebrew. Language is 'en' | 'he', and 'en' is the default everywhere, so existing code keeps returning exactly what it did before.

Every entry a holiday list returns carries both names — name and hebrewName — so getTzomotList, getYomTovList and getPurimList take no argument and a bilingual consumer needs only one call:

import { getTzomotList, getHolidayName } from 'jewish-holidays';

const tishaBeAv = getTzomotList().find((t) => t.name === 'Tisha BeAv');
console.log(tishaBeAv.name);       // "Tisha BeAv"
console.log(tishaBeAv.hebrewName); // "תשעה באב"

getHolidayName(tishaBeAv, 'he'); // "תשעה באב"

The functions that report a single resolved name — getDateInfo, getTodayInfo and getTzomInfo — take a language argument that decides which one lands in holidays and tzom.name:

getDateInfo(new Date(2024, 9, 3)).holidays;              // ["Rosh Hashanah", "Rosh Chodesh"]
getDateInfo(new Date(2024, 9, 3), false, 'he').holidays; // ["ראש השנה", "ראש חודש"]

getHolidayName

getHolidayName(holiday: Holiday, language?: Language) => string

Returns a holiday's name in the requested language.

  • holiday: Any Holiday (or Tzom) entry.
  • language: (optional) 'en' or 'he'. Defaults to 'en'.

License

MIT