{"id":19897,"library":"eslint-plugin-react-intl","title":"eslint-plugin-react-intl","description":"ESLint plugin providing linting rules for react-intl internationalization. Includes rules like string-is-marked-for-translation (catches untranslated strings in FormattedMessage components) and is-valid-icu-message-syntax (validates ICU message syntax in defaultMessage). Works with react-intl 2.0 and ESLint 1.x/2.x. No updates since v1.1.2 (2016); essentially abandoned.","status":"abandoned","version":"1.1.2","language":"javascript","source_language":"en","source_url":null,"tags":["javascript"],"install":[{"cmd":"npm install eslint-plugin-react-intl","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-react-intl","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-react-intl","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; plugin requires ESLint to function.","package":"eslint","optional":true}],"imports":[{"note":"Load as a plugin in .eslintrc, not a rule.","wrong":"use eslint-plugin-react-intl as a rule directly","symbol":"plugin","correct":"plugins: ['react-intl']"},{"note":"Rules are namespaced under 'react-intl/'.","wrong":"\"string-is-marked-for-translation\": \"error\"","symbol":"rule: string-is-marked-for-translation","correct":"\"react-intl/string-is-marked-for-translation\": \"error\""},{"note":"Same namespace requirement.","wrong":"\"is-valid-icu-message-syntax\": \"error\"","symbol":"rule: is-valid-icu-message-syntax","correct":"\"react-intl/is-valid-icu-message-syntax\": \"error\""}],"quickstart":{"code":"// Install: npm install eslint eslint-plugin-react-intl\n// .eslintrc.json\n{\n  \"plugins\": [\"react-intl\"],\n  \"rules\": {\n    \"react-intl/string-is-marked-for-translation\": \"error\",\n    \"react-intl/is-valid-icu-message-syntax\": \"error\"\n  }\n}\n\n// Example component\nimport { FormattedMessage } from 'react-intl';\n\nfunction MyComponent() {\n  return (\n    <div>\n      <FormattedMessage id=\"greeting\" defaultMessage=\"Hello, {name}!\" values={{ name: 'World' }} />\n      <span>Untranslated string</span>  <!-- this will trigger error -->\n    </div>\n  );\n}","lang":"javascript","description":"Demonstrates plugin setup in .eslintrc and a React component that triggers the string-is-marked-for-translation rule."},"warnings":[{"fix":"Use with react-intl@2.x only. Consider migration to formatjs/eslint-plugin-formatjs for newer react-intl.","message":"Rules are only tested with react-intl 2.0; may not work with later versions.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use eslint-plugin-formatjs instead for maintained react-intl linting.","message":"Plugin is not maintained; no updates since 2016. ESLint 1.x/2.x configuration (ecmaFeatures/jsx) may be outdated for modern ESLint.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run: npm install eslint-plugin-react-intl --save-dev","cause":"Plugin not installed or missing from node_modules.","error":"Error: Cannot find module 'eslint-plugin-react-intl'"},{"fix":"Ensure plugin is in 'plugins' array and rules are prefixed: \"react-intl/string-is-marked-for-translation\": \"error\"","cause":"Rule used without 'react-intl/' prefix or plugin not specified.","error":"ESLint configuration error: The rule 'string-is-marked-for-translation' is not configured."},{"fix":"Add parserOptions: { ecmaFeatures: { jsx: true } } to .eslintrc (ESLint 2+)","cause":"ESLint not configured to parse JSX.","error":"Parsing error: Unexpected token <"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}