{"id":41044,"library":"eslint-plugin-zod-v4","title":"eslint-plugin-zod-v4","description":"ESLint plugin for Zod v4 best practices and migration from v3. Current stable version 0.3.0. Actively maintained, with breaking change detection and auto-fix support. Differentiator: educational rule messages, React-aware for memoization, and flat config support for ESLint 9+. Covers all major breaking changes from Zod v3 to v4, such as string format methods, record signature, error handling, and object methods.","status":"active","version":"0.3.0","language":"javascript","source_language":"en","source_url":"https://github.com/Just-mpm/eslint-plugin-zod-v4","tags":["javascript","eslint","eslintplugin","eslint-plugin","zod","zod-v4","validation","schema","typescript"],"install":[{"cmd":"npm install eslint-plugin-zod-v4","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-zod-v4","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-zod-v4","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency: requires ESLint >=9.0.0 for flat config support","package":"eslint","optional":false}],"imports":[{"note":"Plugin is ESM-only; CommonJS require is not supported.","wrong":"const zodPlugin = require('eslint-plugin-zod-v4')","symbol":"default","correct":"import zodPlugin from 'eslint-plugin-zod-v4'"},{"note":"Named import for configs; also ESM-only.","wrong":"const { configs } = require('eslint-plugin-zod-v4')","symbol":"configs","correct":"import { configs } from 'eslint-plugin-zod-v4'"},{"note":"Can access individual rules via the rules object.","wrong":null,"symbol":"rules","correct":"import { rules } from 'eslint-plugin-zod-v4'"}],"quickstart":{"code":"// eslint.config.js\nimport zodPlugin from 'eslint-plugin-zod-v4'\n\nexport default [\n  zodPlugin.configs.recommended,\n  {\n    rules: {\n      'zod-v4/prefer-safeParse': 'warn',\n      'zod-v4/no-throw-in-refine': 'error',\n    },\n  },\n]","lang":"typescript","description":"Minimal flat config for ESLint 9+ using recommended config and custom rules."},"warnings":[{"fix":"Replace z.string().email() with z.email().","message":"z.string().email() is removed in Zod v4; use z.email() instead.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Use z.record(keySchema, valueSchema).","message":"z.record(singleArg) is removed; require two arguments.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Replace error.errors with error.issues.","message":"error.errors is removed; use error.issues instead.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Replace .merge() with .extend().","message":".merge() is removed; use .extend() instead.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Replace .superRefine() with .check().","message":".superRefine() is removed; use .check() instead.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Replace z.nativeEnum() with z.enum().","message":"z.nativeEnum() is removed; use z.enum() instead.","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Use the 'error' param instead of invalid_type_error/required_error.","message":"invalid_type_error/required_error params are deprecated; use 'error' param.","severity":"deprecated","affected_versions":">=0.1.0"}],"env_vars":null,"search_vec":"'0.3.0':20 '9':47 'activ':21 'auto':29 'auto-fix':28 'awar':38 'best':11 'break':24,51 'chang':25,52 'config':43 'cover':48 'current':17 'detect':26 'differenti':32 'educ':33 'error':65 'eslint':2,6,46,71,74 'eslint-plugin':73 'eslint-plugin-zod-v4':1 'eslintplugin':72 'fix':30 'flat':42 'format':61 'handl':66 'javascript':70 'maintain':22 'major':50 'memoiz':40 'messag':35 'method':62,69 'migrat':14 'object':68 'plugin':3,7,75 'practic':12 'react':37 'react-awar':36 'record':63 'rule':34 'schema':81 'signatur':64 'stabl':18 'string':60 'support':31,44 'typescript':82 'v3':16,55 'v4':5,10,57,79 'valid':80 'version':19 'zod':4,9,54,76,78 'zod-v4':77","created_at":"2026-06-04T18:50:30.692161+00:00","updated_at":"2026-06-04T18:50:30.692161+00:00","problems":[{"fix":"Run 'npm install --save-dev eslint-plugin-zod-v4' and ensure it's in node_modules.","cause":"Plugin not installed or not resolved correctly in ESLint config.","error":"Error: Cannot find module 'eslint-plugin-zod-v4'"},{"fix":"Use flat config (eslint.config.js) and import the plugin directly: import zodPlugin from 'eslint-plugin-zod-v4'","cause":"Using legacy eslintrc style with a plugin that only supports flat config.","error":"ESLint couldn't find the config 'plugin:zod-v4/recommended'"},{"fix":"Use ESM import: import { configs } from 'eslint-plugin-zod-v4'","cause":"Trying to destructure configs via CommonJS require.","error":"Cannot read properties of undefined (reading 'recommended')"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/Just-mpm/eslint-plugin-zod-v4#readme","github":"https://github.com/Just-mpm/eslint-plugin-zod-v4","docs":null,"changelog":null,"pypi":null,"npm":"eslint-plugin-zod-v4","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}