Skip to content

Commit 8804c81

Browse files
committed
fix: warn on NaN/Infinity values in dev mode
NumberFlow and SkiaNumberFlow now emit a warnOnce when value is non-finite, helping developers catch formatting bugs early.
1 parent 49ea8d7 commit 8804c81

3 files changed

Lines changed: 11 additions & 0 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"number-flow-react-native": patch
3+
---
4+
5+
Add dev-mode warnings when `value` is `NaN` or `Infinity`

packages/number-flow-react-native/src/native/NumberFlow.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ export const NumberFlow = ({
5353
const { metrics, MeasureElement } = useMeasuredGlyphMetrics(nfStyle, formatChars, digitStrings);
5454

5555
if (__DEV__) {
56+
if (typeof value === "number" && !Number.isFinite(value)) {
57+
warnOnce("nf-non-finite", `value must be a finite number, got ${value}.`);
58+
}
5659
if (digits) {
5760
for (const [posStr, constraint] of Object.entries(digits)) {
5861
if (constraint.max < 1 || constraint.max > 9) {

packages/number-flow-react-native/src/skia/SkiaNumberFlow.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,9 @@ export const SkiaNumberFlow = ({
507507
"font is null. Pass a loaded SkFont from useFont(). Component renders empty until font loads.",
508508
);
509509
}
510+
if (value !== undefined && !Number.isFinite(value)) {
511+
warnOnce("skia-nf-non-finite", `value must be a finite number, got ${value}.`);
512+
}
510513
if (value !== undefined && sharedValue !== undefined) {
511514
warnOnce("skia-nf-both", "Both value and sharedValue provided. Use one or the other.");
512515
}

0 commit comments

Comments
 (0)