<!--
{
  "availability" : [
    "iOS: 9.0.0 -",
    "iPadOS: 9.0.0 -",
    "macCatalyst: 13.1.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "NetworkExtension",
  "identifier" : "/documentation/NetworkExtension/NEFilterControlProvider/handleNewFlow(_:completionHandler:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Network Extension"
    ],
    "preciseIdentifier" : "c:objc(cs)NEFilterControlProvider(im)handleNewFlow:completionHandler:"
  },
  "title" : "handleNewFlow(_:completionHandler:)"
}
-->

# handleNewFlow(_:completionHandler:)

Handle a request for new filtering rules.

```
func handleNewFlow(_ flow: NEFilterFlow, completionHandler: @escaping @Sendable (NEFilterControlVerdict) -> Void)
```

## Parameters

`flow`

A `NEFilterFlow` object containing details about the flow of network content.

`completionHandler`

A block to be executed when the rules have been updated.

## Discussion

The system calls this method when the Filter Data Provider indicates that it needs more rules before making a decision about a new flow.

The Filter Control Provider is expected to fetch new rules and write them to disk in a location that is readable by the Filter Data Provider. In addition to updating the rules, the Filter Control Provider can itself make a pass/block decision for the new flow, and return it when executing the `completionHandler` block.

NEFilterControlProvider subclasses must override this method.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)