<!--
{
  "documentType" : "article",
  "framework" : "Network",
  "identifier" : "/documentation/Network/quic-options",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "QUIC Options"
}
-->

# QUIC Options

Configure options for connections that use the QUIC transport protocol.

## Topics

### Creating QUIC Connections

[`nw_protocol_copy_quic_definition`](/documentation/Network/nw_protocol_copy_quic_definition())

Accesses the system definition of the QUIC transport protocol.

[`nw_quic_create_options`](/documentation/Network/nw_quic_create_options())

Initializes a default set of QUIC connection options.

[`nw_protocol_options_is_quic`](/documentation/Network/nw_protocol_options_is_quic(_:))

Checks whether an options object uses the QUIC protocol.

### Customizing Connection Options

[`nw_quic_add_tls_application_protocol`](/documentation/Network/nw_quic_add_tls_application_protocol(_:_:))

Adds a supported Application-Layer Protocol Negotiation value.

[`nw_quic_set_idle_timeout`](/documentation/Network/nw_quic_set_idle_timeout(_:_:))

Sets the idle timeout for the QUIC connection, in milliseconds.

[`nw_quic_get_idle_timeout`](/documentation/Network/nw_quic_get_idle_timeout(_:))

Accesses the idle timeout for the QUIC connection, in milliseconds.

[`nw_quic_set_initial_max_data`](/documentation/Network/nw_quic_set_initial_max_data(_:_:))

Sets a QUIC connection’s initial maximum data transport parameter.

[`nw_quic_get_initial_max_data`](/documentation/Network/nw_quic_get_initial_max_data(_:))

Accesses a QUIC connection’s initial maximum data transport parameter.

[`nw_quic_set_initial_max_stream_data_bidirectional_local`](/documentation/Network/nw_quic_set_initial_max_stream_data_bidirectional_local(_:_:))

Sets a QUIC connection’s initial maximum stream data limit for locally-initiated bidirectional streams.

[`nw_quic_get_initial_max_stream_data_bidirectional_local`](/documentation/Network/nw_quic_get_initial_max_stream_data_bidirectional_local(_:))

Accesses a QUIC connection’s initial maximum stream data limit for locally-initiated bidirectional streams.

[`nw_quic_set_initial_max_stream_data_bidirectional_remote`](/documentation/Network/nw_quic_set_initial_max_stream_data_bidirectional_remote(_:_:))

Sets a QUIC connection’s initial maximum stream data limit for remote-initiated bidirectional streams.

[`nw_quic_get_initial_max_stream_data_bidirectional_remote`](/documentation/Network/nw_quic_get_initial_max_stream_data_bidirectional_remote(_:))

Accesses a QUIC connection’s initial maximum stream data limit for remote-initiated bidirectional streams.

[`nw_quic_set_initial_max_stream_data_unidirectional`](/documentation/Network/nw_quic_set_initial_max_stream_data_unidirectional(_:_:))

Sets a QUIC connection’s initial maximum stream data limit for unidirectional streams.

[`nw_quic_get_initial_max_stream_data_unidirectional`](/documentation/Network/nw_quic_get_initial_max_stream_data_unidirectional(_:))

Accesses a QUIC connection’s initial maximum stream data limit for unidirectional streams.

[`nw_quic_set_initial_max_streams_bidirectional`](/documentation/Network/nw_quic_set_initial_max_streams_bidirectional(_:_:))

Sets a QUIC connection’s initial maximum number of bidirectional streams.

[`nw_quic_get_initial_max_streams_bidirectional`](/documentation/Network/nw_quic_get_initial_max_streams_bidirectional(_:))

Accesses a QUIC connection’s initial maximum number of bidirectional streams.

[`nw_quic_set_initial_max_streams_unidirectional`](/documentation/Network/nw_quic_set_initial_max_streams_unidirectional(_:_:))

Sets a QUIC connection’s initial maximum number of unidirectional streams.

[`nw_quic_get_initial_max_streams_unidirectional`](/documentation/Network/nw_quic_get_initial_max_streams_unidirectional(_:))

Accesses a QUIC connection’s initial maximum number of unidirectional streams.

[`nw_quic_set_max_datagram_frame_size`](/documentation/Network/nw_quic_set_max_datagram_frame_size(_:_:))

Sets a QUIC connection’s maximum DATAGRAM frame size.

[`nw_quic_get_max_datagram_frame_size`](/documentation/Network/nw_quic_get_max_datagram_frame_size(_:))

Accesses a QUIC connection’s maximum DATAGRAM frame size.

[`nw_quic_set_max_udp_payload_size`](/documentation/Network/nw_quic_set_max_udp_payload_size(_:_:))

Sets the maximum length of a QUIC packet that can be received on a connection, in bytes.

[`nw_quic_get_max_udp_payload_size`](/documentation/Network/nw_quic_get_max_udp_payload_size(_:))

