Registry / payments / react-cc-number-formatter

react-cc-number-formatter

JSON →
library0.9.1jsnpmunverified

A React adapter component for formatting, validating, and managing credit card form inputs. Current stable version is 0.9.1, released under MIT license. It formats card numbers with spaces every four digits, performs Luhn validation, blocks invalid input for MM/YY/CVV fields, and uses a render-prop pattern to be styling-agnostic. Unlike alternatives (e.g., react-credit-cards), it separates formatting logic from UI and provides detailed credit card info (brand, completeness per field). Depends on React only.

npm install react-cc-number-formatter
INSTALL
IMPORT
SIG · REACT-CC-NUMBER-FO
R
react-cc-number-formatter
paymentsjavascriptv0.9.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

CreditCardNumberFormatter
import { CreditCardNumberFormatter } from 'react-cc-number-formatter'
import CreditCardNumberFormatter from 'react-cc-number-formatter'
Named export, not default. TypeScript types are included.
CreditCard
import type { CreditCard } from 'react-cc-number-formatter'
import { CreditCard } from 'react-cc-number-formatter'
TypeScript type, use 'import type' to avoid runtime error.
CreditCardInfo
import type { CreditCardInfo } from 'react-cc-number-formatter'
const { CreditCardInfo } = require('react-cc-number-formatter')
TypeScript type, not available at runtime. Use ESM import type.
BrandType
import type { BrandType } from 'react-cc-number-formatter'
import { BrandType } from 'react-cc-number-formatter'
TypeScript type alias, not a value. Must use 'import type'.

Minimal usage of CreditCardNumberFormatter with all card fields, Luhn validation, and render-prop pattern.

import React, { useState } from 'react'; import { CreditCardNumberFormatter, CreditCard } from 'react-cc-number-formatter'; function App() { const [creditCard, setCreditCard] = useState<CreditCard>({ number: '', mm: '', yy: '', cvv: '' }); return ( <CreditCardNumberFormatter creditCard={creditCard} onCreditCardChange={(cc, info) => { setCreditCard(cc); if (info.complete && info.luhn) { console.log('Card valid and complete'); } }} > {(cc, emitChange) => ( <div> <input value={cc.number} onChange={e => emitChange({ ...cc, number: e.target.value })} placeholder="Card number" /> <input value={cc.mm} onChange={e => emitChange({ ...cc, mm: e.target.value })} placeholder="MM" /> <input value={cc.yy} onChange={e => emitChange({ ...cc, yy: e.target.value })} placeholder="YY" /> <input value={cc.cvv} onChange={e => emitChange({ ...cc, cvv: e.target.value })} placeholder="CVV" /> </div> )} </CreditCardNumberFormatter> ); } export default App;
Debug
Known issues
gotchaThe `creditCard` object must include all four fields (number, mm, yy, cvv) even if empty.
fix
Always provide default state with all fields: { number: '', mm: '', yy: '', cvv: '' }
affects: >=0.0.0
gotcha`emitChange` must be called with a full `CreditCard` object; partial updates can break internal state.
fix
Always spread existing state: emitChange({ ...creditCard, number: newValue })
affects: >=0.0.0
gotcha`number` field in `creditCard` passed in prop is formatted with spaces internally, but `onCreditCardChange` returns number without spaces.
fix
Expect returned number to be unformatted. If you need display value, read from the `creditCard` render-prop argument.
affects: >=0.0.0
gotchaTypeScript types are exported but not re-exported from a barrel file; direct import paths required.
fix
Use import type { CreditCard } from 'react-cc-number-formatter' – no subpaths.
affects: >=0.0.0
Errors
Common errors & fixes
Attempted import error: 'CreditCardNumberFormatter' is not exported from 'react-cc-number-formatter'.
Using default import instead of named import.
fix
import { CreditCardNumberFormatter } from 'react-cc-number-formatter'
TypeError: Cannot read properties of undefined (reading 'number')
Initial creditCard prop does not contain all required fields.
fix
Provide object with number, mm, yy, cvv: { number: '', mm: '', yy: '', cvv: '' }
Warning: Received `true` for a non-boolean attribute `complete`.
Passing creditCardInfo properties as JSX attributes on a DOM element.
fix
Do not spread creditCardInfo onto a DOM element; use it programmatically.
Module not found: Can't resolve 'react-cc-number-formatter'
Package not installed.
fix
npm install react-cc-number-formatter
Upgrade
Version history
0.9.1latest on npm
Audit
Dependencies
reactrequiredPeer dependency for React component usage
Agent activity
19 hits · last 30 days
node
18
OpenAI (training)
1
Resources
react-cc-number-formatter — npm install react-cc-number-formatter · libregistry