{"id":19851,"library":"eslint-plugin-no-function-declare-after-return","title":"eslint-plugin-no-function-declare-after-return","description":"An ESLint plugin that enforces a code style rule disallowing function declarations after a return statement within the same scope. Version 1.1.0 is the latest stable release, with auto-fix support added in this version. The plugin is mature, actively maintained, and has no known security issues. It differs from ESLint's built-in no-unreachable rule by focusing specifically on hoisted function declarations after return, which are syntactically valid but harm readability. The plugin is lightweight with zero runtime dependencies besides ESLint.","status":"active","version":"1.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/bhumijgupta/eslint-plugin-no-function-declare-after-return","tags":["javascript","eslint","eslint-plugin","eslintplugin","function","declaration","after","return"],"install":[{"cmd":"npm install eslint-plugin-no-function-declare-after-return","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-no-function-declare-after-return","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-no-function-declare-after-return","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"The rule is namespaced under the plugin name, unlike built-in rules. Always use 'no-function-declare-after-return/no-function-declare-after-return'.","wrong":"// Incorrect: { \"rules\": { \"no-function-declare-after-return\": \"error\" } } (omits plugin name prefix)","symbol":"plugin","correct":"// In .eslintrc: { \"plugins\": [\"no-function-declare-after-return\"], \"rules\": { \"no-function-declare-after-return/no-function-declare-after-return\": \"error\" } }"},{"note":"For ESLint 9+ flat config, import the plugin and spread its config. The recommended config includes the rule.","wrong":"// Incorrect: using .eslintrc style with flat config or importing incorrectly","symbol":"flat config (ESLint 9+)","correct":"import noFunctionDeclareAfterReturn from 'eslint-plugin-no-function-declare-after-return';\nexport default [noFunctionDeclareAfterReturn.configs.recommended];"},{"note":"Require the plugin package, not the rule file. The plugin object is exported as a default.","wrong":"// Incorrect: const plugin = require('eslint-plugin-no-function-declare-after-return/no-function-declare-after-return');","symbol":"CommonJS require","correct":"const plugin = require('eslint-plugin-no-function-declare-after-return');\n// In .eslintrc: plugins: [\"no-function-declare-after-return\"], rules: { ... }"}],"quickstart":{"code":"// .eslintrc.js\nmodule.exports = {\n  plugins: ['no-function-declare-after-return'],\n  rules: {\n    'no-function-declare-after-return/no-function-declare-after-return': 'error',\n  },\n};\n\n// Example file that will fail:\nfunction foo() {\n  return 1;\n  function bar() { return 2; }\n}","lang":"javascript","description":"Configures ESLint to disallow function declarations after return, with a failing example."},"warnings":[{"fix":"Use ESLint's 'no-unreachable' rule to catch truly unreachable code.","message":"This rule enforces a stylistic preference; it does not prevent runtime errors because function declarations are hoisted.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Upgrade to >=1.0.0 and use the rule as described in the README.","message":"Version 1.0.0 was the initial release; rules and plugin name may mismatch in early versions.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Always use 'no-function-declare-after-return' as the plugin name in .eslintrc, but the npm package name is the same.","message":"The package name 'no-function-declare-after-return' used in install instructions may be mistaken for the plugin name; the plugin is imported as 'eslint-plugin-no-function-declare-after-return'.","severity":"deprecated","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":"npm install --save-dev eslint-plugin-no-function-declare-after-return and ensure the rule name is 'no-function-declare-after-return/no-function-declare-after-return'.","cause":"The rule name is incorrectly spelled or the plugin isn't installed.","error":"Error: Failed to load plugin 'no-function-declare-after-return': Unable to load rule 'no-function-declare-after-return/no-function-declare-after-return'"},{"fix":"Add 'no-function-declare-after-return' to the plugins array and prefix the rule: 'no-function-declare-after-return/no-function-declare-after-return'.","cause":"Used rule name without plugin prefix in flat config or missing plugin declaration.","error":"ESLint: Configuration for rule 'no-function-declare-after-return' is unknown"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}