diff --git a/examples/objective-c/helloworld/main.m b/examples/objective-c/helloworld/main.m
index f390b5a0f9b19aed0fd27d0aa2de3f7e4c7a1cff..b67380812b4dc6da2ef63ad4839ba1188731ddfe 100644
--- a/examples/objective-c/helloworld/main.m
+++ b/examples/objective-c/helloworld/main.m
@@ -43,7 +43,7 @@ static NSString * const kHostAddress = @"localhost:50051";
 int main(int argc, char * argv[]) {
   @autoreleasepool {
     [GRPCCall useInsecureConnectionsForHost:kHostAddress];
-    [GRPCCall usePrimaryUserAgent:@"HelloWorld/1.0" forHost:kHostAddress];
+    [GRPCCall setUserAgentPrefix:@"HelloWorld/1.0"];
 
     HLWGreeter *client = [[HLWGreeter alloc] initWithHost:kHostAddress];
 
diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h
index 11b2babbe72f302ecf9dd8da34a19246ac8debbd..045d31caf1aa77017c64030d7da4dcff9fe11eb7 100644
--- a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h
+++ b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.h
@@ -33,20 +33,15 @@
 #import "GRPCCall.h"
 
 /**
- * Methods to configure GRPC channel options for specific hosts.
+ * Methods to configure GRPC channel options.
  */
 @interface GRPCCall (ChannelArg)
 
 /**
- * Use the provided @c primaryUserAgent at the beginning of the HTTP User Agent string for the
- * provided @c host.
+ * Use the provided @c userAgentPrefix at the beginning of the HTTP User Agent string for all calls.
  */
-+ (void)usePrimaryUserAgent:(NSString *)primaryUserAgent forHost:(NSString *)host;
++ (void)setUserAgentPrefix:(NSString *)userAgentPrefix;
 
-/**
- * Use the provided @c secondaryUserAgent at the end of the HTTP User Agent string for the
- * provided @c host.
- */
-+ (void)useSecondaryUserAgent:(NSString *)secondaryUserAgent forHost:(NSString *)host;
++ (NSString *)useUserAgentPrefix;
 
 @end
diff --git a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m
index 159e12c7e859d11c8d0d9686652544fee94d933f..a6a61188fa08fd0906c57699ae8a700ad6e46935 100644
--- a/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m
+++ b/src/objective-c/GRPCClient/GRPCCall+ChannelArg.m
@@ -37,22 +37,18 @@
 
 @implementation GRPCCall (ChannelArg)
 
-+ (void)usePrimaryUserAgent:(NSString *)primaryUserAgent forHost:(NSString *)host {
-  if (!primaryUserAgent || !host) {
-    [NSException raise:NSInvalidArgumentException
-                format:@"primaryUserAgent and host must be provided."];
+static NSString *_userAgentPrefix;
+
++ (void)setUserAgentPrefix:(NSString *)userAgentPrefix {
+  @synchronized(self) {
+    _userAgentPrefix = userAgentPrefix;
   }
-  GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
-  hostConfig.primaryUserAgent = primaryUserAgent;
 }
 
-+ (void)useSecondaryUserAgent:(NSString *)secondaryUserAgent forHost:(NSString *)host {
-  if (!secondaryUserAgent || !host) {
-    [NSException raise:NSInvalidArgumentException
-                format:@"secondaryUserAgent and host must be provided."];
++ (NSString *)useUserAgentPrefix {
+  @synchronized(self) {
+    return _userAgentPrefix;
   }
-  GRPCHost *hostConfig = [GRPCHost hostWithAddress:host];
-  hostConfig.secondaryUserAgent = secondaryUserAgent;
 }
 
 @end
diff --git a/src/objective-c/GRPCClient/private/GRPCChannel.h b/src/objective-c/GRPCClient/private/GRPCChannel.h
index 3e277b0f1a3ab3e346c291b7ffbf0a7c11118f67..01a6cfd2ec94a4a955f3c9611e6e68a0a47244cc 100644
--- a/src/objective-c/GRPCClient/private/GRPCChannel.h
+++ b/src/objective-c/GRPCClient/private/GRPCChannel.h
@@ -42,8 +42,8 @@ struct grpc_channel_credentials;
  * Each separate instance of this class represents at least one TCP connection to the provided host.
  */
 @interface GRPCChannel : NSObject
+
 @property(nonatomic, readonly, nonnull) struct grpc_channel *unmanagedChannel;
-@property(nonatomic, readonly, getter=isSecure) BOOL secure;
 
 - (nullable instancetype)init NS_UNAVAILABLE;
 
diff --git a/src/objective-c/GRPCClient/private/GRPCHost.h b/src/objective-c/GRPCClient/private/GRPCHost.h
index 673ed9060ef5af6db12afc7f0b55c86dd1acdfa5..6b4f98746d0caa4382d89885ac6194029d151e60 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.h
+++ b/src/objective-c/GRPCClient/private/GRPCHost.h
@@ -39,8 +39,6 @@ struct grpc_call;
 @interface GRPCHost : NSObject
 
 @property(nonatomic, readonly) NSString *address;
-@property(nonatomic, copy) NSString *primaryUserAgent;
-@property(nonatomic, copy) NSString *secondaryUserAgent;
 
 /** The following properties should only be modified for testing: */
 
diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m
index 5a21df523f209198bdd6a8cf94d94d579987a6f6..9d5d1a16cbd347b29864b9062c4238a627e5c945 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.m
+++ b/src/objective-c/GRPCClient/private/GRPCHost.m
@@ -34,6 +34,7 @@
 #import "GRPCHost.h"
 
 #include <grpc/grpc.h>
+#import <GRPCClient/GRPCCall+ChannelArg.h>
 
 #import "GRPCChannel.h"
 #import "GRPCCompletionQueue.h"
@@ -108,11 +109,9 @@
 
   if (!_channel) {
     NSMutableDictionary *args = [NSMutableDictionary dictionary];
-    if (_primaryUserAgent) {
-      args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] = _primaryUserAgent;
-    }
-    if (_secondaryUserAgent) {
-      args[@GRPC_ARG_SECONDARY_USER_AGENT_STRING] = _secondaryUserAgent;
+    NSString *userAgentPrefix = [[GRPCCall useUserAgentPrefix] copy];
+    if (userAgentPrefix) {
+      args[@GRPC_ARG_PRIMARY_USER_AGENT_STRING] = userAgentPrefix;
     }
 
     if (_secure) {