Skip to content

[ios][tools]do not log "bonjour not found" at all (unless verbose) - #173569

Merged
auto-submit[bot] merged 4 commits into
flutter:masterfrom
hellohuanlin:xcode_plist_key_not_found_do_not_log_at_all
Aug 12, 2025
Merged

auto-submit[bot] merged 4 commits into
flutter:masterfrom
hellohuanlin:xcode_plist_key_not_found_do_not_log_at_all

Conversation

@hellohuanlin

@hellohuanlin hellohuanlin commented Aug 11, 2025 •

Copy link
Copy Markdown
Contributor

The previous PR #172913 avoids compilation error by not having the "error: " prefix. However, it's still very confusing to have "key not found" printed out in the terminal (either stderr or stdout), despite that it doesn't cause compilation error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the stderr if set to true. We set it for plist extraction, because "not having bonjour key" should be one of the expected "normal" states

We don't want to pipe it to stdout either, because it would be confusing too. I figured people would still file issue if they see it in terminal, even if it's a completely normal state. But not a strong opinion, so let me know if you disagree.

However, under verbose mode, we would pipe it to stdout. This will be consistent with our previous behavior before macOS 26.

List which issues are fixed by this PR. You must list at least one issue. An issue is not required if the PR fixes something trivial like a typo.

Fixes #172627

If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

@hellohuanlin
hellohuanlin requested a review from a team as a code owner August 11, 2025 19:14
@hellohuanlin
hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from 1da37c1 to 4dfb771 Compare August 11, 2025 19:14
@github-actions github-actions Bot added tool Affects the "flutter" command-line tool. See also t: labels. team-ios Owned by iOS platform team labels Aug 11, 2025

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a skipErrorLog flag to suppress expected error messages from plutil, which is a good improvement to reduce confusion from logs. The implementation is clean and the accompanying unit tests are thorough. I have one minor suggestion in the integration test file to improve maintainability by using constants for error messages, consistent with the changes in the unit test file.

