text:
Jest 26 cannot test Web Components

Since jsdom 16 adds support to custom elements, this PR also enables users to test their custom web components like this:

import MyCustomElement from './MyCustomElement'

describe('Playlist', () => {
    beforeEach(() => {
        window.customElements.define('my-custom-element', MyCustomElement)
    })

    it('attributes are empty by default', () => {
        const customElement = document.createElement('my-custom-element')

        customElement.setAttribute('title', 'My Custom Title')

        expect(customElement.shadowRoot.querySelector('.title').innerHTML).toBe('My Custom Title')
    })
})

Originally posted by @vibaiher in https://github.com/facebook/jest/issues/9606#issuecomment-604063772
I tried to reproduce this code (pls ignore "!", it is TypeScript):
import { LitElement, html } from 'lit-element'

class MyCustomElement extends LitElement {
  render() {
    return html`<div class="title">My Custom Title</div>`
  }
}

describe('Playlist', () => {
    beforeEach(() => {
        window.customElements.define('my-custom-element', MyCustomElement)
    })

    it('attributes are empty by default', () => {
        const customElement = document.createElement('my-custom-element')!

        expect(customElement.shadowRoot!.querySelector('.title')!.innerHTML).toBe('My Custom Title')
    })
})

and this is the result:
TypeError: Cannot read property 'innerHTML' of null

      15 |         const customElement = document.createElement('my-custom-element')!
      16 |
    > 17 |         expect(customElement.shadowRoot!.querySelector('.title')!.innerHTML).toBe('My Custom Title')
         |                                                                  ^
      18 |     })
      19 | })
      20 |

      at Object.<anonymous> (__tests__/test.spec.ts:17:66)

No longer use LitElement and TypeScript, get exactly the same result.
class MyCustomElement extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: 'open' })
  }

  connectedCallback() {
    this.shadowRoot.innerHTML = `

My Custom Title

    `
  }
}

describe('Playlist', () => {
  it('attributes are empty by default', () => {
    window.customElements.define('my-custom-element', MyCustomElement)
    const customElement = document.createElement('my-custom-element')

    expect(customElement.shadowRoot.querySelector('.title').innerHTML).toBe('My Custom Title')
  })
})

    TypeError: Cannot read property 'innerHTML' of null

      17 |     const customElement = document.createElement('my-custom-element')
      18 |
    > 19 |     expect(customElement.shadowRoot.querySelector('.title').innerHTML).toBe('My Custom Title')
         |            ^
      20 |   })
      21 | })
      22 |

      at Object.<anonymous> (__tests__/test.spec.js:19:12)

No longer use LitElement and TypeScript, get exactly the same result.
class MyCustomElement extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: 'open' })
  }

  connectedCallback() {
    this.shadowRoot.innerHTML = `

My Custom Title

    `
  }
}

describe('Playlist', () => {
  it('attributes are empty by default', () => {
    window.customElements.define('my-custom-element', MyCustomElement)
    const customElement = document.createElement('my-custom-element')

    expect(customElement.shadowRoot.querySelector('.title').innerHTML).toBe('My Custom Title')
  })
})

    TypeError: Cannot read property 'innerHTML' of null

      17 |     const customElement = document.createElement('my-custom-element')
      18 |
    > 19 |     expect(customElement.shadowRoot.querySelector('.title').innerHTML).toBe('My Custom Title')
         |            ^
      20 |   })
      21 | })
      22 |

      at Object.<anonymous> (__tests__/test.spec.js:19:12)

Do you have a reproduce repo ? It is required in the bug template to let others easily help.

Do you have a reproduce repo ? It is required in the bug template to let others easily help.

I found the reason, the example is wrong. Use the following code, it can pass the test.
class MyCustomElement extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: 'open' })
  }

  connectedCallback() {
    this.shadowRoot.innerHTML = `

My Custom Title

    `
  }
}

window.customElements.define('my-custom-element', MyCustomElement)

test('test', () => {
  document.body.innerHTML = '<my-custom-element></my-custom-element>'

  const element = document.querySelector('my-custom-element')

  expect(element.shadowRoot.querySelector('.title').innerHTML).toBe('My Custom Title')
})

Although I still can't get the LitElement version to pass the test, it may be another issue.

I found the reason, the example is wrong. Use the following code, it can pass the test.
class MyCustomElement extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: 'open' })
  }

  connectedCallback() {
    this.shadowRoot.innerHTML = `

My Custom Title

    `
  }
}

window.customElements.define('my-custom-element', MyCustomElement)

test('test', () => {
  document.body.innerHTML = '<my-custom-element></my-custom-element>'

  const element = document.querySelector('my-custom-element')

  expect(element.shadowRoot.querySelector('.title').innerHTML).toBe('My Custom Title')
})

Although I still can't get the LitElement version to pass the test, it may be another issue.

authors: BlackGlory ahnpnl

repo: facebook/jest


text:
[Bug]: Coverage is not being outputted if 'summary' is listed as a reporter

Version
"jest": "^29.5.0",
Steps to reproduce

Install jest-silent-reporter version 0.5.0.
In jest.config.ts, set collectCoverage to true.
In jest.config.ts, set reporters like so:

reporters: [
    [
      'jest-silent-reporter',
      {
        useDots: true,
        showWarnings: true,
        showPaths: true,
      },
    ],
  ]

Run the tests (hereinafter "First run").
In jest.config.ts, add summary as the final reporter under reporters like so:

reporters: [
    [
      'jest-silent-reporter',
      {
        useDots: true,
        showWarnings: true,
        showPaths: true,
      },
    ],
    'summary',
  ],

Run the tests (hereinafter "Second run").

Expected behavior
The coverage report is being printed both in the first and second runs.
Actual behavior
The coverage report is being printed only in the first run.
Additional context
I can see a conversation about it here: PR 12687, but I don't understand what needs to be done, and can't respond there.
Environment
System:
    OS: macOS 10.15.7
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
  Binaries:
    Node: 18.13.0 - /usr/local/bin/node
    npm: 8.19.3 - /usr/local/bin/npm
  npmPackages:
    jest: ^29.5.0 => 29.5.0

Hm.. Do you have some repo to look at? Does not reproduce for me:

Ok, so I copied my repo, and then started removing files from it, and, at some point, it was fixed.
So I returned the files, started to try to understand what happened, and came to the following conclusion:
The coverage is printed either way, right after the dots part, but when the summary reporter is listed, it is followed by a section with the title Summary of all failing tests, which probably repeats the error log of failed tests once again.
In my case, many tests are currently failing and with a lot of differences - so you'll have to scroll up a lot in order to find the coverage part that has many error log lines both before and after it, and it's really hard to find it.
Any suggestions?
Why does the summary list the errors again?

