# Enforce that props are read-only (`react/prefer-read-only-props`) 🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). Using Flow, one can define types for props. This rule enforces that prop types are read-only (covariant). ## Rule Details Examples of **incorrect** code for this rule: In Flow: ```jsx type Props = { name: string, } class Hello extends React.Component { render () { return
Hello {this.props.name}
; } } function Hello(props: {-name: string}) { return
Hello {props.name}
; } const Hello = (props: {|name: string|}) => (
Hello {props.name}
); ``` In TypeScript: ```tsx type Props = { name: string; } class Hello extends React.Component { render () { return
Hello {this.props.name}
; } } interface Props { name: string; } class Hello extends React.Component { render () { return
Hello {this.props.name}
; } } ``` Examples of **correct** code for this rule: In Flow: ```jsx type Props = { +name: string, } class Hello extends React.Component { render () { return
Hello {this.props.name}
; } } function Hello(props: {+name: string}) { return
Hello {props.name}
; } const Hello = (props: {|+name: string|}) => (
Hello {props.name}
); ``` In TypeScript: ```tsx type Props = { readonly name: string; } class Hello extends React.Component { render () { return
Hello {this.props.name}
; } } interface Props { readonly name: string; } class Hello extends React.Component { render () { return
Hello {this.props.name}
; } } ```