{"id":24945,"library":"awesome-phonenumber","title":"awesome-phonenumber","description":"A pre-compiled version of Google's libphonenumber that provides phone number parsing, validation, and formatting with a simplified API. Currently at version 7.8.0, tracking libphonenumber 9.0.24. Releases follow upstream libphonenumber updates roughly monthly. Key differentiators: minimal footprint (bundled, no closure compiler dependency), zero runtime dependencies, ships both ESM and CJS, TypeScript types included, and unique findNumbers() feature not present in libphonenumber. Faster load and parse times compared to google-libphonenumber and libphonenumber-js. Supports Node >=18.","status":"active","version":"7.8.0","language":"javascript","source_language":"en","source_url":"https://github.com/grantila/awesome-phonenumber","tags":["javascript","libphonenumber","phonenumber","phone","number","closure","web","browser","browserify","typescript"],"install":[{"cmd":"npm install awesome-phonenumber","lang":"bash","label":"npm"},{"cmd":"yarn add awesome-phonenumber","lang":"bash","label":"yarn"},{"cmd":"pnpm add awesome-phonenumber","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Named export in both ESM and CJS; do not use default import.","wrong":"import parsePhoneNumber from 'awesome-phonenumber'","symbol":"parsePhoneNumber","correct":"import { parsePhoneNumber } from 'awesome-phonenumber'"},{"note":"ESM-style import works; require() also works but note that the entire module is pre-compiled.","wrong":"const getNumberFrom = require('awesome-phonenumber').getNumberFrom","symbol":"getNumberFrom","correct":"import { getNumberFrom } from 'awesome-phonenumber'"},{"note":"Available since v7.0.0; also a named export.","wrong":"import { findNumbers as find } from 'awesome-phonenumber'","symbol":"findNumbers","correct":"import { findNumbers } from 'awesome-phonenumber'"},{"note":"TypeScript users should use type import for interface.","symbol":"PhoneNumber","correct":"import type { PhoneNumber } from 'awesome-phonenumber'"}],"quickstart":{"code":"import { parsePhoneNumber, findNumbers } from 'awesome-phonenumber';\n\n// Parse a phone number with region code\nconst pn = parsePhoneNumber('0707123456', { regionCode: 'SE' });\nconsole.log(pn.valid); // true\nconsole.log(pn.number?.e164); // +46707123456\nconsole.log(pn.number?.international); // +46 70 712 34 56\nconsole.log(pn.number?.national); // 070-712 34 56\n\n// Parse an E164 number\nconst pn2 = parsePhoneNumber('+46707123456');\nconsole.log(pn2.valid); // true\n\n// Find phone numbers in text\nconst text = 'Call me at +1 555-123-4567 or +46 70 712 34 56';\nconst found = findNumbers(text);\nconsole.log(found.length); // 2\nfound.forEach(f => {\n  console.log(f.phoneNumber.number?.e164);\n});","lang":"typescript","description":"Demonstrates parsing phone numbers with region code, E164 format, and extracting numbers from text using findNumbers()."},"warnings":[{"fix":"Use { regionCode: 'SE' } instead of 'SE' as second argument.","message":"v7.0.0 changed parsePhoneNumber second argument from string to object","severity":"breaking","affected_versions":">=7.0.0"},{"fix":"Upgrade to Node >=18.","message":"v6.0.0 dropped Node 16 support","severity":"breaking","affected_versions":">=6.0.0"},{"fix":"Upgrade to Node >=14 (v6 requires >=18).","message":"v5.0.0 dropped Node 12 support","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Use parsePhoneNumber() function instead.","message":"v4.0.0 removed constructor-based API (new PhoneNumber())","severity":"deprecated","affected_versions":">=4.0.0"},{"fix":"if (pn.valid) { console.log(pn.number.e164); }","message":"parsePhoneNumber returns an object with nullable fields; always check .valid before accessing .number","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"Ensure Node >=18 for server-side, or bundle with webpack/etc for browser.","message":"Node >=18 required; no mention of browser support but library works in webpack/bundlers","severity":"gotcha","affected_versions":">=6.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use `import { parsePhoneNumber } from 'awesome-phonenumber'`","cause":"Default import used instead of named import","error":"TypeError: parsePhoneNumber is not a function"},{"fix":"Use `{ regionCode: 'SE' }` instead of `'SE'`","cause":"Passed string as second argument in v7+ instead of object","error":"Error: Invalid region code"},{"fix":"Check `pn.valid` before accessing `pn.number`","cause":"Attempted to access .number without checking .valid first","error":"Type error: Property 'number' does not exist on type 'PhoneNumber'"},{"fix":"Run `npm install awesome-phonenumber` and import correctly","cause":"Package not installed or wrong import path","error":"Cannot find module 'awesome-phonenumber'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}