I've outputted both outputs and compared them.
With summary on the left, without on the right.
As you can see by the scroll bar, the left side has much more output, and it's hiding the coverage section in the middle of a huge pile of data.
Without it, the coverage section at the end of the file, as expected.

You've nailed it! Thx!

source: gharchive/issue

authors: Asaf-S mrazauskas

license: MIT

license_type: permissive

license_source: github-api


text:
preset config option not recognized when there are projects

Do you want to request a feature or report a bug?
Bug
What is the current behavior?
preset property in project config is ignored. Repro steps:
npm install -g jest
git clone -b jest-6026 https://github.com/melissachang/repro-issues.git
cd repro-issues
npm install
jest

Test fails because preset in package.json is not recognized.
 FAIL   e2e  tests/e2e/test.js
  ● Test suite failed to run

    ENOENT: no such file or directory, open '/tmp/jest_puppeteer_global_setup/wsEndpoint'

      at PuppeteerEnvironment.setup (node_modules/jest-environment-puppeteer/lib/PuppeteerEnvironment.js:32:37)

package.json:
  "jest": {
    "projects": [
      {
        "displayName": "unit",
        "testMatch": [
          "<rootDir>/tests/unit/*.test.js"
        ]
      },
      {
        "displayName": "e2e",
        "preset": "jest-puppeteer",
        "testMatch": [
          "<rootDir>/tests/e2e/*.js"
        ]
      }
    ]
  }

What is the expected behavior?
preset should be recognized when running tests/e2e/test.js.

Move preset out of projects:

  "jest": {
    "projects": [
      "preset": "jest-puppeteer",
      {
        "displayName": "unit",
        "testMatch": [
          "<rootDir>/tests/unit/*.test.js"
        ]
      },
      {
        "displayName": "e2e",
        "testMatch": [
          "<rootDir>/tests/e2e/*.js"
        ]
      }
    ]
  }

jest still fails. preset is still not recognized when running tests/e2e/test.js.

Delete projects:

  "jest": {
    "preset": "jest-puppeteer"
  }

Finally, jest passes. preset is recognized.
There are several bugs, besides this one, with project configuration: #5938, #5597, #5441, #5260. I'm sure some subset are dupes.
Please provide your exact Jest configuration
jest: v22.4.3
Run npx envinfo --preset jest in your project directory and paste the
results here
/tmp/repro-issues (jest *): npx envinfo --preset jest
npx: installed 1 in 1.381s
(node:23443) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '1' of null
    at e.darwin.process.platform.linux.process.platform.c.run.then.e (/usr/local/google/home/melchang/.npm/_npx/23443/lib/node_modules/envinfo/dist/cli.js:2:94297)
    at <anonymous>
(node:23443) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:23443) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I am facing the same problem. Using two projects, where one specified a jest-puppeteer preset, I can observe the following:
. ENOENT: no such file or directory, open '/var/folders/6l/y62_166d6bgby7fpd_rzgfwh0000gp/T/jest_puppeteer_global_setup/wsEndpoint'

at PuppeteerEnvironment.setup (node_modules/jest-environment-puppeteer/lib/PuppeteerEnvironment.js:32:37)

It looks like this is not an issue with the preset option itself. If I copy the preset config directly into the project configuration the same error happens
{
  "devDependencies": {
    "jest-environment-node": "^22.0.0",
    "jest-puppeteer": "^2.3.0",
    "puppeteer": "^1.3.0"
  },
  "jest": {
    "projects": [
      {
        "displayName": "unit",
        "testMatch": ["<rootDir>/tests/unit/*.test.js"]
      },
      {
        "displayName": "e2e",
        "globalSetup": "jest-environment-puppeteer/setup",
        "globalTeardown": "jest-environment-puppeteer/teardown",
        "testEnvironment": "jest-environment-puppeteer",
        "setupTestFrameworkScriptFile": "expect-puppeteer",
        "testMatch": ["<rootDir>/tests/e2e/*.js"]
      }
    ]
  }
}

Duplicate of https://github.com/facebook/jest/issues/6292

authors: Prinzhorn melissachang nyssen thymikee


text:
[docs, babel-jest] Getting started: "regenerator-runtime is not explicitly required"

The example commands to install babel-jest (in “Additional Configuration > Using Babel”) all include installing the regenerator-runtime package.
Then, there is a note that reads:

Note: Explicitly installing regenerator-runtime is not needed if you use npm 3 or 4 or Yarn

Does this mean regenerator-runtime is required on npm@<3||>4, or this documentation outdated?
If this is the case, maybe we should not include installing regenerator-runtime in the yarn add example, and change the note to mandate installing regenerator-runtime for the minority still using npm version 1.x or 2.x?

Hey @twisty, thanks for working to improve this
Check out the discussion here I think that's where this originated

@rickhanlonii Will check that out, thanks.

The documentation related to regenerator-runtime was removed in #7016. Most probably this is not an issue any more.

Yep, this is no longer relevant. Thanks for the offer, though!

authors: SimenB mrazauskas rickhanlonii twisty


text:
Cannot override transform config

🐛 Bug Report
once babel-jest is installed, then jest automatically loads it.
However, doc says that this behaviour can be overwritten by supplying a transform property to the jest configuration object. This isn't actually working.
To Reproduce
const { runCLI } = require('@jest/core');
const config = {
  transform: {
    '^.+\\.jsx?$': createTransformer({ }),
    showConfig: true,
  },
};

runCLI(config, ['/root-dir']);

StackOverflow
https://stackoverflow.com/questions/56491764/cannot-override-transform-jest-babel-jest
Expected behavior
Jest should use my custom transformer instead of loading babel-jest automatically.
Actual Result
Paste the results here:
{
  ...
  "transform": [
    [
      "^.+\\.[jt]sx?$",
      "/Users/<user>/project/node_modules/babel-jest/build/index.js"
    ]
  ]
};

Docs
https://jestjs.io/docs/en/configuration#transform-object-string-string

Note: if you are using the babel-jest transformer and want to use an additional code preprocessor, keep in mind that when "transform" is overwritten in any way the babel-jest is not loaded automatically anymore. If you want to use it to compile JavaScript code it has to be explicitly defined. See babel-jest plugin

You need to specify the path to a transformer file in the config. That file can then use createTransformer to create a custom configured babel-jest transformer.

authors: hitmands jeysal


text:
Add typeahead watch plugin

Summary
I love the typeahead so much and think Jest should use it internally too!

Codecov Report

Merging #6449 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #6449   +/-   ##
=======================================
  Coverage   63.48%   63.48%
=======================================
  Files         227      227
  Lines        8697     8697
  Branches        4        4
=======================================
  Hits         5521     5521
  Misses       3175     3175
  Partials        1        1

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9c1c3b1...6605e4a. Read the comment docs.

sure

source: gharchive/pull-request

