JSON.stringify is a conversion to JSON, not a complete view of every JavaScript value. It can omit object properties, turn unsupported array entries into null, or throw an error. A React debug panel can also show only part of a value at first: official React DevTools requests component props and state when you select an element and may load nested data as you expand it. To find out what is missing, check both the value itself and how the panel inspects it.
What JSON.stringify omits, changes, or cannot serialize
JSON does not represent every JavaScript type or object relationship. When you stringify a value, the result follows JSON serialization rules, which can differ from what you see in a live debugger.
As an Amazon Associate I earn from qualifying purchases.
| JavaScript value or condition | What JSON.stringify does |
|---|---|
An object property whose value is undefined, a function, or a symbol |
Omits that property from the JSON output. |
An array entry whose value is undefined, a function, or a symbol |
Writes null at that position, preserving the array’s length and index positions. |
| A circular reference | Throws a TypeError; JSON has no built-in representation for a reference that loops back into the structure. |
A BigInt |
Throws a TypeError unless the application changes how it is serialized. |
A value with a toJSON() method, or a value processed by a replacer |
Can produce customized output rather than a straightforward inventory of the object’s properties. |
These outcomes describe serialization; they do not mean React removed a value from props or state. For the precise behavior and examples, see MDN’s JSON.stringify() reference.
Why a React debug panel may show only part of the data
Official React DevTools treats the component tree and a selected component’s data as separate inspection tasks. Its overview describes tree updates that carry metadata such as the element type, IDs, parent and owner IDs, name, and key. Props and state are requested separately in an inspectElement message after you select a component, rather than being sent with every tree update. The React DevTools overview explains that these values can be expensive to serialize and change frequently.
#1 Best Overall
For deeply nested props or state, DevTools can initially send a shallow, “dehydrated” representation, then provide missing data as you expand nested objects or arrays. A value not yet visible may therefore be waiting for inspection, rather than absent from the component. The same overview describes selected-element information being polled about once a second; that is an implementation detail in the repository overview and may change.
React documents Developer Tools as a way to inspect components, edit props and state, and identify performance problems. It provides browser extensions and a standalone react-devtools package for other environments. These documented behaviors apply to official React DevTools; they do not establish how every third-party panel works. See the React Developer Tools documentation and the React DevTools overview.
Rank #2
How to find where a value went
- Check the live JavaScript value. Inspect it in the debugger before concluding that React discarded a prop or state value.
- Check whether it was stringified. Look for
undefined, functions, symbols,BigInt, circular references, a customtoJSON()method, or a replacer. - Select the component and expand its data. In React Developer Tools, open the component’s props or state and expand the relevant nested object or array. Deeper values may be loaded on demand.
- Compare equivalent views. A JSON string is a serialization snapshot. A component inspector can present structured values and load them incrementally.
- Inspect a custom panel’s implementation. Its serializer and renderer determine what it displays; official React DevTools documentation cannot confirm the behavior of a different panel.
JSON snapshot or component inspection?
| Question | JSON.stringify output | Official React DevTools |
|---|---|---|
| What kind of view is it? | A serialized JSON result, subject to JSON’s type and reference rules. | A structured component inspection; props and state are requested after selecting an element. |
| Are nested values all present immediately? | Serialization applies to the value being stringified; output is not a lazy component-tree inspection. | Deep values may be represented shallowly at first and filled in as you expand them. |
| Does it preserve every JavaScript value or object identity? | No. Unsupported values may be omitted or replaced, and cycles cause an error. | The overview describes inspection and serialization behavior, but does not establish a guarantee that every JavaScript value or identity is preserved. |
| Is the view a live-updated inspection? | The result is the string produced by that call. | The overview describes selected-element information being polled about once a second; this documented implementation detail may change. |
Do not assume an unfamiliar panel shares either column’s behavior. Its own documentation or code is needed to establish how it serializes, loads, and renders values.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Quick Recap
Best Value
Rank #4
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




