I think my question is more related to how client-side JavaScript works than specifically a React problem but I thought of this question when I am building a React Tab component.

Here is the `Tab` component I was building.

Live demo: <https://codesandbox.io/s/busy-noyce-6kt0p>

```
const Tabs = ({ data, tabPosition = 'up', disabled }) => {
  const [activeIndex, setActiveIndex] = useState(0)
  const tabList = (
    <div data-tab-list>
      {data.map((tab, index) => {
        const isActive = activeIndex === index
        const isDisabled = disabled.includes(index)

        return (
          <div
            data-tab
            key={index}
            className={isDisabled ? 'disabled' : isActive ? 'active' : ''}
            onClick={isDisabled ? undefined : () => setActiveIndex(index)}
          >
            {tab.label}
          </div>
        )
      })}
    </div>
  )

  const tabPanel = <div data-tab-panels>{data[activeIndex].content}</div>

  return (
    <div data-tabs>
      {tabPosition === 'up' ? [tabList, tabPanel] : [tabPanel, tabList]}
    </div>
  )
}

export default Tabs

```

As you can tell, we can disable a tab or tabs by providing this `disabled` prop, which is an array of numbers that indicates the indices of the tabs.

If I do this

```js
        <Tabs data={tabData} tabPosition="up" disabled={[2]} />

```

Then the third tab will be disabled and not clickable so that the user won't be able to see the content behind the tab, i.e. the tab panel.

However I was thinking the other day that, in fact this is all client side JavaScript code we are sending to the user's browser, so the user already has all the info in the code. It is just that React or JavaScript that got shipped prevents him/her from clicking the disabled tab. But is it true that in theory the user can peek into the content since all the code is already in the browser? I imagine if he/she set some sort of breakpoint that fires when the click happens, and modify the code locally when he/she would be able to discover the content behind the disabled tab. However I am not sure how I can achieve that.