diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 7258ec5..5344f4a 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -373,12 +373,6 @@
 }
 
 void QuicConnection::InstallInitialCrypters(QuicConnectionId connection_id) {
-  if (!framer_.framer_doesnt_create_initial_encrypter() &&
-      !version().UsesInitialObfuscators() &&
-      version().handshake_protocol != PROTOCOL_TLS1_3) {
-    // Initial crypters are currently only supported with TLS.
-    return;
-  }
   CrypterPair crypters;
   CryptoUtils::CreateInitialObfuscators(perspective_, version(), connection_id,
                                         &crypters);
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index dae67fa..91d9b69 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -135,10 +135,7 @@
         creator_(server_connection_id, &framer_, &collector_),
         time_wait_list_manager_(time_wait_list_manager) {
     framer_.set_data_producer(&collector_);
-    if (framer_.framer_doesnt_create_initial_encrypter() ||
-        version.UsesInitialObfuscators()) {
-      framer_.SetInitialObfuscators(server_connection_id);
-    }
+    framer_.SetInitialObfuscators(server_connection_id);
   }
 
   ~StatelessConnectionTerminator() {
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index 12d7f7c..9b1d685 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -416,22 +416,12 @@
           expected_server_connection_id_length),
       expected_client_connection_id_length_(0),
       supports_multiple_packet_number_spaces_(false),
-      framer_doesnt_create_initial_encrypter_(
-          GetQuicReloadableFlag(quic_framer_doesnt_create_initial_encrypter)),
       last_written_packet_number_length_(0),
       peer_ack_delay_exponent_(kDefaultAckDelayExponent),
       local_ack_delay_exponent_(kDefaultAckDelayExponent),
       current_received_frame_type_(0) {
   DCHECK(!supported_versions.empty());
   version_ = supported_versions_[0];
-  if (!framer_doesnt_create_initial_encrypter_) {
-    decrypter_[ENCRYPTION_INITIAL] =
-        std::make_unique<NullDecrypter>(perspective);
-    encrypter_[ENCRYPTION_INITIAL] =
-        std::make_unique<NullEncrypter>(perspective);
-  } else {
-    QUIC_RELOADABLE_FLAG_COUNT(quic_framer_doesnt_create_initial_encrypter);
-  }
 }
 
 QuicFramer::~QuicFramer() {}
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h
index d9e9d27..cd2e2c7 100644
--- a/quic/core/quic_framer.h
+++ b/quic/core/quic_framer.h
@@ -636,10 +636,6 @@
   }
   uint32_t peer_ack_delay_exponent() const { return peer_ack_delay_exponent_; }
 
-  bool framer_doesnt_create_initial_encrypter() const {
-    return framer_doesnt_create_initial_encrypter_;
-  }
-
  private:
   friend class test::QuicFramerPeer;
 
@@ -1056,10 +1052,6 @@
   // Indicates whether this framer supports multiple packet number spaces.
   bool supports_multiple_packet_number_spaces_;
 
-  // Latched value of reloadable flag
-  // quic_framer_doesnt_create_initial_encrypter.
-  const bool framer_doesnt_create_initial_encrypter_;
-
   // The length in bytes of the last packet number written to an IETF-framed
   // packet.
   size_t last_written_packet_number_length_;
