react-hook-form
4.7/5197

react-hook-form

npm i react-hook-form

951 Versions

7.36.1

latest
2 days ago

๐Ÿชฒ fix #9082 inconsistency between single/group of checkboxes disabled check state (#9083) ๐ŸŒก๏ธ improve setFocus to prevent throw error (#9081)


7.36.0

6 days ago

๐Ÿš‚ feature: reset to support callback syntax (#9051)

reset with partial form values will require invoking getValues at the same time, here is an improvement ๐Ÿ‘‡

Convert your code from:

reset({
  ...getValues(),
  partialData: 'onlyChangeThis'
})

to:

reset((formValues) => {
  return {
    ...formValues,
    partialData: 'onlyChangeThis'
  }
})

7.35.0

16 days ago

๐ŸŽ‰ feature: new type FieldPathByValue field path by value generic implementation

function CustomFormComponent<
  TFieldValues extends FieldValues,
  Path extends FieldPathByValue<TFieldValues, Date>
>({ control, name }: { control: Control<FieldValues>; name: Path }) {
  const { field } = useController({
    control,
    name,
  });
}

function App() {
  const { control } = useForm<{
    foo: Date;
    baz: string;
  }>();

  return (
    <form>
      <CustomFormComponent control={control} name="foo" /> {/* no error */}
      <CustomFormComponent control={control} name="baz" /> {/*  throw an error since baz is string */}
    </form>
  );
}

๐Ÿ›ต close #8969 improve type for useFieldArray rules validate prop #8974

๐Ÿ›— upgrade to TS 4.8.0 and Jest 29 #8620 ๐Ÿž fix #8970 register field array cause render issue #8972 ๐Ÿž fix: typings for useWatch() with no arguments #8923 ๐Ÿž fix #8919 make useController fieldState properties enumerable

const { fieldState } = useController({ name: 'test' })
const copy = {...fieldState} โœ…

๐Ÿ‘ถ๐Ÿป close #8909 form context children prop type (https://github.com/react-hook-form/react-hook-form/pull/8910)

<FormProvider {...methods}>
  <div /> // โœ…
  <div /> // โœ…
</FormProvider>

๐ŸŒ allow field errors to escape type check when provided with any type ๐Ÿ” github workflows security hardening #8965 ๐Ÿ’š ci: stop csb ci from publishing a comment on PR (https://github.com/react-hook-form/react-hook-form/pull/8977)

thanks to @Moshyfawn, @sashashura, @carvalheiro, @chetvishal and @MicaelRodrigues


7.35.0-next.0

next
1 month ago

๐ŸŽ‰ feature: new type FieldPathByValue field path by value generic implementation

function SomeCustomFormComponent<
  TFieldValues extends FieldValues,
  Path extends FieldPathByValue<TFieldValues, Date>
>({ control, name }: { control: Control<FieldValues>; name: Path }) {
  const { field } = useController({
    control,
    name,
  });
  return null;
}

function ExampleOfUsage() {
  const { control } = useForm<{
    foo: Date;
    baz: string;
  }>();

  return (
    <div>
      <SomeCustomFormComponent control={control} name="foo" />{" "}
      {/* throw no error */}
      <SomeCustomFormComponent control={control} name="baz" />{" "}
      {/*  throw an error since baz is string */}
    </div>
  );
}

๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/8919 make useController fieldState properties enumerable

const { fieldState } = useController({ name: 'test' })
const copy = {...fieldState} โœ…

๐Ÿ‘ถ๐Ÿป close https://github.com/react-hook-form/react-hook-form/issues/8909 form context children prop type (https://github.com/react-hook-form/react-hook-form/pull/8910)

<FormProvider {...methods}>
  <div /> // โœ…
  <div /> // โœ…
</FormProvider>

๐ŸŒ allow field errors to escape type check when provided with any type

thanks to @carvalheiro, @chetvishal and @MicaelRodrigues


7.34.2

1 month ago

Revert "๐Ÿงณ let isSubmitting state update after valid form (https://github.com/react-hook-form/react-hook-form/pull/8829)"


7.34.1

1 month ago

๐Ÿž fix(path): keys of Date | FileList | File shouldn't be add to the PathImpl https://github.com/react-hook-form/react-hook-form/pull/8804 ๐Ÿž fix Date, FileList, File and Blob FieldErrors mapping #8772 ๐ŸšŒ update isSubmitting state after valid form #8829

function App() {
  const { formState: { isSubmitting }, register } = useForm()

  console.log(isSubmitting) // isSubmitting will remain false if form is invalid during submission

  return <form onSubmit={handleSubmit(async () => await sleep(1000))}>
    <input {...register('test', { required: true })} />
  </form>
}

๐Ÿงƒ upgrade to cypress 10 #8769 ๐Ÿ“– fix nested fields example #8840 ๐Ÿ“– add nested form example #8703 ๐Ÿ“– improve doc of single watch #8773 ๐Ÿ“– fixing typo (Contruรญdo to Construรญdo) on pt-BR translation #8762

thanks to @HarmonyEarth, @yleflour, @glekner, @vemoo and @joaoeffting


7.34.0

2 months ago

๐ŸŽ‰ feature request: #6879 useFieldArray support rules props (#8102)

useFieldArray({
  name: 'test',
  rules: {
    required: true,
    minLength: 2,
    maxLength: 10,
    validate: (fieldArrayValues) => {
      if (fieldArrayValues[2].title === 'test') {
        return 'validate Error'
      }
    }
  }
})

errors?.test?.root?.message // access root level errors

Note: Related context and poll for error message naming: https://github.com/react-hook-form/react-hook-form/discussions/8625

๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/8584: handle nullable nested properties (https://github.com/react-hook-form/react-hook-form/pull/8699) ๐Ÿ†Ž close https://github.com/react-hook-form/react-hook-form/issues/8689 fix type inconsistency with control (https://github.com/react-hook-form/react-hook-form/pull/8691) ๐Ÿž fix native form reset isn't executed if first fieldReference isn't a HTMLElement (https://github.com/react-hook-form/react-hook-form/pull/8678) ๐Ÿž fix useFieldArray action type incorrectness (https://github.com/react-hook-form/react-hook-form/pull/8660) ๐Ÿš” close https://github.com/react-hook-form/react-hook-form/issues/8653 when useFormContext provide no generic for type check (https://github.com/react-hook-form/react-hook-form/pull/8654) ๐Ÿ›ฐ useFormContext include type tests (https://github.com/react-hook-form/react-hook-form/pull/8656) ๐Ÿคฃ fix typo in useForm.ts (https://github.com/react-hook-form/react-hook-form/pull/8645) ๐Ÿ“š README Helper / Sponsor Generation Script / Workflow (https://github.com/react-hook-form/react-hook-form/pull/8676)

thanks to @@ANTARES-KOR @zandowc @@alexviar @ElectronicsArchiver and @kyoto7250


7.34.0-next.0

3 months ago

๐ŸŽช feature request: #6879 useFieldArray support rules props (#8102)

useFieldArray({
  name: 'test',
  rules: {
    required: true,
    minLength: 2,
    maxLength: 10,
    validate: (fieldArrayValues) => {
      if (fieldArrayValues[2].title === 'test') {
        return 'validate Error'
      }
    }
  }
})

errors?.test?.root?.message // access root level errors

Note: Related context and poll for error message naming: https://github.com/react-hook-form/react-hook-form/discussions/8625


7.33.1

3 months ago

๐Ÿ fix https://github.com/react-hook-form/react-hook-form/issues/8584: field errors type with optional fields (https://github.com/react-hook-form/react-hook-form/pull/8591) ๐Ÿงณ close https://github.com/react-hook-form/react-hook-form/issues/8600 update code example for NestedValue input ๐Ÿ–ผ Integrate jest-preview into react-hook-form (https://github.com/react-hook-form/react-hook-form/pull/8577) ๐Ÿค“ improve the readability of Merge type (https://github.com/react-hook-form/react-hook-form/pull/8570) ๐Ÿš test: migration from ts-jest to @swc/jest (https://github.com/react-hook-form/react-hook-form/pull/8572) ๐Ÿน refactor: use const instead of props (https://github.com/react-hook-form/react-hook-form/pull/8571) ๐Ÿ” feat: Add ability to search test file on watch mode (https://github.com/react-hook-form/react-hook-form/pull/8573) ๐Ÿง˜๐Ÿป ensure the field is focused when selected (https://github.com/react-hook-form/react-hook-form/pull/8566)

thanks to @nvh95, @elstgav and @kotarella1110


7.33.0

3 months ago

โš›๏ธ upgrade to react 18 (https://github.com/react-hook-form/react-hook-form/pull/8529) ๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/8558 missing select function for controlled component (https://github.com/react-hook-form/react-hook-form/pull/8559) ๐Ÿ‘‹ deprecate on NestedValue and UnpackNestedValue (https://github.com/react-hook-form/react-hook-form/pull/8528)

type FormValues = {
-  select: NestedValue<{
-    nested: string
-  }>
+  select: {
+    nested: string
+  }
}

errors.select.message โœ… 

๐Ÿ”ฌ improve nested field errors type (https://github.com/react-hook-form/react-hook-form/pull/8527) ๐Ÿ—‘ UseFormHandleSubmit remove unused generic (https://github.com/react-hook-form/react-hook-form/pull/8526)

Huge thanks go to @felixschorer on type improvement and @romain-trotard for improving tests for react 18


7.32.2

3 months ago

๐Ÿ‹๐Ÿป improve build dist package size (https://github.com/react-hook-form/react-hook-form/pull/8511) ๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/8506 delayError not overwrite existing function call (https://github.com/react-hook-form/react-hook-form/pull/8509) ๐Ÿ“– update the use of validadtionSchema in v7 examples (https://github.com/react-hook-form/react-hook-form/pull/8501)

thanks, @bryantobing12


7.32.1

3 months ago

๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/8493 error not trigger with delayError (https://github.com/react-hook-form/react-hook-form/pull/8494) ๐Ÿ” fix null or undefined cases caught by TS ^4.8 (https://github.com/react-hook-form/react-hook-form/pull/8487) ๐Ÿฅธ funnel along with appropriate constraints for (upcoming) TypeScript 4.8 (https://github.com/react-hook-form/react-hook-form/pull/8484)

thanks to @DanielRosenwasser


7.32.0

4 months ago

๐ŸŽ  feat: make UseFormRegisterReturn generic over TFieldName (https://github.com/react-hook-form/react-hook-form/pull/8414) ๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/8459 regression issue with draft state object (https://github.com/react-hook-form/react-hook-form/pull/8463) ๐Ÿงพ fix: doc watch() with callback example must deconstruct the returned type (https://github.com/react-hook-form/react-hook-form/pull/8451) ๐Ÿค fix: compare html elements against correct global (https://github.com/react-hook-form/react-hook-form/pull/8355) ๐Ÿž flush errors state update when user switch input with delayError (#8429)

thanks to @omjadas @Pika-Pool and @zenoamaro


7.31.3

4 months ago

๐Ÿง‘โ€๐Ÿ’ป Support TypeScript 4.7+ ESM (https://github.com/react-hook-form/react-hook-form/pull/8390) ๐Ÿงพ Fix typo (https://github.com/react-hook-form/react-hook-form/pull/8389) โ„น๏ธ fix export types order ๐Ÿช upgrade to TS 4.7 (https://github.com/react-hook-form/react-hook-form/pull/8402) ๐Ÿ•ธ close https://github.com/react-hook-form/react-hook-form/issues/8404 use isWeb instead of globalThis (https://github.com/react-hook-form/react-hook-form/pull/8406) ๐Ÿฅฌ save cloneObject bytes (https://github.com/react-hook-form/react-hook-form/pull/8407)

thanks to @davbrito, @rossng, @hwanyoungChoi and @Moshyfawn


7.31.2

4 months ago

๐Ÿž fix(reset): set isSubmitted to formState value if keepIsSubmitted is true (https://github.com/react-hook-form/react-hook-form/pull/8368)

thanks to @blabute


7.31.1

5 months ago

๐ŸŽญ close #7472 include a proxy check with field state to improve useController perf (#8334) ๐Ÿž fix #8339 Revert "๐Ÿ—‘ remove the reference for blob and file list (https://github.com/react-hook-form/react-hook-form/pull/8305)" ๐Ÿšฎ remove dead code (#8337)

thanks to @NMinhNguyen


7.31.0

5 months ago

๐Ÿš€ reset optional prop: keepDirtyValues (https://github.com/react-hook-form/react-hook-form/pull/8237)

reset(
  {
    firstName: "bill", // if firstName is dirty then the value will be retained
    lastName: "luo"
  },
  { keepDirtyValues: true } // keep any changed field
);

๐Ÿ‘ฉโ€๐Ÿ”ง close https://github.com/react-hook-form/react-hook-form/issues/8324 auto-correct field array errors on user action (https://github.com/react-hook-form/react-hook-form/pull/8325)

const { append } = useFieldArray()

append({ data: '' }) // will auto correct existing field array errors if any

๐Ÿž fix: clone objects which have functions (https://github.com/react-hook-form/react-hook-form/pull/8301) ๐Ÿ“– fix name of a new option in 6.12.0 change-log notes (https://github.com/react-hook-form/react-hook-form/pull/8335)

thanks to @Moshyfawn @airman5573 @TkDodo and @MasterOdin


7.30.0

5 months ago
Notes

๐Ÿฃ determine checkbox group by defaultValues set as array value (https://github.com/react-hook-form/react-hook-form/pull/7938)

useForm({
  defaultValues: {
    checkboxes: [], // register checkbox will be determine as array of checkboxes
  },
});
register('checkboxes'); // will return array as value

๐Ÿงช improve test cases with checkbox default value as array (https://github.com/react-hook-form/react-hook-form/pull/7501) ๐Ÿ“• add fieldState invalid depreciation note (https://github.com/react-hook-form/react-hook-form/pull/8202) โ›‘ improve getNodeParentName missing case(s) (https://github.com/react-hook-form/react-hook-form/pull/8181) ๐Ÿ”จ support field array parents with numbers in name (https://github.com/react-hook-form/react-hook-form/pull/8167) ๐Ÿ’‰ improve lib tests cases (https://github.com/react-hook-form/react-hook-form/pull/8155)

Contributors

Thanks to contributors below โค๏ธ

  • @spacenate
  • @tedliang
  • @Moshyfawn
  • @jgullstr
  • @romain-trotard

8.0.0-alpha.4

beta
5 months ago

7.29.0

6 months ago

โค๏ธ update react 18 peer dep ๐Ÿ“ฆ es2017 to es2018 (https://github.com/react-hook-form/react-hook-form/pull/8066) Reduce 1% of package weight ๐Ÿƒ avoid runtime error with compact (https://github.com/react-hook-form/react-hook-form/pull/8094) ๐Ÿ‘‹ goodbye omit (https://github.com/react-hook-form/react-hook-form/pull/8079) ๐Ÿž close https://github.com/react-hook-form/react-hook-form/issues/8071 issue on shouldUnreigster mutate defaultValues (https://github.com/react-hook-form/react-hook-form/pull/8078) โญ๏ธ close https://github.com/react-hook-form/react-hook-form/issues/8076 isMount flag issue with useEffect running twice with react 18 (https://github.com/react-hook-form/react-hook-form/pull/8077) ๐ŸŽง close https://github.com/react-hook-form/react-hook-form/issues/8071 clean up at useForm useEffect (https://github.com/react-hook-form/react-hook-form/pull/8073)


8.0.0-alpha.3

6 months ago

8.0.0-alpha.2

6 months ago

7.28.1

6 months ago

๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/8050 disabled attribute ignored with register checkbox (https://github.com/react-hook-form/react-hook-form/pull/8053) ๐Ÿ“ฆ update package.json to set sideEffect false (https://github.com/react-hook-form/react-hook-form/pull/8041) ๐Ÿ†™ TS 4.6.0 (https://github.com/react-hook-form/react-hook-form/pull/7623) ๐Ÿ“– fix replace API TSDoc for fieldArray

thanks to @alexogar and @Moshyfawn


7.28.0

6 months ago

๐Ÿฌ enable deps with string syntax (https://github.com/react-hook-form/react-hook-form/pull/7901)

register('test', { deps: 'theOtherInput' })
register('test', { deps: ['theOtherInput', 'others'] })

๐Ÿงท fix field array update to avoid external mutation ๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/7960 issue on unset deeply nested array field (https://github.com/react-hook-form/react-hook-form/pull/7961) ๐Ÿž fix https://github.com/react-hook-form/react-hook-form/issues/7958 issue with checkbox plus portal (https://github.com/react-hook-form/react-hook-form/pull/7959) ๐Ÿ“ฆ unpack blob data type (https://github.com/react-hook-form/react-hook-form/pull/7937)

thanks to @DASPRiD and @Moshyfawn


7.28.0-next.0

7 months ago

๐Ÿฌ enable deps with string syntax (https://github.com/react-hook-form/react-hook-form/pull/7901)

register('test', { deps: 'theOtherInput' })

๐Ÿงท fix field array update to avoid external mutation


8.0.0-alpha.1

7 months ago

7.27.1

7 months ago

7.27.0

7 months ago

7.26.1

8 months ago

๐Ÿž close https://github.com/react-hook-form/react-hook-form/issues/7758 useController should subscribe to exact field name (https://github.com/react-hook-form/react-hook-form/pull/7759)

thanks to @Moshyfawn



8.0.0-alpha.0

8 months ago

7.25.3

8 months ago

๐Ÿ˜ญ close #7686 regression on replace API and cloneObject on payload (#7687)


7.25.2

8 months ago

โš›๏ธ close #7683 support preact with onTouched mode (#7684)

thanks to @Moshyfawn


7.25.1

8 months ago

๐Ÿž fix #7662 issue with reset file input (#7656) ๐Ÿš— improve perf with get proxy formState (#7655) ๐Ÿ‹๏ธ remove redundant check (#7651) ๐Ÿž fix #7648 Unable to setFocus to Controller after reset (#7649) ๐Ÿž fix: getFieldState - error might be undefined (#7636) โ›‘ improve useFieldArray code consistency (#7628)

thanks to @Moshyfawn and @michalbundyra


7.25.0

8 months ago

โœจ new getFieldState API: get individual field state

Documentation: https://react-hook-form.com/api/useform/getfieldstate

import * as React from "react";
import { useForm } from "react-hook-form";

export default function App() {
  const {
    register,
    getFieldState,
    formState: { isDirty, isValid }
  } = useForm({
    mode: "onChange",
    defaultValues: {
      firstName: ""
    }
  });

  // you can invoke before render or within the render function
  const fieldState = getFieldState("firstName");

  return (
    <form>
      <input {...register("firstName", { required: true })} />
      <p>{getFieldState("firstName").isDirty && "dirty"}</p>
      <p>{getFieldState("firstName").isTouched && "touched"}</p>
      <button type="button" onClick={() => console.log(getFieldState("firstName"))}>
        field state
      </button>
    </form>
  );
}

7.24.2

8 months ago

๐Ÿ˜ฐ close #7593 regression on fieldarray controller/useController unmount with unregister (#7596) ๐Ÿฅธ fix type issue with getFieldState and useController (#7574)


7.24.1

8 months ago

๐Ÿ–จ fix #7571 cloneObject with setValue passed argument (#7572) ๐Ÿฆบ unstable _getFieldState API for retrieve field level state (#7475) ๐Ÿ’ป fix build on Windows (#7532)

thanks to @felixschorer


7.24.0

8 months ago

๐Ÿง  close #6425 memorise useController prop: onChange onBlur and ref (#7526) ๐Ÿ“› related #7521 include name check with resetField (#7521) ๐Ÿช close #7518 making value update before custom onChange (#7519) ๐Ÿž fix #7256 setValue with shouldDirty and shouldTouch combine not update state correctly (#7508)


7.23.0

8 months ago

Happy new year 2022!

๐Ÿ’ป Feature/avoid omitting key name use field array (improve DX) (#7301)

const App = () => {
  const { control, register, handleSubmit } = useForm<FormValues>({
    defaultValues: {
      test: [{id: 'UUID5678', test: 'data' }] // id will be remained as it match default keyName
    }
  });
  const { fields, append } = useFieldArray({
    control,
    name: 'test',
  });

  return (
    <form>
      {fields.map((field, index) => {
        return <input key={field.id} {...register(`test.${index}.test`)} />;
      })}

      <button
        type={'button'}
        onClick={() => {
          append({
            id: 'UUID1234', // id value will be remained as it match default keyName
            test: '1234',
          });
        }}
      >
        append
      </button>
    </form>
  );
};

๐Ÿ“ฒ apply useCallback for callback function to improve perf (#7378) ๐Ÿท test coverage for types (#7311) ๐ŸŽ improve useFieldArray performance with separate id state (#7447) ๐ŸŽฉ close #6776 improve register to support shadow roots (#7400) ๐Ÿ“‡ fix type infer with UseFormHandleSubmit (#7405) ๐ŸŽ remove resolutions dep and update packages (#7396) ๐ŸŽผ import type for utility ๐ŸฅŒ improve useFormState with mounted ref to skip update when hook is unmounted (#7489) ๐Ÿช” improve updateFieldArray batch update (#7477) ๐Ÿชก revert #6834 clearError should not affect isValid (#7470)

thanks to @daisuke85a, @MichalTarasiuk, @adrianos10, @barrymay and @felixschorer!


7.23.0-next.1

9 months ago

๐ŸŽ improve useFieldArray performance with separate id state (#7447) ๐ŸŽฉ close #6776 improve register to support shadow roots (#7400) ๐Ÿ“‡ fix type infer with UseFormHandleSubmit (#7405) ๐ŸŽ remove resolutions dep and update packages (#7396) ๐ŸŽผ import type for utility

thanks to @MichalTarasiuk, @adrianos10 and @felixschorer


7.23.0-next.0

9 months ago

๐Ÿ’ป Feature/avoid omitting key name use field array (improve DX) (#7301)

const App = () => {
  const { control, register, handleSubmit } = useForm<FormValues>({
    defaultValues: {
      test: [{id: 'UUID5678', test: 'data' }] // id will be remained as it match default keyName
    }
  });
  const { fields, append } = useFieldArray({
    control,
    name: 'test',
  });

  return (
    <form>
      {fields.map((field, index) => {
        return <input key={field.id} {...register(`test.${index}.test`)} />;
      })}

      <button
        type={'button'}
        onClick={() => {
          append({
            id: 'UUID1234', // id value will be remained as it match default keyName
            test: '1234',
          });
        }}
      >
        append
      </button>
      <button>submit</button>
    </form>
  );
};

๐Ÿ“ฒ apply useCallback for callback function to improve perf (#7378) ๐Ÿท test coverage for types (#7311)

thanks to @felixschorer


7.22.5

9 months ago
Merry Christmas! ๐ŸŽ ๐Ÿ””๐ŸŽ„

๐ŸŽณ fix: change type order to make typescript hints for watch available (#7353) ๐Ÿ‚ close #7341 allow useWatch to fallback to defaultValue with undefined (#7360) ๐Ÿž fix #7347 defaultValues not populate with disabled input (#7359)

thanks to @pawk3k and @felixschorer


7.22.4

9 months ago

โš”๏ธ close #7348 avoid errors state update with replace and update API (#7349) โŒจ๏ธ include UnpackNestedValue for reset values (#7286) โŒจ๏ธ close #7338 update FieldNamesMarkedBoolean type to boolean instead of true (#7340)


7.22.3

9 months ago

๐Ÿ˜ฟ fix #7313 shouldUnregister prop with useController/controller after unmount (#7317)


7.22.2

9 months ago

๐Ÿž close #7293 with async useFieldArray reset (#7299)


7.22.1

9 months ago

๐Ÿž fix #7282 async reset within onSubmit formState update (#7285)


7.22.0

9 months ago

๐Ÿ–ฑ๏ธ improve dx with reset API within onSubmit or combined with other (#7274)

const onSubmit = (data) => {};

React.useEffect(() => {
  if (formState.isSubmitSuccessful) {
    reset({ something: '' });
  }
}, [formState, reset]);

handleSubmit(onSubmit);

to

const onSubmit = (data) => {
  setSubmittedData(data);
  reset(data); // no longer need to have useEffect
};

handleSubmit(onSubmit);

๐Ÿž fix #7268 async reset API with useFieldArray (#7269) ๐Ÿ›๏ธ build(esm): Use explicit .mjs extension for ESM, with CJS interop (#7262)

huge thanks goes to @evocateur


7.21.3-beta.0

9 months ago

๐Ÿ“ beta: build(esm): Use explicit .mjs extension for ESM, with CJS interop


7.21.2

10 months ago

Revert "๐Ÿ—๏ธ build(esm): Use explicit .mjs extension for ESM (#7244)"

thanks to @evocateur


7.21.1

10 months ago

๐Ÿช‘ remove UnionLike type (#7187) ๐ŸŒŠ useFieldArray deep nested object issue due to object reference (#7240) ๐Ÿ—๏ธ build(esm): Use explicit .mjs extension for ESM (#7244) ๐ŸŽฎ close #7231 set deep nested value with controlled input via setValue (#7232)

thanks to @evocateur


7.21.1-0

10 months ago

7.21.0

10 months ago

๐Ÿ“ shouldUseNativeValidation will inject native validation attributes into field which supports both client & server (#7207)

const { register } = useForm()

<input {...register('name', { required: true })} />

<input name="name" required /> // both client and server render

๐Ÿคฆ๐Ÿปโ€โ™‚๏ธ fix #2717 regression with async field array actions (#7218)


7.20.5

10 months ago

๐Ÿž fix #7174 issue with empty errors object prevent submit


7.20.4

10 months ago

Revert ๐Ÿ”ข fix #7149 Supporting Number Object comparison in deepEqual (#7150)

thanks to @barrymay


7.20.3

10 months ago

๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง unify register onChange with useController retrieve value (#7153) ๐Ÿ‘ fix setCustomValidity typo (#7154) ๐Ÿ”ข fix #7149 Supporting Number Object comparison in deepEqual (#7150) ๐Ÿ™… prevent update input type with files (#7147) โœ‚๏ธ deprecate unset empty array function (#7120) ๐Ÿž fix #7109 issue with field array dirty fields (#7119)

thanks to @getTobiasNielsen @swapnilrohom @lxy-yz and @LucasLemanowicz


7.20.2

10 months ago

๐Ÿž fix #7090 shallow clone for object has no prototype methods (#7096) ๐Ÿ˜ฎโ€๐Ÿ’จ revert module config (#7095) ๐Ÿ“ฆ change node engine to >= 12.0

thanks to @barrymay


7.20.1

10 months ago

๐Ÿฅƒ revert #7016 and add type test coverage (#7082) ๐Ÿซ€ close #7079 flush update at the field array level before app/form-level (#7080)


7.20.0

10 months ago

โœจ feature: useWatch/useFormState exact prop (#6983)

useWatch({
  name: 'test.test',
  exact: true,
});

useFormState({
  name: 'test.test',
  exact: true,
});

๐ŸŽณ close #7032 with stale onBlur value (#7078) ๐Ÿ“ฆ upgrade to ts 4.5.2 (#6944) ๐Ÿ‘‚ remove early subscription (#7056) ๐Ÿ“ฆ chore: Modify package.json to include es6 imports (#7034) ๐Ÿ—ƒ๏ธ fix(package.json): add node requirement version (#7039)

thanks to @barrymay @neighborhood999 and @karanaditya993


7.19.5

10 months ago

๐Ÿž fix #7031 fast refresh (#7035)


7.19.4

10 months ago

๐Ÿ’… close #7023 issue with async useFieldArray actions (#7029) ๐Ÿ‘๏ธ chore(useWatch): making the name a read-only array (#7016) โŒจ๏ธ adds types for no supplied props argument (#7017) ๐Ÿคฆ๐Ÿปโ€โ™‚๏ธ close #7013 avoid shallow clone for the custom object (#7014)

thanks to @dborysov @sfrieson


7.19.3

1 year ago

๐Ÿž fix #7011 reset API with shouldUnregister: true for controlled components (#7012)


7.19.2

1 year ago

๐Ÿž fix #7009 fix fast refresh with controller (#7010) ๐Ÿ‘๐Ÿป close #7001 shouldUnregister: true with useController unmount defaultValue (#7008) ๐Ÿง  close #6994 issue with mutate original state with shouldUnreigster: true (#6998)


7.19.1

1 year ago

๐Ÿž fix #6984 disabled input with register value (#6985) ๐Ÿคฒ close #6987 avoid shallow clone for object field (#6988)


7.19.0

1 year ago

โœจ feature: new resetField API (#6891)

const { resetField } = useForm();

resetField('test')

resetField('test', {
  keepError: true,
  keepDirty: true,
  keepTouched: true,
  defaultValue: 'test1',
})

โฑ close #6966 improve trigger by avoiding additional validation invocation (#6967)

thanks to @barrymay and @kotarella1110


7.18.1

1 year ago

๐Ÿ˜” fix 6933 by revert FieldPathWithValue type #6753 (#6934) ๐Ÿงข close #6928 prevent schema error before user's action (#6929)

thanks to @mnigh @kotarella1110 @barrymay


7.19.0-next.0

1 year ago

โœจ new resetField API

const { resetField } = useForm();

resetField('test')

resetField('test', {
  keepError: true,
  keepDirty: true,
  keepTouched: true,
  defaultValue: 'test1',
})

๐Ÿงข close #6928 prevent schema error before user's action (#6929) ๐Ÿงนremove createSubscription and createSubscriber to reduce size (#6880) โœŒ๐Ÿป improve react strict mode support with subscription โœŒ๐Ÿป improve useController by integrating with useWatch โœŒ๐Ÿป package size-reduction (close to 1%) โœŒ๐Ÿป internally removed skipEarlySubscription


7.18.0

1 year ago

๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ schema error parent level look up (#6869)

const validationSchema = object().shape({
  questions: array()
    .min(1, "Array cannot be empty")
    .of(
      object().shape({
        text: string().required("Some text is required")
      })
    )
});

function App() {
  const {
    control,
    formState: { errors },
    register
  } = useForm({
    mode: "onChange",
    resolver: yupResolver(validationSchema),
    defaultValues: { questions: [ { text: 'test' } ] }
  });
  const { fields, remove } = useFieldArray({
    control,
    name: "questions",
  });
  console.log(errors);
  return (
    <form>
      {fields.map((question, questionIndex) => (
        <div key={question.key}>
          <input {...register(`questions[${questionIndex}].text`)} />

          <button type="button"
            onClick={() => {
              remove(questionIndex);
            }}
          >
            Remove
          </button>
        </div>
      ))}
    </form>
  );
}

Codesandbox LInk: works with min length parent error object look up

๐Ÿ˜ž fix #6896 validation isValid mixed with schema result (#6901) ๐Ÿจ close #6899 trigger isolate render for targeted input name (#6900) ๐Ÿ‘‚ close #6889 disable early subscription with useController (#6890) ๐Ÿž fix #6792 reset with keepDefaultValues (#6886) โ„ change the subject from class to function base to improve readability and reduce the size (#6843) ๐Ÿ‘‚๐Ÿป make sure subscriptions get unsubscribed after unmount (#6873) ๐Ÿงป prevent error lookup with fields (#6871)

Revert "Revert "โœจ Add support for generic components using `FieldPatโ€ฆ (#6753)

type ExpectedType = { test: string };

const Generic = <FormValues extends FieldValues>({
  name,
  control,
}: {
  name: FieldPathWithValue<FormValues, ExpectedType>;
  control: Control<FormValues>;
}) => {
  const {
    field: { value, ...fieldProps },
  } = useController<FormValues, ExpectedType>({
    name,
    control,
    defaultValue: { test: 'value' },
  });

  return <input type="text" value={value.test} {...fieldProps} />;
};

๐Ÿ˜ข fix #6856 regression on set input file list (#6861) โŒจ๏ธ fix #6852 watch missing type with DeepPartial (#6854)

thanks to @kotarella1110


7.17.5

1 year ago

โœจ enable sharing form sections between forms in typescript (#6807) ๐Ÿž fix #6834 clearErrors not reset isValid formState to true โš ๏ธ close #6830 warning under strict mode with Controller formState update (#6832) ๐Ÿงช include test coverage #6826 (#6827) โœจ add TypeScript support for optional array fields (#6826) ๐Ÿ‘” allow Jest VSCode extension to run successfully on startup (#6810)

thanks to @barrymay @LinusU and @SimonSelg


7.17.4

1 year ago

๐Ÿ˜ฎโ€๐Ÿ’จ fix setFocus api issue #6804 โŒจ๏ธ close #6761 improve useWatch return array type (#6788) Revert "๐Ÿงถ add support for extended generics in path type (#6762)" (#6802) ๐Ÿž fix #6792 reset keep defaultValues with useWatch return (#6794) โšก๏ธ upgrade eslint to 8.0 and other package (#6789)


7.17.3

1 year ago

๐Ÿฆ— close #6777 fall back to defaultValues with shouldUnregister: true with unmount fieldArray (#6780) ๐Ÿงฏ change validation message in example code to match the rule better (#6781) ๐ŸŒณ rename document.contains to live function (#6778) ๐Ÿž fix 6764 reset with keepDefaultValues: true with isDirty and dirtyFields (#6774) ๐Ÿž fix #6765 useFieldArray trigger validation by field name (#6768) ๐Ÿงถ add support for extended generics in path type (#6762) ๐Ÿž fix #6754 focus issue with radio and checkbox (#6755)

thanks to @RolkerMan @hpohlmeyer


7.18.0-next.0

1 year ago

โœจ Add support for generic components using FieldPathWithValue (#6562)

type ExpectedType = { test: string };

const Generic = <FormValues extends FieldValues>({
  name,
  control,
}: {
  name: FieldPathWithValue<FormValues, ExpectedType>;
  control: Control<FormValues>;
}) => {
  const {
    field: { value, ...fieldProps },
  } = useController<FormValues, ExpectedType>({
    name,
    control,
    defaultValue: { test: 'value' },
  });

  return <input type="text" value={value.test} {...fieldProps} />;
};

7.17.2

1 year ago

๐Ÿž fix #6748 skip clone object when object contains function nodes (#6749) โฎ revert interface & mapped type update (#6747) ๐Ÿž fix #6736 custom onChange getting called on blur (#6746) ๐Ÿž fix #6731 subscription issue with unmount field array (#6732) ๐Ÿ’‰ simplify controller field state error type (#6730) ๐ŸŒŸ improve reset with keepDefaultValues options (#6720) ๐Ÿ‘‚ improve useSubscribe hook (#6724) ๐Ÿ“– more TS test coverage for missing generic at useForm (#6716)

thanks to @fzkirablackwhy @kotarella1110


7.17.1

1 year ago

Revert "โœจ Add support for generic components using FieldPathWithValue (#6562)" (#6717) ๐Ÿ–Œ๏ธ fix Path and ArrayPath types for defined value type with interface (#6626) ๐Ÿง‰ close #6657 support equality check on date time object (#6706)

thanks to @kotarella1110 @jviall


7.17.0

1 year ago

โœจ Add support for generic components using FieldPathWithValue (#6562)

type ExpectedType = { test: string };

const Generic = <FormValues extends FieldValues>({
  name,
  control,
}: {
  name: FieldPathWithValue<FormValues, ExpectedType>;
  control: Control<FormValues>;
}) => {
  const {
    field: { value, ...fieldProps },
  } = useController<FormValues, ExpectedType>({
    name,
    control,
    defaultValue: { test: 'value' },
  });

  return <input type="text" value={value.test} {...fieldProps} />;
};

โš™๏ธ migrate from Select.options to Select.selectedOptions (#6678) (#6687) ๐Ÿž fix #6683 trigger regression with isValid subscription (#6686)

Thanks to @julienfouilhe and @krnlde


7.16.2

1 year ago

โŒจ๏ธ fix field state error type with NestedValue (#6658) ๐Ÿ‘“ fix #6655 issue with field array focus name with filter operator (#6656) ๐Ÿž fix #6651 trigger api with schema validation per field level (#6652)

Thanks to @kotarella1110 @barrymay @nicholascm @fahadsohail482


7.16.1

1 year ago

๐ŸŽน fix #6646 incorrect type with fieldState error (#6650) ๐ŸŽง refactor subscription logic into useSubscribe (#6614)

Thanks to @kotarella1110 @barrymay


7.16.0

1 year ago

๐Ÿช„ feat: Ability to provide custom onBlur and onChange handlers (#5620)

<input
  type="text"
  {...register('test', {
    onChange: (e) => {},
    onBlur: (e) => {},
  })}
/>

๐Ÿ—บ๏ธ fix Mapped types for defined value type with interface (#6605) ๐Ÿฅ close #6590 prevent error throw by missing input with trigger API (#6591)

Thanks to @kotarella1110 @exneval @michalbundyra


7.15.4

1 year ago

๐Ÿ‘จโ€๐Ÿญ close #6581 by register input with setValue to improve DX for missing registered inputs (#6582) ๐Ÿ’‰ include unit test for #6581 setValue with missing input ๐Ÿž fix #6573 calling setValue from useEffect at mount does not update controller value (#6578) โŒš๏ธ close #6548 watch, reset with shouldUnregister: true by trigger extra re-render to flush out the current form values (#6549) ๐Ÿž fix async useFieldArray actions (#6540) ๐Ÿ”– fix typos in examples and source code (#6531) ๐Ÿ’‰ replace updateValues with cloneObject (#6530)

Thanks, @frankie303


7.15.3

1 year ago

๐Ÿž fix #6528 async reset update isMounted when isValid is not subscribed (#6529) ๐Ÿž fix #6513 reset config keepValues update formValues (#6524) ๐Ÿž fix #6482 reset formValues with shouldUnregister: true (#6512) ๐Ÿž fix #6509 return defaultValues when components are not mounted (#6511) ๐Ÿ”จ proper fix for useController default value update (#6510)


7.15.2

1 year ago

๐Ÿž fix #2655 disabled input should set to undefined (#6501) ๐Ÿž improve ControllerFieldState type for Controller types (#6500) ๐Ÿž add File and FileList interface for ReactNative (#6495)

Thanks, @kotarella1110


7.15.2-beta.0

1 year ago

7.15.1

1 year ago

๐Ÿš€ fix: add UnionLike type for FieldErrors and FieldNamesMarkedBoolean type (#6381) ๐Ÿ’ป ci: update from ubuntu-16.04 to ubuntu-latest (#6485) ๐Ÿž fix handleChange to set undefined value (#6481) ๐Ÿž fix #6473 isMount flag for useWatch value subscription (#6474) ๐Ÿž fix #6469 schema checkbox validation incorrect parent node lookup (#6471)


7.15.0

1 year ago

๐ŸŽ‡ [useFieldArray] new method replace() (#6304)

const { control } = useForm({
  defaultValues: {
    test: [{ value: 'lorem' }, { value: 'ipsum' }]
  }
});
const { fields, replace } = useFieldArray({ 
  control, 
  name: 'test'
});

const handleFullyReplacement = (): void => {
  // remove old and set fully new values
  replace([{ value: 'dolor' }, { value: 'sit' }, { value: 'amet' }]);
}

๐Ÿž fix #6379 toggle disabled props with register api (#6459) ๐Ÿ—บ๏ธ improve Mapped types (#6451) ๐Ÿ—๏ธ refactor: improve NestedValue type (#6449) ๐Ÿ—๏ธ feat: improve PathValue type to fully support union type (#6431)


7.14.3-beta.0

1 year ago

๐Ÿ”‘ fix: add UnionLike type for FieldErrors type #6381


7.14.2

1 year ago

๐Ÿ› fix #6403 issue with fields object with getter and setter function (#6407) โŒจ๏ธ update watch observer types (#6404) ๐Ÿงฅ fix getter and setter consistency (#6408)


7.14.1

1 year ago

๐Ÿ‘พ improve change event perf (#6373) ๐Ÿž fix #6379 when disabled is not return from the DOM attribute (#6380) ๐Ÿงป code improvement and size reduction (#6372) ๐ŸŽฎ prevent controller with TypeError: e.focus is not a function (#6386) Revert "๐ŸŽน fix #6265 objects may have error messages (#6275)" (#6391)


7.14.0

1 year ago

๐Ÿฅณ feature: add dependent validation - run a dependent field's validation after another field's validation runs (#6141)

const App = () => {
  const { register, getValues } = useForm();

  return (
    <form>
      <input
        {...register('firstName', {
          validate: (value) => {
            return getValues('lastName') === value;
          }
        })}
      />
      <input {...register('lastName', { deps: ['firstName'] })} /> // dependant validation
    </form>
  );
};

๐Ÿฆ† close #6319 remove shallow clone with watch return value (#6336) ๐Ÿ—๏ธ fix #6320 type issue with provider context (#6326) ๐ŸŽ›๏ธ fix #6335 useController only update field ref #6341 ๐ŸŽฎ close #6328 useController set defaultValue to be part of formValues (#6329) ๐Ÿ“ญ close #6367 missing absent empty object and array input from defaultValues (#6368)


7.14.0-next.0

1 year ago

๐Ÿฅณ feature: add dependent validation - run a dependent field's validation after another field's validation runs (#6141)

const App = () => {
  const { register, getValues } = useForm();

  return (
    <form>
      <input
        {...register('firstName', {
          validate: (value) => {
            return getValues('lastName') === value;
          }
        })}
      />
      <input {...register('lastName', { deps: ['firstName'] })} /> // dependant validation
    </form>
  );
};

๐Ÿฆ† close #6319 remove shallow clone with watch return value (#6336) ๐Ÿ—๏ธ fix #6320 type issue with provider context (#6326) ๐ŸŽ›๏ธ fix #6335 useController only update field ref #6341 ๐ŸŽฎ close #6328 useController set defaultValue to be part of formValues (#6329)


7.13.0

1 year ago

๐ŸŽ Performance enhancement at scale

React hook from is getting a general performance upgrade and enhancement. The following API will get big performance improvement at scale, which means it may not improve on small or medium-size applications, but rather large and complex applications with subscriptions.

  • useWatch
  • useFieldArray
  • watch
  • getValues

Result Env: dev build + throttle 4x CPU + Chrome + MAC M1

VersionFlat (1000)Nested (1000)Deeply Nested (1000 2 2000)Flat (1000) Mount
7.13.0-next.018ms20ms200ms470ms (no change)
7.11.140ms43ms2000ms470ms

๐Ÿ“ฆ Package size-reduction

  • 5% package size reduction with compress and gzip

Total Size: 30.3 kB

FilenameSizeChange
dist/index.cjs.js8.39 kB-445 B (5%)โœ…
dist/index.esm.js13.4 kB-656 B (4%)
dist/index.umd.js8.52 kB-420 B (4%)

๐Ÿ”ซ Trigger

  • Trigger will enable object name trigger and field array name trigger
useFieldArray({ name: 'test' })

trigger('name') // will trigger the whole field array to validate

๐Ÿ“‘ register

  • added a disabled prop as an option to toggle input disable attribute
  • register will be able to seek input DOM reference through the ref callback
register('test', { disabled: true }) // will set value to undeinfed and pass disabled down to the input attribute

<div {...register('test')}>
  <input name="test" /> // this input will be registered
</div>

๐Ÿ‘€ useWatch

  • added disabled prop to toggle the state subscription.
useWatch({ disabled: true }) // you toggle the subscription

โŒจ๏ธ useFormState

  • added disabled prop to toggle the state subscription.
useFormState({ disabled: true }) // you toggle the subscription

โ›ณ๏ธ setValue

  • allow set value for non-registered inputs include nested object and array field.
<input {...register('test.0.firstName')} />

setValue('test', [{ firstName: 'bill' }, {firstName: 'kotaro}, {firstName: 'joris'}]) // this will works
Resolved issues:

โฑ๏ธ close #6296 abort validation early when disable prop is detected (#6300) ๐ŸŽน fix #6265 objects may have error messages (#6275) ๐Ÿ”„ fix #6277 track async validate to trigger state update (#6284) ๐Ÿž fix #6272 only flush field array when subscription name match (#6281) ๐Ÿ’ช๐Ÿป simplify fillEmptyArray and combine focus name (#6237) ๐ŸŒต remove redundant code for useFieldArray (#6236) ๐Ÿž patch remove, update api with key id persist (#6235) ๐Ÿž close #6233 for persist field array id (#6234) ๐Ÿ„ enable detect fields unmount at useWatch level (#6226) ๐Ÿ’จ improve useFieldArray perf (#6215) ๐Ÿจ close #6193 to remove shallow merge with defaultValue with watch (#6201) ๐Ÿž fix #6186 delayError with set error after delay (#6188) โ˜„๏ธ enhance unregister unmount inputs by combining its logic (#6185) ๐Ÿ–จ๏ธ include reset clone value for array/object/date (#6183) ๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ง fix rendering order with useFieldArray (#6182) ๐ŸŽญ skip the shallow clone with useForm return (#6154) โŒจ๏ธ fix: WatchObserver info name type (#6171)


7.13.0-next.5

1 year ago

๐Ÿž patch remove, update API with key id persist (#6235)


7.13.0-next.4

1 year ago

๐Ÿž close #6233 for persist field array id (#6234) ๐Ÿ„ enable detect fields unmount at useWatch level (#6226)


7.13.0-next.3

1 year ago

๐Ÿจ close #6193 to remove shallow merge with defaultValue with watch (#6201) ๐Ÿ’จ improve useFieldArray perf (#6215)


7.13.0-next.2

1 year ago

๐Ÿž fix #6186 delayError with set error after delay (#6188)


7.13.0-next.1

1 year ago

๐Ÿ–จ๏ธ include reset clone value for array/object/date (#6183) ๐Ÿ‘จ๐Ÿปโ€๐Ÿ”ง fix rendering order with useFieldArray (#6182) ๐ŸŽญ skip the shallow clone with useForm return (#6154) โŒจ๏ธ fix: WatchObserver info name type (#6171)


7.13.0-next.0

1 year ago

This new release is going to be quite an improvement over the existing version. We will start with next (beta) version.

๐ŸŽ Performance enhancement at scale

React hook from is getting a general performance upgrade and enhancement. The following API will get big performance improvement at scale, which means it may not improve on small or medium-size applications, but rather large and complex applications with subscriptions.

  • useWatch
  • useFieldArray
  • watch
  • getValues

Result Env: dev build + throttle 4x CPU + Chrome + MAC M1

VersionFlat (1000)Nested (1000)Deeply Nested (1000 2 2000)Flat (1000) Mount
7.13.0-next.018ms20ms200ms470ms (no change)
7.11.140ms43ms2000ms470ms

๐Ÿ“ฆ Package size-reduction

  • 5% package size reduction with compress and gzip

Total Size: 30.3 kB

FilenameSizeChange
dist/index.cjs.js8.39 kB-445 B (5%)โœ…
dist/index.esm.js13.4 kB-656 B (4%)
dist/index.umd.js8.52 kB-420 B (4%)

๐Ÿ”ซ Trigger

  • Trigger will enable object name trigger and field array name trigger
useFieldArray({ name: 'test' })

trigger('name') // will trigger the whole field array to validate

๐Ÿ“‘ register

  • added a disabled prop as an option to toggle input disable attribute
  • register will be able to seek input DOM reference through the ref callback
register('test', { disabled: true }) // will set value to undeinfed and pass disabled down to the input attribute

<div {...register('test')}>
  <input name="test" /> // this input will be registered
</div>

๐Ÿ‘€ useWatch

  • added disabled prop to toggle the state subscription.
useWatch({ disabled: true }) // you toggle the subscription

โŒจ๏ธ useFormState

  • added disabled prop to toggle the state subscription.
useFormState({ disabled: true }) // you toggle the subscription

โ›ณ๏ธ setValue

  • allow set value for non-registered inputs include nested object and array field.
<input {...register('test.0.firstName')} />

setValue('test', [{ firstName: 'bill' }, {firstName: 'kotaro}, {firstName: 'joris'}]) // this will works

7.12.2

1 year ago

โœŒ๐Ÿป close #6124 move isValid state into a separate function to unblock validation ๐Ÿž fix #6105 deep equal issue with undefined node (#6107)


7.12.1

1 year ago

๐Ÿž fix #6090 issue with set defaultValue as string with valueAs (#6093) ๐Ÿž make sure the field is set before setting it to mounted (#6084) ๐Ÿž fix #6081 issue with delayError with formState (#6083)


7.12.1-next.0

1 year ago

7.12.0

1 year ago

โŒš UX: useForm config delayError (#5935)

useForm({
  delayError: 500 // delay error appear with 500ms
})

โŒจ๏ธ stricter type check on onChange event type (#6030) ๐Ÿž fix #6035 issue with Controller select toggle inValid state (#6069) ๐Ÿž fix #6055 missing dirtyFields subscribe in useFieldArray actions (#6059) ๐Ÿž fix #6052 miss marking controller as mounted (#6053)


7.11.2-beta.0

1 year ago

951 Versions

TagPublished
7.36.1latest2d ago
7.36.06d ago
7.35.016d ago
7.35.0-next.0next1mo ago
7.34.21mo ago
7.34.11mo ago
7.34.02mos ago
7.34.0-next.03mos ago
7.33.13mos ago
7.33.03mos ago
7.32.23mos ago
7.32.13mos ago
7.32.04mos ago
7.31.34mos ago
7.31.24mos ago
7.31.15mos ago
7.31.05mos ago
7.30.05mos ago
8.0.0-alpha.4beta5mos ago
7.29.06mos ago
8.0.0-alpha.36mos ago
8.0.0-alpha.26mos ago
7.28.16mos ago
7.28.06mos ago
7.28.0-next.07mos ago
8.0.0-alpha.17mos ago
7.27.17mos ago
7.27.07mos ago
7.26.18mos ago
7.26.08mos ago
8.0.0-alpha.08mos ago
7.25.38mos ago
7.25.28mos ago
7.25.18mos ago
7.25.08mos ago
7.24.28mos ago
7.24.18mos ago
7.24.08mos ago
7.23.08mos ago
7.23.0-next.19mos ago
7.23.0-next.09mos ago
7.22.59mos ago
7.22.49mos ago
7.22.39mos ago
7.22.29mos ago
7.22.19mos ago
7.22.09mos ago
7.21.3-beta.09mos ago
7.21.210mos ago
7.21.110mos ago
7.21.1-010mos ago
7.21.010mos ago
7.20.510mos ago
7.20.410mos ago
7.20.310mos ago
7.20.210mos ago
7.20.110mos ago
7.20.010mos ago
7.19.510mos ago
7.19.410mos ago
7.19.31yr ago
7.19.21yr ago
7.19.11yr ago
7.19.01yr ago
7.18.11yr ago
7.19.0-next.01yr ago
7.18.01yr ago
7.17.51yr ago
7.17.41yr ago
7.17.31yr ago
7.18.0-next.01yr ago
7.17.21yr ago
7.17.11yr ago
7.17.01yr ago
7.16.21yr ago
7.16.11yr ago
7.16.01yr ago
7.15.41yr ago
7.15.31yr ago
7.15.21yr ago
7.15.2-beta.01yr ago
7.15.11yr ago
7.15.01yr ago
7.14.3-beta.01yr ago
7.14.21yr ago
7.14.11yr ago
7.14.01yr ago
7.14.0-next.01yr ago
7.13.01yr ago
7.13.0-next.51yr ago
7.13.0-next.41yr ago
7.13.0-next.31yr ago
7.13.0-next.21yr ago
7.13.0-next.11yr ago
7.13.0-next.01yr ago
7.12.21yr ago
7.12.11yr ago
7.12.1-next.01yr ago
7.12.01yr ago
7.11.2-beta.01yr ago