authors: codecov-io cpojer mattphillips


text:
Fix for mocks not working with module name mapper

Summary
Fixes #4262. Closes #7668
There were two bugs with how module name mapper and mocks interact. First, _generateMock was calling _resolveModule method which does not handle mapped modules, and second requireMock was assuming that mapped module was a manual mock.

Test plan
I have added one additional unit test and copied integration test from https://github.com/facebook/jest/pull/7668

Codecov Report

Merging #7787 into master will decrease coverage by 0.06%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #7787      +/-   ##
==========================================
- Coverage   68.34%   68.27%   -0.07%
==========================================
  Files         252      252
  Lines        9707     9684      -23
  Branches        5        6       +1
==========================================
- Hits         6634     6612      -22
+ Misses       3071     3070       -1
  Partials        2        2

Impacted Files
Coverage Δ

packages/jest-resolve/src/index.js
57.5% <100%> (ø)
:arrow_up:

packages/jest-runtime/src/index.js
74.56% <100%> (+1.13%)
:arrow_up:

packages/jest-config/src/normalize.js
82.3% <0%> (-6.25%)
:arrow_down:

packages/jest-cli/src/testResultHelpers.js
72.72% <0%> (-1.56%)
:arrow_down:

packages/jest-cli/src/runJest.js
75% <0%> (-0.95%)
:arrow_down:

packages/jest-runtime/src/ScriptTransformer.js
88.67% <0%> (-0.08%)
:arrow_down:

packages/jest-resolve/src/defaultResolver.js
77.41% <0%> (ø)
:arrow_up:

...us/src/legacy-code-todo-rewrite/jestAdapterInit.js
0% <0%> (ø)
:arrow_up:

packages/jest-jasmine2/src/jasmineAsyncInstall.js
0% <0%> (ø)
:arrow_up:

... and 6 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a61ac1d...18503b9. Read the comment docs.

The names come from the reproduction case - I don't think they matter or takes away from the clarity of the tests

authors: SimenB codecov-io grosto


text:
Concept Docs: Extending Nodes

https://lexical-website-new.vercel.app/docs/concepts/extending-nodes
Write some documentation about extending nodes, why you might want to do it, and how to do it with an example.
This is also the place for any high-level discussion about how node extensions fit into the overall design, but this part can be added later and iterated on.

Basic docs here: https://lexical.dev/docs/concepts/nodes#extending-elementnode
Create more issues for specific improvements.

repo: facebook/lexical


text:
Bug: Pasting emoji at the end clears editor (MaxLength)

https://github.com/facebook/lexical/pull/2296#issuecomment-1141938595
https://user-images.githubusercontent.com/64399555/171148508-4f4dc82d-baeb-4b42-a75a-1bbc2bb20b73.mp4
Lexical version: Latest
Steps To Reproduce

Type any random 30 characters
Copy this emoji 💏 or any other emoji of length 2 (occupying a length of 2, otherwise this emoji is actually of length 11 as shown by '💏'.length which also can be an error if lexical is supposed to treat this as an 11-length emoji, but a....a💏 (28 as) works fine in MaxLength)
Remove a character and paste the emoji at the end (and ONLY at the end, otherwise the behavior is proper)

