Skip to main content
GoodFirstPicks
DashboardIssuesReposLeaderboard

GoodFirstPicks by Leaveitblank © 2026

CreatorRequest a RepoPrivacy PolicyTerms of Service
[Compiler Bug]: non-null assertion on objects produces non working js | GoodFirstPicks

[Compiler Bug]: non-null assertion on objects produces non working js

facebook/react 10 comments 1mo ago
View on GitHub
mediumopenScope: somewhat clearSkill match: maybeReactJavaScriptTypeScript

Why this is a good first issue

The issue involves React Compiler's handling of non-null assertions, requiring deep compiler knowledge.

AI Summary

The issue involves React Compiler incorrectly handling non-null assertions in TypeScript, leading to runtime errors. The fix requires understanding and modifying the compiler's handling of nullable values, particularly in the PropagateScopeDeps pass. The maintainers have acknowledged the issue and started some work, but it remains unresolved.

Issue Description

What kind of issue is this?

  • React Compiler core (the JS output is incorrect, or your app works incorrectly after optimization)
  • babel-plugin-react-compiler (build issue installing or using the Babel plugin)
  • eslint-plugin-react-compiler (build issue installing or using the eslint plugin)
  • react-compiler-healthcheck (build issue installing or using the healthcheck script)

Link to repro

https://playground.react.dev/#N4Igzg9grgTgxgUxALhASwHYBcEwGYCGiABACoJhbAA6GxxOlyxlMmA5gNy0C+ttCAB4AHCDCzE4EDJTIUsAIRgQA1gjoBeYgAoAlMQ0A+YjTqTpsgNqMsAGhYIs5SgF0DtevQBKCIlgB0UGAIAMpYBDjEADxysgA+xBhQADbJxMbaSam63BgexDCOsHTa+fRRhmWeUQBGUFhY0sTSAMLJaHAqBiZ6BsY2BlpZaQD8Dk7y2sA2yNQgNnM8+szBE5SZKcm6PMakEOzsyQjRAPR1DdKVZp7R5410ACZoYAQ1Rw8awACENjzNGG0OiotMBekYpDIIEd-Ml9tobF9-DZtsYAApsbCnO6XKpRE5Xei6Xj8DBCUTicwyCTOLAtMSFOASLRg4ymegQqw2eyrGluDRVHx+QLBMIRY4xGnEBLDdI6YY5En0QpYYo6XEEm63er3f6AzqfFkMeSDRKbYhjHmTYBGpjEOYLEDEJbEFaOGkbbI7Mj7Q7is7anHXarYx7PV7vT4-eR-VrtfWg-RGEzENB4HTIymQaGw9jw+RI+T6Hhe9GYCR4kMa8r4-JEvIYHggHhAA

Repro steps

running the following code will result in a Cannot read properties of null (reading 'test')

interface Test{
  test: string;
}

export const TestBroken = () => {
  const [test, setTest] =
    React.useState < Test | null > (null);

  return (
    <>
      <button onClick = {() => test == null ? setTest({test:"test"}) : setTest(null)}> Toggle </button>
      <button disabled={!test} onClick= {() =>console.log(test!.test)}> Print </button>
    </>
  )
}

this code runs fine when changing the non-null assertion into an if statement:

-      <button disabled={!test} onClick= {() =>console.log(test!.test)}> Print </button>
+     <button disabled={!test} onClick={() => { if (test) console.log(test.test) }}> Print </button>

How often does this bug happen?

Every time

What version of React are you using?

19.1.0

What version of React Compiler are you using?

19.1.0-rc.1

GitHub Labels

Component: React Compiler

Want to work on this?

Claim this issue to let others know you're working on it. You'll earn 10 points when you complete it!

Risk Flags

  • requires understanding of React Compiler internals
  • potential TypeScript integration complexity
Loading labels...

Details

Points10 pts
Difficultymedium
Scopesomewhat clear
Skill Matchmaybe
Test Focusedno