@hellohuanlin
hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from 4dfb771 to c1ea468 Compare August 11, 2025 19:18
@hellohuanlin hellohuanlin changed the title [ios][tools]do not log bonjour not found message at all [ios][tools]do not log "bonjour not found" message at all Aug 11, 2025
@hellohuanlin hellohuanlin changed the title [ios][tools]do not log "bonjour not found" message at all [ios][tools]do not log "bonjour not found" at all Aug 11, 2025
], allowFail: true);
ProcessResult result = runSync(
'plutil',
<String>['-extract', 'NSBonjourServices', 'xml1', '-o', '-', builtProductsPlist],

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is by dart format after i added the new parameter

], allowFail: true);
result = runSync(
'plutil',
<String>['-extract', 'NSLocalNetworkUsageDescription', 'xml1', '-o', '-', builtProductsPlist],

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is by dart format after i added the new parameter

Comment thread packages/flutter_tools/test/general.shard/xcode_backend_test.dart
@hellohuanlin
hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from c1ea468 to c5b06ca Compare August 11, 2025 19:39
@hellohuanlin
hellohuanlin marked this pull request as draft August 11, 2025 19:39
@hellohuanlin
hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from c5b06ca to f7d8797 Compare August 11, 2025 19:42
@hellohuanlin

Copy link
Copy Markdown
Contributor Author

i should probably CP this too

@hellohuanlin
hellohuanlin marked this pull request as ready for review August 11, 2025 20:40
@hellohuanlin
hellohuanlin requested a review from vashworth August 11, 2025 20:41
// via stderr (rather than stdout on older macOS), and logging the message
// would be confusing (for either stdout or stderr), since not having the
// key is one of the expected states.
if (!skipErrorLog && resultStderr.isNotEmpty) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we still want these logs to show if in verbose mode. The way this is now, they won't show in verbose.

I think what you'll want to do is that is skipErrorLog is true, don't write it to streamOutput or echoError. Unless we're in verbose mode, then do write it to echoError.

@hellohuanlin hellohuanlin Aug 11, 2025 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vashworth my understanding:

First of all, we don't want to show the message in non-verbose mode for sure, since not having the key is an expected state (also the most common state). We don't want to scream this out in almost every flutter run. I think we already agree on that.

Secondly, no matter verbose or not, we shouldn't echoError, since semantically speaking, to our bonjour logic, not having the key is not an error, but one of the expected states - definitely not an error.

Now the question is, under verbose mode, do we want to pipe the stderr message to stdout? I am leaning towards not to do so, because it's still very confusing to see "Could not extract value, error: No value at that key path or invalid key path: NSBonjourServices", which clearly reads like stderr, not stdout (I suspect apple probably also thinks it's weird to be in stdout, so they moved it to stderr on macOS 26). Though this is not a strong opinion (51%-ish), so if you insist, I am open to pipe it to stdout under verbose mode. The new code will look something like:

    // ...
    if (resultStderr.isNotEmpty) {
      // ...

      if (skipErrorLog) {
        // Even if we skip error, we still want to pipe it to stdout under verbose mode.
        if (verbose) {
          echo(errorOutput.toString());
        }
      } else {
        echoError(errorOutput.toString());
      }

@hellohuanlin hellohuanlin Aug 11, 2025 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

^ actually, thinking about the 3rd point more, piping it to stdout under verbose mode is probably fine, since we were printing that string already before macOS 26 (i.e. piping to stdout would make it consistent with our previous behavior before macOS 26)

@hellohuanlin
hellohuanlin requested a review from vashworth August 11, 2025 23:17
@hellohuanlin hellohuanlin changed the title [ios][tools]do not log "bonjour not found" at all [ios][tools]do not log "bonjour not found" at all (unless verbose) Aug 12, 2025
/// @param skipErrorLog If set, will skip stderr in non-verbose mode, and pipe
/// stderr to stdout in verbose mode.
/// @param workingDirectory The current working directory to run the command.
/// @throws [Exception] if the exit code is not 0.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@param and @throws isn't really supported in Dart.

If you want to give definitions to arguments, you can use brackets to refer to arguments: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#leave-breadcrumbs-in-the-comments

For example

  /// Run given command ([bin]) in a synchronous subprocess.
  ///
  /// If [allowFail] is true, an exception will not be thrown even if the process returns a 
  /// non-zero exit code. Also, `error:` will not be prefixed to the output to prevent Xcode 
  /// complication failures.
  /// 
  /// If [skipErrorLog] is true, `stderr` from the process will not be output unless in [verbose] 
  /// mode. If in [verbose], pipes `stderr` to `stdout`.
  /// 
  /// Will throw [Exception] if the exit code is not 0.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oof, gemini isn't a good excuse - i should've double checked.

@vashworth vashworth left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hellohuanlin LGTM after you update the comment

@hellohuanlin
hellohuanlin force-pushed the xcode_plist_key_not_found_do_not_log_at_all branch from 1c2eb1b to 97e366d Compare August 12, 2025 17:27
// An example is on macOS 26, plutil reports NSBonjourServices key not found
// via stderr (rather than stdout on older macOS), and logging the message
// in stderr would be confusing, since not having the key is one of the expected states.
if (verbose) {

@jmagman jmagman Aug 12, 2025 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer to always log errorOutput in verbose mode, even in the Bonjour case. There may be other errors that command generates that we will want to see to triage.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmagman yes in verbose mode, all will be logged. The logic is:

skipErrorLog { // true for bonjour
  if verbose {
    log to stdout ("key not found" shouldn't be an "error" or "warning" - rather one of the expected states)
  } else {
    do not log
  }
} else { // don't change for other features
  log to stderr
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah gotcha, I can't read.

@hellohuanlin hellohuanlin added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 12, 2025
@auto-submit
auto-submit Bot added this pull request to the merge queue Aug 12, 2025
Merged via the queue into flutter:master with commit b581cda Aug 12, 2025
@hellohuanlin hellohuanlin added the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
@auto-submit

auto-submit Bot commented Aug 15, 2025

Copy link
Copy Markdown
Contributor

Time to revert pull request flutter/flutter/173569 has elapsed.
You need to open the revert manually and process as a regular pull request.

@auto-submit auto-submit Bot removed the revert Autorevert PR (with "Reason for revert:" comment) label Aug 15, 2025
github-merge-queue Bot pushed a commit that referenced this pull request Aug 16, 2025
…bose)" (#173879)

Reverts #173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
github-merge-queue Bot pushed a commit that referenced this pull request Aug 20, 2025
…de (#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries #173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes #172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
flutteractionsbot pushed a commit to flutteractionsbot/flutter that referenced this pull request Aug 21, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
flutteractionsbot pushed a commit to flutteractionsbot/flutter that referenced this pull request Aug 21, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
SydneyBao pushed a commit to SydneyBao/flutter that referenced this pull request Aug 22, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Jaineel-Mamtora pushed a commit to Jaineel-Mamtora/flutter_forked that referenced this pull request Sep 24, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 12, 2025
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…lutter#173569)

The previous PR flutter#172913 avoids
compilation error by not having the "error: " prefix. However, it's
still very confusing to have "key not found" printed out in the terminal
(either stderr or stdout), despite that it doesn't cause compilation
error anymore.

This PR introduces a new flag "skipErrorLog" which skips logging the
`stderr` if set to true. We set it for plist extraction, because "not
having bonjour key" should be one of the expected "normal" states

<s> We don't want to pipe it to `stdout` either, because it would be
confusing too. I figured people would still file issue if they see it in
terminal, even if it's a completely normal state. But not a strong
opinion, so let me know if you disagree. </s>

However, under verbose mode, we would pipe it to `stdout`. This will be
consistent with our previous behavior before macOS 26.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…bose)" (flutter#173879)

Reverts flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/e4f27cd09734db6c6ed94e104ab5333c48dfc544/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…de (flutter#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
creatorpiyush pushed a commit to creatorpiyush/packages that referenced this pull request Jun 10, 2026
Roll Flutter from e2a347b to 34c2a3b (41 revisions)

flutter/flutter@e2a347b...34c2a3b

2025-08-13 [email protected] [ Tool ] Mark Linux_pixel_7pro linux_chrome_dev_mode as bringup (flutter/flutter#173646)
2025-08-13 [email protected] [ Widget Preview ] Move `--dtd-url` from a global flag to a `widget-preview start` option (flutter/flutter#173712)
2025-08-13 [email protected] Null aware elements clean-ups (flutter/flutter#173074)
2025-08-13 [email protected] Roll Skia from 29e3e1ab7f62 to f7fdda3cd0e6 (3 revisions) (flutter/flutter#173709)
2025-08-13 [email protected] Regular windows win32 engine (flutter/flutter#173424)
2025-08-13 [email protected] Roll Dart SDK from a098cb676fd6 to 73153bdc1459 (1 revision) (flutter/flutter#173708)
2025-08-13 [email protected] Roll Fuchsia Linux SDK from vgv-rTf7i9PfcDq2Y... to I1TfNmsqTp7t3rO8e... (flutter/flutter#173690)
2025-08-13 [email protected] Roll Skia from 1170405c30cf to 29e3e1ab7f62 (2 revisions) (flutter/flutter#173689)
2025-08-13 [email protected] Roll Dart SDK from e2b7aec7333e to a098cb676fd6 (4 revisions) (flutter/flutter#173683)
2025-08-13 [email protected] Roll Skia from d06fdf03c6a1 to 1170405c30cf (4 revisions) (flutter/flutter#173681)
2025-08-13 [email protected] Roll Skia from 9ed4b4e53db2 to d06fdf03c6a1 (11 revisions) (flutter/flutter#173661)
2025-08-12 [email protected] Fix GTK redraw call being called from non-GTK thread. (flutter/flutter#173602)
2025-08-12 [email protected] [Impeller] Apply Y coordinate scaling when sampling from the destination texture in framebuffer advanced blends (flutter/flutter#173639)
2025-08-12 [email protected] Fix directional focus in nested scrollables with different axis (flutter/flutter#172875)
2025-08-12 [email protected] [ios][tools]do not log "bonjour not found" at all (unless verbose) (flutter/flutter#173569)
2025-08-12 [email protected] Remove jetifier usages  (flutter/flutter#173548)
2025-08-12 [email protected] [ Tool ] Fix run_linux_chrome_dev_mode (flutter/flutter#173647)
2025-08-12 [email protected] [ios] Update iOS code signing CIPD instruction command (flutter/flutter#171173)
2025-08-12 [email protected] Reapply "Make device debuggable if useDwdsWebSocketConnection is true … (#173551)" (flutter/flutter#173628)
2025-08-12 [email protected] Roll Clang to 8c7a2ce01a77c96028fe2c8566f65c45ad9408d3 (flutter/flutter#173429)
2025-08-12 [email protected] [web] Fallback to CanvasKit when WebGL is not available (flutter/flutter#173629)
2025-08-12 [email protected] Roll Packages from a114ac2 to 08a9b2c (3 revisions) (flutter/flutter#173625)
2025-08-12 [email protected] [ Tool ] Fix crash from possible DDS startup race (flutter/flutter#173362)
2025-08-12 [email protected] Roll Skia from a2936eff2179 to 9ed4b4e53db2 (3 revisions) (flutter/flutter#173611)
2025-08-12 49699333+dependabot[bot]@users.noreply.github.com Bump actions/checkout from 4 to 5 in the all-github-actions group (flutter/flutter#173606)
2025-08-12 [email protected] Roll Dart SDK from c5fe48aee60d to e2b7aec7333e (1 revision) (flutter/flutter#173604)
2025-08-12 [email protected] Roll Skia from 44bb9d908ee4 to a2936eff2179 (21 revisions) (flutter/flutter#173603)
2025-08-12 [email protected] Fix the issue of over-scrolling in SliverMainAxisGroup with a PinnedHeaderSliver. (flutter/flutter#173349)
2025-08-12 [email protected] Roll Dart SDK from b2a23936f968 to c5fe48aee60d (2 revisions) (flutter/flutter#173596)
2025-08-11 [email protected] Update CanRenderTiledTexture unit tests (flutter/flutter#173553)
2025-08-11 [email protected] Update integration test for iOS deployment workflows (flutter/flutter#173566)
2025-08-11 [email protected] Enables vulkan for PowerVR B-Series (flutter/flutter#173561)
2025-08-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reapply "Make device debuggable if useDwdsWebSocketConnection is true … (#173551)" (#173568)" (flutter/flutter#173587)
2025-08-11 [email protected] Roll Dart SDK from 8e882349fcab to b2a23936f968 (2 revisions) (flutter/flutter#173571)
2025-08-11 [email protected] Reapply "Make device debuggable if useDwdsWebSocketConnection is true … (#173551)" (flutter/flutter#173568)
2025-08-11 [email protected] Update CI iOS tests (flutter/flutter#173563)
2025-08-11 [email protected] Roll Packages from 34948d1 to a114ac2 (4 revisions) (flutter/flutter#173556)
2025-08-11 [email protected] Roll Fuchsia Linux SDK from HclTm0V8hgSpfqmtG... to vgv-rTf7i9PfcDq2Y... (flutter/flutter#173505)
2025-08-11 [email protected] Roll Dart SDK from 6a7ae1ffd1c9 to 8e882349fcab (2 revisions) (flutter/flutter#173499)
2025-08-11 [email protected] Update `ExpansibleController` in `ExpansionTile` `didUpdateWidget` (flutter/flutter#173175)
2025-08-11 [email protected] add format cmd to tools instruction (flutter/flutter#173428)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected],[email protected] on the revert to ensure that a human
...
Nakiha pushed a commit to Nakiha/VoidPlayer-Flutter that referenced this pull request Sep 28, 2026
…bose)" (#173879)

Reverts flutter/flutter#173569

Sorry I have to revert this one as it didn't work. 

# Why didn't work

From the comment, it looks like `echoError` is only used for verbose
mode, and `streamOutput` is used for non-verbose mode (I am still
looking into how this is setup)


https://github.com/flutter/flutter/blob/cc38de67ad55aead1d30a6a788360dd9552b8c7c/packages/flutter_tools/bin/xcode_backend.dart#L151

# How to fix

## Possible Fix 1

I tested this works, by changing this line: 


https://github.com/flutter/flutter/blob/master/packages/flutter_tools/bin/xcode_backend.dart#L159

into this: 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

## Possible fix 2: 

Surprisingly this also works: 
```
if (!verbose && exitCode == 0) {
  streamOutput(errorOutput.string().replaceAll('error', '');
}
```

Although we made sure `errorOutput` doesn't start with `error:`, there's
an `error:` in the middle of the string.

Possibly because of this code in `mac.dart`: 

https://github.com/flutter/flutter/blob/cc38de67ad55aead1d30a6a788360dd9552b8c7c/packages/flutter_tools/lib/src/ios/mac.dart#L431-L433

# Why we missed it? 

I tested my initial code code and assumed updated code would work,
because I incorrectly thought `echoError` was the one triggered the
output in non-verbose mode. I should have verified it.
Nakiha pushed a commit to Nakiha/VoidPlayer-Flutter that referenced this pull request Sep 28, 2026
…de (#174001)

<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

This tries flutter/flutter#173569 again

That PR was reverted, because I didn't know that `streamOutput` was the
one used during non-verbose mode

The logging logic is a bit convoluted, see:
flutter/flutter#173887


So this PR simply changes the condition from

```
if (!verbose && exitCode == 0)
```

To 

```
if (!verbose && exitCode == 0 && !skipErrorLog)
```

So that if we skipErrorLog (will be true for bonjour features), it
doesn't call `streamOutput`.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

Fixes flutter/flutter#172627

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

team-ios Owned by iOS platform team tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Xcode 26 beta 4] Xcode reports Could not extract value, error: No value at that key path or invalid key path for some keys when running on iOS

3 participants