The current behavior
The entire editor gets cleared and the Block Format dropdown disappears! (I've found out that it is because the blockType of editor gets changed to root after being cleared)
The expected behavior
It shouldn't allow the emoji
Note
I would like to work on this after getting to know a bit more about emoji guidelines as that would help in a better understanding of the functionality!

Fixed in https://github.com/facebook/lexical/pull/2428.

authors: im-adithya trueadm


text:
I just wanna know what's on my clipboard.

Have you ever asked yourself: "what's on my clipboard"?
If so, this PR's got something for you!
FAQ
Is it beautiful?
No.
Does it work?
Probably.
Will it show you what's on your clipboard?
YES! It sure will.
Serious Note
This is behind the isDevPlayground flag, so it will only show up in local environments for now. I'm working on a better design for this, maybe stealing @zurfyx's idea to put it in with the tree view. We can merge it as-is or if people have ideas I can iterate on the UI.
https://user-images.githubusercontent.com/14864325/177725652-804ecdbc-460a-453b-87b6-3f5b90d97bc3.mov

Yes, please! I'm tired of editing packages/lexical-rich-text/src/index.ts to show what's copied in the console!

authors: acywatson fantactuka im-adithya


text:
Fix list selection when first node followed by an element node

Before:
https://github.com/facebook/lexical/assets/7893468/c42aefe5-9842-44db-b72c-9787a7a45766
After:
https://github.com/facebook/lexical/assets/7893468/8e295d84-ebf0-4fb4-952c-7377cb37c14c
Fixes: https://github.com/facebook/lexical/issues/5581

Good one, any chance we can have a test on this before merging?

Of course


text:
Fix selection started from inside of the table

Making it possible to select content beyond the table when starting the selection from inside of the table. In this case the whole table becomes selected similar to the case when selection starts from outside of the table and goes inside. Table selection is replaced with the Range selection
Before:

After:

Allowing to drag a selection from one table to the other without crashing
Fixes the following error:

Thank you, Alex! @zurfyx @acywatson @fantactuka can you give this one a look?

LGTM!

authors: AlexanderReznik ivailop7 zurfyx


text:
Memory usage vs number of leaks across 2 different platforms

I'm running tests of just the initial load of two identical pages across two different web platforms and for platform 1, I see ~80mb of memory usage with 8 leaks. On platform 2, I see ~20mb of memory usage with 11 leaks. Given this information and without looking into the trace (assuming code is minified), would you say that it is possible to make a conclusion whether platform 1 or platform 2 has better memory performance, or would I need to dig deeper?
I was expecting platform 2 to have little to no leaks, so I am surprised by the results, but I'm not sure if low memory usage with high leaks is better than high memory usage with low leaks or not. I'm sure it would be easier to tell if I measured page actions, but platform 2 is not a SPA and therefore I am only testing initial load for both. Thanks in advance

Here are a few things worth mentioning when it comes to evaluating memory performance and memory leaks across platforms and web apps:

Each test scenario may not necessarily be representative of the overall memory performance of a platform. A test scenario covers a specific subset of operations or tasks, and the memory usage of a platform may vary greatly depending on the tasks it's running. Therefore, having higher memory usage in one test scenario does not necessarily mean that one platform's memory performance is inherently better or worse than the other's.
Similarly, the number of memory leaks detected also depends on the specific test scenario and may not be representative of the platform's general performance in terms of memory leaks. It's not a clear-cut case of more memory leaks equating to poorer performance. The platform that has more memory leaks in one scenario might have fewer in another.
The raw number of memory leaks is not always indicative of the impact those leaks have on the system. Different memory leaks can have very different impacts depending on the resources they're holding onto. MemLab clusters memory leaks together and only reports the leak clusters. As a result, it's possible for a platform to have numerous unique memory leak clusters that each leak a small object, while another platform may have fewer clusters, but with each one retaining significantly larger amounts of memory. Therefore, it's not always a straightforward comparison based on the number of leaks alone.

Taking these factors into account, drawing concrete conclusions about memory performance and leaks based solely on the given data can be challenging. It's worth noting that MemLab is primarily designed as a tool for identifying memory leaks and exploring opportunities for memory optimization, rather than as a measurement tool.
A more reliable way to obtain an overview of memory performance is to directly gather data regarding the main thread JavaScript (JS) heap size from the production environment (by using the performance.memory API) and compute the average memory usage as well as the 99th percentile (p99) of memory usage.

In your specific case, you've noted that platform 2 is not a SPA. This means that the JavaScript heap is destroyed and rebuilt after each navigation. While this process may not be ideal for performance due to the constant overhead, it does have a somewhat protective aspect when it comes to memory leaks. Unlike SPAs, where memory leaks can accumulate over time across page navigations, the potential impact of memory leaks in platform 2 might be relatively less severe, as each page load essentially cleans up the JS heap (including memory leaks from previous navigations).

Thanks for the detailed response, really appreciate it! I previously had some assumptions of the factors you listed above so it's good to have this confirmation.

authors: JacksonGL emmaxtung

repo: facebook/memlab


text:
Unable to Generate IPA file and preview on iphone

Command /bin/sh failed with exit code 1

DEST=/Users/spalagani/Library/Developer/Xcode/DerivedData/topups-dbyhlheboyiseocaqmpsephakjjr/Build/Products/Debug-iphoneos/topups.app
node /Users/spalagani/Documents/reachapp/topups/node_modules/react-native/local-cli/cli.js bundle --entry-file index.ios.js --platform ios --dev true --bundle-output /Users/spalagani/Library/Developer/Xcode/DerivedData/topups-dbyhlheboyiseocaqmpsephakjjr/Build/Products/Debug-iphoneos/topups.app/main.jsbundle --assets-dest /Users/spalagani/Library/Developer/Xcode/DerivedData/topups-dbyhlheboyiseocaqmpsephakjjr/Build/Products/Debug-iphoneos/topups.app
bundle: Created ReactPackager
uncaught error Error: Error: Uncaught error in the transformer worker: /Users/spalagani/Documents/reachapp/topups/node_modules/react-native/packager/transformer.js
at index.js:164:37
at tryCallOne (/Users/spalagani/Documents/reachapp/topups/node_modules/promise/lib/core.js:37:12)
at /Users/spalagani/Documents/reachapp/topups/node_modules/promise/lib/core.js:123:15
at flush (/Users/spalagani/Documents/reachapp/topups/node_modules/asap/raw.js:50:29)
at doNTCallback0 (node.js:407:9)
at process._tickCallback (node.js:336:13)
See logs /var/folders/25/6553ppd52cvbjj_wgzz614mc38yd3s/T/react-packager.log
at SocketClient._handleMessage (SocketClient.js:144:23)
at BunserBuf. (SocketClient.js:53:42)
at emitOne (events.js:77:13)
at BunserBuf.emit (events.js:169:7)
at BunserBuf.process (/Users/spalagani/Documents/reachapp/topups/node_modules/bser/index.js:289:10)
at /Users/spalagani/Documents/reachapp/topups/node_modules/bser/index.js:244:12
at doNTCallback0 (node.js:407:9)
at process._tickCallback (node.js:336:13)
Command /bin/sh failed with exit code 1

@facebook-github-bot stack-overflow

authors: damusnet spalagani

repo: facebook/react-native


text:
underlineColorAndroid default color?

What is the default color for this?  Using a third party input that sets it to transparent unless I pass it in, so I simply want to pass the default color.
Can't seem to find it anywhere.

This is backed by a native TextInput on Android, so it probably uses the theme's default. Closing as this is a question and not a bug report.

Definitely a question..
Where do I ask questions?

@JoeRoddy this is covered in the new issue template that you deleted when you opened this issue.

@hramos  Thanks Hector! And thanks for the sass, hope your day gets better. :D

authors: JoeRoddy hramos


text:
TextInput value can't be change during onChangeText [iOS]

[X] I have reviewed the documentation
[X] I have searched existing issues
[X] I am using the latest React Native version

TextInput's value property does not seem to get in sync when changing state via onChangeText.
An example use case would be blocking non numerical characters from the input.
This works on Android though.
Environment
OS: macOS High Sierra 10.13.3
Node: 8.10.0
Yarn: 1.5.1
npm: 5.6.0
Watchman: 4.9.0
Xcode: Xcode 9.3 Build version 9E145
Android Studio: 3.1 AI-173.4697961
react: ^16.3.0-alpha.1 => 16.3.0-rc.0
react-native: 0.54.3 => 0.54.3
Expected Behavior
TextInput value should be equal to state value even when it is modified during onChangeText.
Actual Behavior
TextInput value is not being modified.

I also have the same issue, any luck?

Posted this in the issue I tagged:

The problem is that if you are using onChangeText to do text validation, it will briefly show the undesired character before removing it from the TextInput.
I don't know much about the React Native source code but after taking a brief look at the code, I think there might be a problem in textInputShouldChangeTextInRange in RCTBaseTextInputView.m. I think we should be preventing the text from being added until it comes in via the prop. Not entirely sure.

It seems on iOS, value property is not the one prioritized, instead it shows the actual value typed in. Isn't this supposed to be the same with both platforms?
OT: Why is this getting tag with "needs more information" while I already had it in the first place.

I did some more digging and may have found a temporary fix for my project:
I noticed that onTextInput is a prop that isn't documented anywhere but it's still fired.  In RCTBaseTextInputView.m, towards the end of - (BOOL)textInputShouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text, it does an if check to see if this prop has been passed in and if so, fires the event and outside of the if statement, it returns YES to allow the characters to be added.
For my fix, I just returned NO inside of the if (_onTextInput) check to prevent characters added in before I could do validation.  I also pass _predictedText for text inside of the event instead of text.  This allowed for me to do data validation in the JS layer and then set the new text via props.
I don't think I will be PRing this to React Native since it doesn't seem like a universal fix.  Here is the diff if anyone is interested:
diff --git a/Libraries/Text/TextInput/RCTBaseTextInputView.m b/Libraries/Text/TextInput/RCTBaseTextInputView.m
index d9c47ff16..494d1715e 100644
--- a/Libraries/Text/TextInput/RCTBaseTextInputView.m
+++ b/Libraries/Text/TextInput/RCTBaseTextInputView.m
@@ -276,7 +276,7 @@ - (BOOL)textInputShouldChangeTextInRange:(NSRange)range replacementText:(NSStrin

   if (_onTextInput) {
     _onTextInput(@{
-      @"text": text,
+      @"text": _predictedText,
       @"previousText": previousText,
       @"range": @{
         @"start": @(range.location),
@@ -284,6 +284,8 @@ - (BOOL)textInputShouldChangeTextInRange:(NSRange)range replacementText:(NSStrin
       },
       @"eventCount": @(_nativeEventCount),
     });
+
+    return NO;
   }

   return YES;

+1

Thanks, @rplankenhorn . It works for now. You should submit a PR...

Yeah it should be ideal to mantain the React Native's TextInput API... onChangeText and onChange instead of onTextInput... A lot of compos rely on those previous cited methods.

Upon further testing, I found that modifying textInputShouldChangeTextInRange with the above diff was the wrong approach.  It caused two errors in my project:

TextInputs now missed some characters when they were rapidly entered.
Clearing text using the "X" on the right now resulted in a crash.

The above fix is more robust as it allows for setting the text to an empty string if it's empty because it's been filtered.

+1

+1

Here's a demo about this problem.
https://snack.expo.io/SJsmZ4DRM

Same issue. "Unable to prevent chars to be added on iOS. #19252"

@shergin This issue very serious, controlled mode of TextInput really broken. Can you please look at this? You the only one who create new Text implementation and probably the best person who can fix this properly in align with philosophy of new implementation!

+1

+1

Agreed, this is causing major issues in our app. I have been trying to hack around it, but it leads to a myriad of other issues.

+1

setNewValue = (text) => {
let value = text.replace(/\D/g,'');
console.log('Value => ', value); //Shows the filtered value
this.setState({price: value});
this.forceUpdate(); //forcing update doesn't work too.
}
https://snack.expo.io/@daveteu/textinput-bug
this.state.price is updated but the textinput field is not.

is there some temporary workaround for this issue?

@megabayt Yes, you can downgrade RN to older version (before Jan 2018). With current version you can't even use old Text component code, because it needs some support code from core that was removed.

is there any plan to fix this in the short term? I can not downgrade because I am using functionality of expo SDK 27 which depends on RN 0.55.X.

+1

If this is a regression, then it was probably caused by one of my changes to RCTBaseTextInputView in the last few months.
https://github.com/facebook/react-native/commit/38197c8230657d567170cdaf8ff4bbb4aee732b8#diff-a5239f085f0beab82ba2c1643be157ac
https://github.com/facebook/react-native/commit/6d9fe455dc815cdce86c00f81c71c9ca0c724964#diff-a5239f085f0beab82ba2c1643be157ac
https://github.com/facebook/react-native/commit/c136c54ff0211e2bf149fab600cd6e295f9d19dd#diff-a5239f085f0beab82ba2c1643be157ac
https://github.com/facebook/react-native/commit/ff70ecf868cf12fc66b45dc1496391d0a1e9011f#diff-a5239f085f0beab82ba2c1643be157ac
To hack around this you could try reverting these.
@ziqichen6 will be looking at this the week of 6/11. It'll be fixed within the next 2 weeks.

@PeteTheHeat At first look mentioned commits can't cause this bug, but I can test it this weekend. Only the last one touches attributedText property...

My issue was solved when I replaced the extends 'Pure Component' by 'Component'.

I created repository react-native-textinput-bug to demonstrate the bug.

+1

react-native 0.56.0-rc still buggy. https://github.com/vovkasm/react-native-textinput-bug/tree/rn-0.56

No Problem:
0.51.0 React 16.0.0 (Original for my project)
0.53.0 React 16.2.0
Cause Problem:
0.54.0 React 16.3.0-alpha.1(Context API), A lot of under-the-covers work on Yoga, iOS's Text and TextInput
0.55.0
0.55.2
0.55.3
0.55.4

Does anyone actively working to fix this? (I'm probably will have some time in near days and can try to deep dive into TextInput code)

I chipped at this problem for a week, and what's happening is that inside RCTBaseTextInputShadowView, there is a comparator for attributedText and previousAttributedText that sets the value of the boolean isAttributedTextChanged
The comparison right now only compares correct strings, so it doesn't update the text if an incorrect character is entered.
One fix I tried was to create a text setter in the file and add a flag that detects whether or not the text has been changed, and if so, also set isAttributedTextChanged to true
However, javascript is a lot slower than native code so then the states get out of sync.

Cool! Then we need one of two things...

Simplify communication protocol between native and js, by making it one-way-truthty, but I can't imagine workable implementation to this, because we need native to control input (it will be very slow if we move that control to js) on one side, and want to js can control input on another...
Implement more complex system that can drop (or compensate) stale states... something like generation counts or time markers. Such system will allow native logic to detect stale data from js and apply proper changes to buffers.

Note: yes it's very abstract thoughts currently... but may be will give you some more concrete insights. I still need to look at the code...

I attempted a fix in this PR but I haven't had time to fix the build issues.  It works and I've manually applied the patch on my project.

@rplankenhorn Are you sure that you change doesn't broke autocomplete and hieroglyphic input methods? (I'm worry because this code compares actual text in textinput and potential text submitted from JS in UI thread but at that point of time, user can already type something that did not known to JS...)

I've been experiencing the same issue, here's a workaround I'm using:
validateUsername(username) {

    // only alphanumerical and underscore
    const filteredUsername = username.replace(/[^\w]/gi, '');

    if(filteredUsername !== username) {
      console.log('forcing update');
      this.setState({ username: filteredUsername + '✕' });
      setTimeout(() => {
        this.setState((previousState) => {
          return { ...previousState, username: previousState.username.replace(/[^\w]/gi, '') };
        });
      }, 0);
    } else {
      this.setState({ username: filteredUsername });
    }
}

I set onChangeText={validateUsername}.  I've noticed that TextInput update doesn't work when new string's length is shorter than the one typed in by the user. When a forbidded character is detected, the code above briefly adds and then removes another forbidden character. This forces TextInput to update where setState alone wouldn't. I'm using a state update function to avoid the state getting out of sync when the user is typing fast.

This is crazy.

This issue still alive? Hmm.

any solution ?

Create a file named TextInputPatch.sh on root directory of project with following code.

cd ../node_modules/react-native/Libraries/Text/TextInput/ && sed -i'' -e '95 i\

(NSString *)text { return [self attributedText].string;}\
(void)setText:(NSString *)text {[self setAttributedText:[[NSAttributedString alloc] initWithString: text]];}' RCTBaseTextInputView.m && cat RCTBaseTextInputView.m && sed -i'' -e '70 i
RCT_EXPORT_VIEW_PROPERTY(text, NSString)' RCTBaseTextInputViewManager.m && cat RCTBaseTextInputViewManager.m

Whenever using npm or yarn command after that make sure you hit command - sh TextInputPatch.sh

Here's my code for people who are looking for a javascript way workaround.
Referred to @tomasz-io 's solution.
just import TextInputBugFix and use as normal TextInput.
import React, { Component } from 'react';
import { TextInput, Platform } from 'react-native';

class TextInputBugFix extends Component {
  constructor(props) {
    super(props);

    this.state = {
      value: undefined,
    }

    this.onChangeText = this.onChangeText.bind(this);
  }

  componentWillReceiveProps(nextProps) {
    if (nextProps.value !== undefined) {
      this.setState({ value: nextProps.value });
    }
  }

  render() {
    return (
      <TextInput
        {...this.props}
        value={this.state.value}
        onChangeText={this.onChangeText} />
    );
  }

  //override onChangeText event
  onChangeText(value) {
    const { onChangeText } = this.props;
    const dummyStr = ' ';
    this.setState({ value: dummyStr + value });
    setTimeout(() => this.setState({ value }, () => {
      if (onChangeText) onChangeText(value);
    }), 0);
  }
}

//use normal TextInput on android
export default Platform.OS === 'ios' ? TextInputBugFix : TextInput;

IIUC, as of 6 months ago the feature of controlled text inputs is effectively no longer supported by React Native.
Does anyone have any insights into how apps have been able to use React Native despite this issue, s.t. it wasn't pressing enough for RN to fix it in 0.55/0.56?
I would imagine many apps need to have an input whose content is restricted by some app logic. So, is it that there's an alternative way of achieving this same user-facing effect, without needing onChangeText? (E.g. something like using a custom component instead of TextInput?)
Or, is it that most apps still use React Native <=0.53 nowadays?

First of all, I thought it's odd that we put the state into value of TextInput and at the same time, changing state from onChangedText. It's like the endless call because chainging state trigger re-render and it triggers onChangedText.
But it actually does not happen. But it's still odd to me.
I didn't look the code in how they managed the bridge though.

@benevbright I'm a bit confused about what you're trying to say or whether it's relevant to this thread at all. If you're simply talking about how controlled-component works, I don't think there is an "endless call" because both setState and re-rendering don't trigger onChangeText. Only a native event will trigger the callback.

Opps. @ycai2 You are right.
I tested it and yes, setState doesn't trigger onChangeText.
Sorry about wrong information.

For workaround.
Option 1. Don't execute setState on onChangeText. Instead, just keep changed TextValue into variable.
Option 2. If you need to execute setState on onChangeText, don't put the relative state into value prop of TextInput, it will re-render TextInput and it will be broken. Instead, set value or defaultValue with using class' variable like this.textValue.

@Rovack do you have a source for the claim that controlled inputs are no longer supported? This would be something major since it strongly deviates from the path that React takes, or am I wrong?

It makes so hard to do some kind of text pattern matching/filtering in inputs with this bug...
We really need a fix asap...

@peterjuras Yes, it does seem like something major, which strongly deviates from React.
That's why it's not clear to me how this could have remained open for this long, and leads me to wonder if I'm missing something.
As @vovkasm points out, this entire issue is the source for this claim.
I suppose inputs do still let a parent access the value of a TextInput, but not change it, and without that functionality it's hard to call an input "controlled".

We also have this issue on 0.56 . Thanks @benevbright for the workaround.

Could somebody share an example of the workaround? @ou2s or @benevbright maybe?

@vdlindenmark the workaround did not work for us. We ended up not using a controlled component on iOS. IMHO, this is a serious bug. Can someone tag people from RN team to check if they are aware of it?

@ou2s They certainly know about this: https://github.com/facebook/react-native/issues/18874#issuecomment-382751382

@benevbright the workarounds didn't work for me. It might be due to the length of the string I'm formatting to... I don't think there is anything we can do on Javascript side to workaround this issue. Although, ideally, RN can just fix it in a upcoming version.

@ycai2 @vdlindenmark
Hi, guys.
I have to say that I'm sorry about it.
I misunderstood the original problem.
After I noticed, I tried to find a workaround with above example for hours.
Nothing is working.
I thought it's the same problem with Korean character problem. (it's another issue)

@benevbright Oh I guess that makes sense. I also thought it was related. I saw a bunch issues that are similar, and some of them were referenced in this thread, so I thought it's the same problem. Thanks for the help though!

Just checking, does https://github.com/facebook/react-native/commit/892212bad2daadd373f4be241e4cd9889b0a1005 fix the issue described in this thread?

@hramos Tested applying these changes on 55.3 and did not fix this issue.

@yairopro Please see my PR #20634 , I tested and it works.

@zhongwuzw I think you picked the wrong guy. I am not able to merge your PR .

@yairopro 😂 I mean my PR may solved the demo you provided.

@zhongwuzw ok. Good word dude 👍. Now let's see how this issue will be resolved with your PR😄

As of RN56:
@rplankenhorn solution breaks onChange/onChangeText, but allow full controlled input (using onKeyPress)
I started of @rplankenhorn solution, and then forwarded a "controlled" flag to RCTBaseTextInputView
which only block textInputShouldChangeTextInRange on controlled input.
I then created a <ControlledTextInput/> module which recreate onChangeText behavior using onKeyPress and onSelectionChange
You can find the module with doc and example here 😀
https://github.com/abelcha/react-native-controlled-input
https://www.npmjs.com/package/react-native-controlled-input

@shergin @PeteTheHeat @cbrevik Still no response? In almost 5 months having this major bug open... Everyone in the community experimenting workarounds and messing their own projects doing regressions because the version released is simply not doing its job correctly.
Its normal to have bugs when features or code restructuring iterations are made, but this 5 month bug resolving threshold, projects absent commitment.
Exactly as @vovkasm said, this is indeed a very strong message for community...

if the textInput text length is longer than state text length,the text can't be change ,I don't want to change objective-c code，so I try a  hack code,like this.      onChangeText={(text)=>{                                 console.log('输入的text',text);                                 if ( parseInt(text)> 999){                                 setTimeout(()=>{this.ref.clear()},10);                                 setTimeout(()=>{this.setState({phoneNo:'999'})},50);                                 }else{                                     this.setState({phoneNo:text});                                 }                                 }}  the core method is clear method, if I clear textInput,the textInput text length is shorter than state text length ,it is workaround for me.

@abelcha thank you for the module, but if this is the way everyone will have to end up using react-native, it would be ridiculous...

It would seem like the source for this bug is in RCTBaseTextInputView.m, if anyone wants to take a stab at fixing this.
Frankly, this is not an issue that has shown up in our own apps, therefore it hasn't become a priority for us to dedicate time to fixing it. Please do send a PR if you'd like to propose a fix.
We're also happy with taking @abelcha's approach of using third party modules; in fact, we're working towards a slimmer React Native core, where components such as Text Inputs might all be imported from npm packages outside of the RN core.

I've been experiencing the same issue, here's a workaround I'm using:
validateUsername(username) {

    // only alphanumerical and underscore
    const filteredUsername = username.replace(/[^\w]/gi, '');

    if(filteredUsername !== username) {
      console.log('forcing update');
      this.setState({ username: filteredUsername + '✕' }); // this character is not alphanumerical 'x', it's a forbidden character '✕' (cross)
      setTimeout(() => {
        this.setState((previousState) => {
          return { ...previousState, username: previousState.username.replace(/[^\w]/gi, '') };
        });
      }, 0);
    } else {
      this.setState({ username: filteredUsername });
    }
}

I set onChangeText={validateUsername}. I've noticed that TextInput update doesn't work when new string's length is shorter than the one typed in by the user but it does work when the new string is the same length but different or when it is longer. When a forbidded character is detected, the code above briefly adds and then removes another forbidden character. This forces TextInput to update where setState alone wouldn't. I'm using a state update function to avoid the state getting out of sync when the user is typing fast.

works for me

I'm concatenating alternated invisible characters to workaround this bug.
Ugly solution:
const inputWorkaround = (() => {
  let workaroundIncrement = 0
  const invisibleCharsArr = [
    String.fromCharCode(28),
    String.fromCharCode(29),
    String.fromCharCode(30),
    String.fromCharCode(31),
  ]
  return {
    getWorkaroundChar: () => {
      workaroundIncrement += 1
      const mod = workaroundIncrement % invisibleCharsArr.length
      return invisibleCharsArr[mod]
    }
  }
})()

class MyComponent extends React.Component {
  render() {
    const prefixedValue = inputWorkaround.getWorkaroundChar() + this.props.value
    return (<TextInput value={prefixedValue} />)
  }
}

I'm concatenating alternated invisible characters to workaround this bug.
Ugly hack:
const inputWorkaround = (() => {
  let workaroundIncrement = 0
  const invisibleCharsArr = [
    String.fromCharCode(28),
    String.fromCharCode(29),
    String.fromCharCode(30),
    String.fromCharCode(31),
  ]
  return {
    getWorkaroundChar: () => {
      workaroundIncrement += 1
      const mod = workaroundIncrement % invisibleCharsArr.length
      return invisibleCharsArr[mod]
    }
  }
})()

class MyComponent extends React.Component {
  render() {
    const prefixedValue = inputWorkaround.getWorkaroundChar() + this.props.value
    return (<TextInput value={prefixedValue} />)
  }
}

You'll probably want to avoid doing this on Android. Some OS versions will print the invisible chars.

Holy crap.
Anyways, bug's fixed by the RN Team.

Anyways, bug's fixed by the RN Team.

Fixed in which version @zaguiini ?

I can confirm, that this bug fixed in RN 0.57, tested with this simple application (branch rn-0.57): https://github.com/vovkasm/react-native-textinput-bug/tree/rn-0.57
Also some flicker exists, it's currently unavoidable due to inter threads communication with controlled text inputs (information should move between UI and JS threads).

I too have the issue with 0.57

@paramadeep Can you create reproducible example as in https://github.com/vovkasm/react-native-textinput-bug/ ?

Can someone point me to the commit that fixed it?

@danReynolds, I think it is https://github.com/facebook/react-native/commit/2307ea60d03edd234511bfe32474c453f30c1693

This is in 0.57.1.

authors: Jerameel JongLim107 Kaniz92 PeteTheHeat Rovack VicEsquivel Victorams VladimirLogachev YogendraShelke abelcha andersonveiga benevbright danReynolds daveteu didjo972 dylansmurray erickreutz fernandofranca hramos isaacloft jackmew jamesmckeon jwaldrip khsily leonelpena lironsher megabayt nimamyscreen ou2s paramadeep peterjuras plimerence rplankenhorn stephenkopylov tomasz-io vdlindenmark vovkasm yairopro ycai2 zaguiini zaguini zhongwuzw ziqichen6


text:
[TabBarIOS] TabBarIOS.Item label kerning scrunched after navigator.pop()

I've run into a strange issue where the label character spacing of a TabBarIOS.Item is reduced (scrunched) after a navigator.pop().
This is happening in an app I'm about to push to production but I've also gone ahead and created an example on React Native Playground here: https://rnplay.org/apps/bIXGMQ
To reproduce the issue, tap "Push" on Tab A and then switch over to Tab B and tap on "Pop". Notice the difference in label kerning on the tabs at the bottom.
The example is running on v0.6.0 but I can confirm that this is happening for me currently in v0.8.0-rc.

@dizlexik - do you have a chance to look into this? Nobody on the team is currently working on TabBarIOS
@ericvicenti - do you have any idea why this might be happening to help guide @dizlexik or other interested contributors?

I'm a little out of my element when it comes to native iOS development, but I did find this (http://stackoverflow.com/q/27064138/1946792) and the two answers look promising. I imagine something may need to be changed within /React/Views/RCTTabBarItem.m but that's about the extent to which I can help out on this. Sorry :/

Nice find @dizlexik! If someone is interested in looking into this further, feel free to claim this issue! I can help with a code review

My guess is that Navigator when zeros the width of the scene that is covered up, that triggers some layout bug in UITabBar. A potential fix for this specific issue and one that seems generally less disruptive would be to zero its height instead.

Interesting idea @ide, a great starting point if someone wants to have a crack at fixing this!

authors: brentvatne dizlexik ide


text:
Warning: Cannot update during an existing state transition (such as within render ). Render method should be a pure function of props & state

I have tried all sorts of solutions from stackoverflow but still I am getting this error whenever I login with correct details to home screen. I have uploaded my code on github , you can see that.
https://github.com/borbhuiyagulsan/uber

The solution I got on my own is I have imported mapView from react-native-maps instead of expo
import MapView from 'react-native-maps';


text:
[0.76.0] fresh install - ios doesn't build

Description
a fresh install of react native 0.76 can't build on ios
Steps to reproduce

create a fresh 0.76 project npx @react-native-community/cli init reaswipeable --version 0.76.0
npx react-native run-ios

i also tried, cd ios && bundle exec pod install before running the app
React Native Version
0.76.0
Affected Platforms
Build - MacOS
Areas
Other (please specify)
Output of npx react-native info
info Fetching system and libraries information...
(node:65073) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
System:
  OS: macOS 14.6.1
  CPU: (10) arm64 Apple M1 Max
  Memory: 3.74 GB / 64.00 GB
  Shell:
    version: 3.7.1
    path: /opt/homebrew/bin/fish
Binaries:
  Node:
    version: 21.6.2
    path: ~/.local/state/fnm_multishells/1047_1729280623995/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 10.2.4
    path: ~/.local/state/fnm_multishells/1047_1729280623995/bin/npm
  Watchman:
    version: 2024.10.14.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/jbrodriguez/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.5
      - iOS 17.5
      - macOS 14.5
      - tvOS 17.5
      - visionOS 1.2
      - watchOS 10.5
  Android SDK: Not Found
IDEs:
  Android Studio: 2023.1 AI-231.9392.1.2311.11255304
  Xcode:
    version: 15.4/15F31d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.12
    path: /usr/bin/javac
  Ruby:
    version: 3.3.0
    path: /Users/jbrodriguez/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.0.0-alpha.2
    wanted: 15.0.0-alpha.2
  react:
    installed: 18.3.1
    wanted: 18.3.1
  react-native:
    installed: 0.76.0
    wanted: 0.76.0
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

### Stacktrace or Logs

```text
###  directly running npx react-native run-ios

╰─❯ npx react-native run-ios
(node:79530) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
info Found Xcode workspace "reaswipeable.xcworkspace"
info Found booted iPhone 15 Pro
info Building (using "xcodebuild -workspace reaswipeable.xcworkspace -configuration Debug -scheme reaswipeable -destination id=3A2F2FE5-F16E-4A17-A676-0B03EB072ACB")

info 💡 Tip: Make sure that you have set up your development environment correctly, by running npx react-native doctor. To read more about doctor command visit: https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor

error export CLANG_WARN_DOCUMENTATION_COMMENTS\=YES
error export CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER\=NO
error export GCC_WARN_UNDECLARED_SELECTOR\=YES
error export VALIDATE_PRODUCT\=NO
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -Wno-shorten-64-to-32 -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/vlog_is_on.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/vlog_is_on.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/glog/src/vlog_is_on.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/vlog_is_on.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/vlog_is_on.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -Wno-shorten-64-to-32 -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/symbolize.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/symbolize.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/glog/src/symbolize.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/symbolize.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/symbolize.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -Wno-shorten-64-to-32 -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/utilities.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/utilities.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/glog/src/utilities.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/utilities.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/utilities.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -Wno-shorten-64-to-32 -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/signalhandler.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/signalhandler.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/glog/src/signalhandler.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/signalhandler.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/signalhandler.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -Wno-shorten-64-to-32 -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/raw_logging.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/raw_logging.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/glog/src/raw_logging.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/raw_logging.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/raw_logging.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -Wno-shorten-64-to-32 -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/logging.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/logging.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/glog/src/logging.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/logging.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/logging.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -Wno-shorten-64-to-32 -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/demangle.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/demangle.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/glog/src/demangle.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/demangle.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/demangle.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Werror\=deprecated-objc-isa-usage -Werror\=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -Wno-implicit-fallthrough -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/fmt.build/Objects-normal/arm64/82b82416624d2658e5098eb0a28c15c5-common-args.resp -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/fmt/fmt-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/fmt.build/Objects-normal/arm64/format.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/fmt.build/Objects-normal/arm64/format.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/fmt/src/format.cc -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/fmt.build/Objects-normal/arm64/format.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/fmt.build/Objects-normal/arm64/format.o
error \=non-modular-include-in-framework-module -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror\=return-type -Wdocumentation -Wunreachable-code -Wno-implicit-atomic-properties -Werror\=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror\=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -Wno-implicit-fallthrough -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -Wunguarded-availability -index-store-path /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Index.noindex/DataStore @/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/e6072d4f65d7061329687fe24e3d63a7-common-args.resp -include /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-prefix.pch -MMD -MT dependencies -MF /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/glog-dummy.d --serialize-diagnostics /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/glog-dummy.dia -c /Users/jbrodriguez/code/reaswipeable/ios/Pods/Target\ Support\ Files/glog/glog-dummy.m -o /Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/glog-dummy.o -index-unit-output-path /Pods.build/Debug-iphonesimulator/glog.build/Objects-normal/arm64/glog-dummy.o
error Failed to build ios project. "xcodebuild" exited with error code '65'. To debug build logs further, consider building your app with Xcode.app, by opening 'reaswipeable.xcworkspace'.
info Run CLI with --verbose flag for more details.

running cd ios && bundle exec pod install
╰─❯ npx react-native run-ios
(node:80506) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
info A dev server is already running for this project on port 8081.
info Found Xcode workspace "reaswipeable.xcworkspace"
info Found booted iPhone 15 Pro
info Building (using "xcodebuild -workspace reaswipeable.xcworkspace -configuration Debug -scheme reaswipeable -destination id=3A2F2FE5-F16E-4A17-A676-0B03EB072ACB")

info 💡 Tip: Make sure that you have set up your development environment correctly, by running npx react-native doctor. To read more about doctor command visit: https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor

error export CLANG_WARN_DOCUMENTATION_COMMENTS\=YES
error export CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER\=NO
error export GCC_WARN_UNDECLARED_SELECTOR\=YES
error export VALIDATE_PRODUCT\=NO
error Failed to build ios project. "xcodebuild" exited with error code '65'. To debug build logs further, consider building your app with Xcode.app, by opening 'reaswipeable.xcworkspace'.
info Run CLI with --verbose flag for more details.

### Reproducer

https://github.com/jbrodriguez

### Screenshots and Videos

_No response_

@jbrodriguez Thanks for the issue.
after running bundle install and bundle exec pod install, can you try opening the reaswipeable.xcworkspace file with Xcode and try to build from there?

@cipolleschi sure, here are the last few lines of the xcode output
/Users/jbrodriguez/code/reaswipeable/ios/Pods/../.xcode.env.local: line 1: export: `Support/fnm/node-versions/v21.6.2/installation/bin/node': not a valid identifier
Node found at: /Users/jbrodriguez/Library/Application
/Users/jbrodriguez/Library/Developer/Xcode/DerivedData/reaswipeable-cgsxwhbkujbpstcvtyvnadbxkcve/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/hermes-engine.build/Script-46EB2E00018FC0.sh: line 9: /Users/jbrodriguez/Library/Application: No such file or directory
Command PhaseScriptExecution failed with a nonzero exit code

so, something about node paths

@cipolleschi ok, i quoted the node binary in .xcode.env.local and it works now

seems like this file is generated, just need to escape the path

oh... because you have a space in the path! 🤦
Thanks for figuring this out!

It's fixed by this commit: eeaa3ff458a3e5c902075bb45161d6ccde31fe53
Next week we will release 0.76.1 and we will pick the commit in it: https://github.com/reactwg/react-native-releases/issues/592

Hello, i try all soluce, and all not work for me. Xcode: Version 16.1 (16B40), react-native: 0.76.1

@gh-pro sorry to hear that. I, this morning, run an app on a real device using Xcode 16.1 and react native 76.1.
What happens when you try to build on a real device? Do you see any error?

authors: cipolleschi gh-pro jbrodriguez