Accesses the maximum length of a QUIC packet that can be received on a connection, in bytes.

[`nw_quic_copy_sec_protocol_options`](/documentation/Network/nw_quic_copy_sec_protocol_options(_:))

Accesses the handshake security options QUIC will use.

### Customizing Stream Options

[`nw_quic_set_stream_is_unidirectional`](/documentation/Network/nw_quic_set_stream_is_unidirectional(_:_:))

Configures a QUIC stream as unidirectional, instead of bidirectional.

[`nw_quic_get_stream_is_unidirectional`](/documentation/Network/nw_quic_get_stream_is_unidirectional(_:))

Checks if a QUIC stream is unidirectional, instead of bidirectional.

[`nw_quic_set_stream_is_datagram`](/documentation/Network/nw_quic_set_stream_is_datagram(_:_:))

Configures a QUIC stream as a datagram flow, instead of a byte stream.

[`nw_quic_get_stream_is_datagram`](/documentation/Network/nw_quic_get_stream_is_datagram(_:))

Checks if a QUIC stream is a datagram flow, instead of a byte stream.

### Inspecting Connection State

[`nw_protocol_metadata_is_quic`](/documentation/Network/nw_protocol_metadata_is_quic(_:))

Checks whether a metadata object contains QUIC connection state.

[`nw_quic_set_local_max_streams_bidirectional`](/documentation/Network/nw_quic_set_local_max_streams_bidirectional(_:_:))

Sets the maximum number of bidirectional streams that the peer can create on a QUIC connection.

[`nw_quic_get_local_max_streams_bidirectional`](/documentation/Network/nw_quic_get_local_max_streams_bidirectional(_:))

Accesses the maximum number of bidirectional streams that the peer can create on a QUIC connection.

[`nw_quic_set_local_max_streams_unidirectional`](/documentation/Network/nw_quic_set_local_max_streams_unidirectional(_:_:))

Sets the maximum number of unidirectional streams that the peer can create on a QUIC connection.

[`nw_quic_get_local_max_streams_unidirectional`](/documentation/Network/nw_quic_get_local_max_streams_unidirectional(_:))

Accesses the maximum number of unidirectional streams that the peer can create on a QUIC connection.

[`nw_quic_get_remote_max_streams_bidirectional`](/documentation/Network/nw_quic_get_remote_max_streams_bidirectional(_:))

Accesses the maximum number of bidirectional streams advertised by peer that the connection is allowed to create.

[`nw_quic_get_remote_max_streams_unidirectional`](/documentation/Network/nw_quic_get_remote_max_streams_unidirectional(_:))

Accesses the maximum number of unidirectional streams advertised by peer that the connection is allowed to create.

[`nw_quic_get_remote_idle_timeout`](/documentation/Network/nw_quic_get_remote_idle_timeout(_:))

Accesses the idle timeout value from the peer’s transport parameters, in milliseconds.

[`nw_quic_copy_sec_protocol_metadata`](/documentation/Network/nw_quic_copy_sec_protocol_metadata(_:))

Accesses the result of the QUIC handshake.

### Inspecting Stream State

[`nw_quic_get_stream_id`](/documentation/Network/nw_quic_get_stream_id(_:))

Accesses the QUIC stream identifier.

[`nw_quic_get_stream_type`](/documentation/Network/nw_quic_get_stream_type(_:))

Accesses the stream type of the QUIC stream.

[`nw_quic_get_stream_usable_datagram_frame_size`](/documentation/Network/nw_quic_get_stream_usable_datagram_frame_size(_:))

Accesses the maximum usable size of a datagram frame on a QUIC datagram flow.

### Handling Errors

[`nw_quic_set_application_error`](/documentation/Network/nw_quic_set_application_error(_:_:_:))

Sets the QUIC application error code to send for the connection.

[`nw_quic_get_application_error`](/documentation/Network/nw_quic_get_application_error(_:))

Accesses the QUIC application error code received from the peer.

[`nw_quic_get_application_error_reason`](/documentation/Network/nw_quic_get_application_error_reason(_:))

Accesses the QUIC application error reason received from the peer.

[`nw_quic_set_stream_application_error`](/documentation/Network/nw_quic_set_stream_application_error(_:_:))

Sets the QUIC application error code to send for the stream.

[`nw_quic_get_stream_application_error`](/documentation/Network/nw_quic_get_stream_application_error(_:))

Accesses the QUIC application error code received from the peer for the stream.

### Configuring Keepalives

[`nw_quic_set_keepalive_interval`](/documentation/Network/nw_quic_set_keepalive_interval(_:_:))

Sets the keepalive interval for the QUIC connection, in seconds.

[`nw_quic_get_keepalive_interval`](/documentation/Network/nw_quic_get_keepalive_interval(_:))

Accesses the keepalive interval for the QUIC connection, in seconds.



---

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)