diff --git a/Sources/LaunchFeature/LaunchController.swift b/Sources/LaunchFeature/LaunchController.swift
index 8a9b10717cf85e70c0bd20ee2581e1e79898ecca..e8e1911e53d6c6060833e9c18b7d058725a45dff 100644
--- a/Sources/LaunchFeature/LaunchController.swift
+++ b/Sources/LaunchFeature/LaunchController.swift
@@ -20,6 +20,11 @@ public final class LaunchController: UIViewController {
     view = screenView
   }
 
+  public override func viewDidLayoutSubviews() {
+    super.viewDidLayoutSubviews()
+    screenView.gradientLayer.frame = screenView.bounds
+  }
+
   public override func viewDidLoad() {
     super.viewDidLoad()
 
diff --git a/Sources/LaunchFeature/LaunchView.swift b/Sources/LaunchFeature/LaunchView.swift
index 40f6fb44b8b23520c062774adca2df350b98a409..7fe9ebaf8fba39bf749d3aab864c18f1a7bb5799 100644
--- a/Sources/LaunchFeature/LaunchView.swift
+++ b/Sources/LaunchFeature/LaunchView.swift
@@ -3,26 +3,19 @@ import AppResources
 
 final class LaunchView: UIView {
   let imageView = UIImageView()
-  let gradientLayer = CAGradientLayer()
+  let gradientLayer = CAGradientLayer.xxGradient()
 
   init() {
     super.init(frame: .zero)
 
-    gradientLayer.colors = [
-      UIColor(red: 122/255, green: 235/255, blue: 239/255, alpha: 1).cgColor,
-      UIColor(red: 56/255, green: 204/255, blue: 232/255, alpha: 1).cgColor,
-      UIColor(red: 63/255, green: 186/255, blue: 253/255, alpha: 1).cgColor,
-      UIColor(red: 98/255, green: 163/255, blue: 255/255, alpha: 1).cgColor
-    ]
-    gradientLayer.startPoint = CGPoint(x: 1, y: 0)
-    gradientLayer.endPoint = CGPoint(x: 0, y: 1)
-    layer.insertSublayer(gradientLayer, at: 0)
     imageView.image = Asset.splash.image
     imageView.contentMode = .scaleAspectFit
     backgroundColor = Asset.neutralWhite.color
 
     addSubview(imageView)
 
+    layer.insertSublayer(gradientLayer, at: 0)
+
     imageView.snp.makeConstraints {
       $0.center.equalToSuperview()
       $0.left.equalToSuperview().offset(100)
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift b/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift
index cfa8dad0812ef6950e7232637cb133a70f7f3636..ba4759a67c6432b2a771d32fe9ef65c73b6b763e 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingStartController.swift
@@ -17,25 +17,13 @@ public final class OnboardingStartController: UIViewController {
   public override func viewWillAppear(_ animated: Bool) {
     super.viewWillAppear(animated)
     navigationItem.backButtonTitle = ""
-    navigationController?.navigationBar.customize(translucent: true)
+    navigationController?.navigationBar
+      .customize(translucent: true)
   }
 
   public override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
-
-    let gradient = CAGradientLayer()
-    gradient.colors = [
-      UIColor(red: 122/255, green: 235/255, blue: 239/255, alpha: 1).cgColor,
-      UIColor(red: 56/255, green: 204/255, blue: 232/255, alpha: 1).cgColor,
-      UIColor(red: 63/255, green: 186/255, blue: 253/255, alpha: 1).cgColor,
-      UIColor(red: 98/255, green: 163/255, blue: 255/255, alpha: 1).cgColor
-    ]
-
-    gradient.startPoint = CGPoint(x: 0, y: 0)
-    gradient.endPoint = CGPoint(x: 1, y: 1)
-
-    gradient.frame = screenView.bounds
-    screenView.layer.insertSublayer(gradient, at: 0)
+    screenView.gradientLayer.frame = screenView.bounds
   }
 
   public override func viewDidLoad() {
@@ -45,7 +33,11 @@ public final class OnboardingStartController: UIViewController {
       .startButton
       .publisher(for: .touchUpInside)
       .sink { [unowned self] in
-        navigator.perform(PresentTermsAndConditions(replacing: false, on: navigationController!))
+        navigator.perform(
+          PresentTermsAndConditions(
+            replacing: false,
+            on: navigationController!
+          ))
       }.store(in: &cancellables)
   }
 }
diff --git a/Sources/OnboardingFeature/Controllers/OnboardingSuccessController.swift b/Sources/OnboardingFeature/Controllers/OnboardingSuccessController.swift
index cdf7a999d3fd04bbadf31732c9067a4186d27075..b0d3b01d243d1a90ffe707215918cd5c4f1c92d5 100644
--- a/Sources/OnboardingFeature/Controllers/OnboardingSuccessController.swift
+++ b/Sources/OnboardingFeature/Controllers/OnboardingSuccessController.swift
@@ -26,19 +26,7 @@ public final class OnboardingSuccessController: UIViewController {
 
   public override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
-
-    let gradient = CAGradientLayer()
-    gradient.colors = [
-      UIColor(red: 122/255, green: 235/255, blue: 239/255, alpha: 1).cgColor,
-      UIColor(red: 56/255, green: 204/255, blue: 232/255, alpha: 1).cgColor,
-      UIColor(red: 63/255, green: 186/255, blue: 253/255, alpha: 1).cgColor,
-      UIColor(red: 98/255, green: 163/255, blue: 255/255, alpha: 1).cgColor
-    ]
-
-    gradient.startPoint = CGPoint(x: 0, y: 0)
-    gradient.endPoint = CGPoint(x: 1, y: 1)
-    gradient.frame = screenView.bounds
-    screenView.layer.insertSublayer(gradient, at: 0)
+    screenView.gradientLayer.frame = screenView.bounds
   }
 
   public override func viewWillAppear(_ animated: Bool) {
diff --git a/Sources/OnboardingFeature/Views/OnboardingStartView.swift b/Sources/OnboardingFeature/Views/OnboardingStartView.swift
index b0864bb32bb8bdd4557b0a677df73068e5c747d5..fffc54b30a84f4d184de5d04f5d482317666ced1 100644
--- a/Sources/OnboardingFeature/Views/OnboardingStartView.swift
+++ b/Sources/OnboardingFeature/Views/OnboardingStartView.swift
@@ -8,6 +8,7 @@ final class OnboardingStartView: UIView {
   let logoImageView = UIImageView()
   let startButton = CapsuleButton()
   let bottomImageView = UIImageView()
+  let gradientLayer = CAGradientLayer.xxGradient()
 
   init() {
     super.init(frame: .zero)
@@ -34,6 +35,8 @@ final class OnboardingStartView: UIView {
     addSubview(logoImageView)
     addSubview(stackView)
 
+    layer.insertSublayer(gradientLayer, at: 0)
+
     logoImageView.snp.makeConstraints {
       $0.top.equalToSuperview().offset(130)
       $0.centerX.equalToSuperview()
diff --git a/Sources/OnboardingFeature/Views/OnboardingSuccessView.swift b/Sources/OnboardingFeature/Views/OnboardingSuccessView.swift
index c539521cfd94a925d5c84ff323d7b4b1a0adaab1..bc3da3b65aeb0585827af0142a45144a25009197 100644
--- a/Sources/OnboardingFeature/Views/OnboardingSuccessView.swift
+++ b/Sources/OnboardingFeature/Views/OnboardingSuccessView.swift
@@ -6,6 +6,7 @@ final class OnboardingSuccessView: UIView {
   let titleLabel = UILabel()
   let imageView = UIImageView()
   let nextButton = CapsuleButton()
+  let gradientLayer = CAGradientLayer.xxGradient()
 
   init() {
     super.init(frame: .zero)
@@ -15,6 +16,8 @@ final class OnboardingSuccessView: UIView {
     addSubview(titleLabel)
     addSubview(nextButton)
 
+    layer.insertSublayer(gradientLayer, at: 0)
+
     imageView.snp.makeConstraints {
       $0.top.equalTo(safeAreaLayoutGuide).offset(40)
       $0.left.equalToSuperview().offset(40)
diff --git a/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift b/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift
index cad61beee324f7814d23a917f8648a03e08cdb16..adb28a963ad0a452ac0d610c3da7fb848b324972 100644
--- a/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift
+++ b/Sources/RestoreFeature/Controllers/RestoreSuccessController.swift
@@ -29,20 +29,7 @@ public final class RestoreSuccessController: UIViewController {
 
   public override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
-
-    let gradient = CAGradientLayer()
-    gradient.colors = [
-      UIColor(red: 122/255, green: 235/255, blue: 239/255, alpha: 1).cgColor,
-      UIColor(red: 56/255, green: 204/255, blue: 232/255, alpha: 1).cgColor,
-      UIColor(red: 63/255, green: 186/255, blue: 253/255, alpha: 1).cgColor,
-      UIColor(red: 98/255, green: 163/255, blue: 255/255, alpha: 1).cgColor
-    ]
-
-    gradient.startPoint = CGPoint(x: 0, y: 0)
-    gradient.endPoint = CGPoint(x: 1, y: 1)
-
-    gradient.frame = screenView.bounds
-    screenView.layer.insertSublayer(gradient, at: 0)
+    screenView.gradientLayer.frame = screenView.bounds
   }
 
   private func setupBindings() {
diff --git a/Sources/RestoreFeature/Views/RestoreSuccessView.swift b/Sources/RestoreFeature/Views/RestoreSuccessView.swift
index e8551f0d680ea19c69f7ac16b0bd91ac1013933a..bfaac5b458e8d24d4e8dd18fb16b22e966ecc74a 100644
--- a/Sources/RestoreFeature/Views/RestoreSuccessView.swift
+++ b/Sources/RestoreFeature/Views/RestoreSuccessView.swift
@@ -7,6 +7,7 @@ final class RestoreSuccessView: UIView {
   let titleLabel = UILabel()
   let subtitleLabel = UILabel()
   let nextButton = CapsuleButton()
+  let gradientLayer = CAGradientLayer.xxGradient()
 
   init() {
     super.init(frame: .zero)
@@ -24,27 +25,26 @@ final class RestoreSuccessView: UIView {
     addSubview(subtitleLabel)
     addSubview(nextButton)
 
-    iconImageView.snp.makeConstraints { make in
-      make.top.equalTo(safeAreaLayoutGuide).offset(40)
-      make.left.equalToSuperview().offset(40)
-    }
+    layer.insertSublayer(gradientLayer, at: 0)
 
-    titleLabel.snp.makeConstraints { make in
-      make.top.equalTo(iconImageView.snp.bottom).offset(40)
-      make.left.equalToSuperview().offset(40)
-      make.right.equalToSuperview().offset(-90)
+    iconImageView.snp.makeConstraints {
+      $0.top.equalTo(safeAreaLayoutGuide).offset(40)
+      $0.left.equalToSuperview().offset(40)
     }
-
-    subtitleLabel.snp.makeConstraints { make in
-      make.top.equalTo(titleLabel.snp.bottom).offset(30)
-      make.left.equalToSuperview().offset(40)
-      make.right.equalToSuperview().offset(-90)
+    titleLabel.snp.makeConstraints {
+      $0.top.equalTo(iconImageView.snp.bottom).offset(40)
+      $0.left.equalToSuperview().offset(40)
+      $0.right.equalToSuperview().offset(-90)
     }
-
-    nextButton.snp.makeConstraints { make in
-      make.left.equalToSuperview().offset(24)
-      make.right.equalToSuperview().offset(-24)
-      make.bottom.equalToSuperview().offset(-60)
+    subtitleLabel.snp.makeConstraints {
+      $0.top.equalTo(titleLabel.snp.bottom).offset(30)
+      $0.left.equalToSuperview().offset(40)
+      $0.right.equalToSuperview().offset(-90)
+    }
+    nextButton.snp.makeConstraints {
+      $0.left.equalToSuperview().offset(24)
+      $0.right.equalToSuperview().offset(-24)
+      $0.bottom.equalToSuperview().offset(-60)
     }
 
     setTitle(Localized.AccountRestore.Success.title)
diff --git a/Sources/Shared/Extensions/Gradient.swift b/Sources/Shared/Extensions/Gradient.swift
new file mode 100644
index 0000000000000000000000000000000000000000..2587215c18606c24b379611c86b961a21fbcd372
--- /dev/null
+++ b/Sources/Shared/Extensions/Gradient.swift
@@ -0,0 +1,16 @@
+import UIKit
+
+public extension CAGradientLayer {
+  static func xxGradient() -> CAGradientLayer {
+    let gradient = CAGradientLayer()
+    gradient.colors = [
+      UIColor(red: 122/255, green: 235/255, blue: 239/255, alpha: 1).cgColor,
+      UIColor(red: 56/255, green: 204/255, blue: 232/255, alpha: 1).cgColor,
+      UIColor(red: 63/255, green: 186/255, blue: 253/255, alpha: 1).cgColor,
+      UIColor(red: 98/255, green: 163/255, blue: 255/255, alpha: 1).cgColor
+    ]
+    gradient.startPoint = CGPoint(x: 0, y: 0)
+    gradient.endPoint = CGPoint(x: 1, y: 1)
+    return gradient
+  }
+}
diff --git a/Sources/TermsFeature/TermsConditionsController.swift b/Sources/TermsFeature/TermsConditionsController.swift
index 708e8d330219edf0a89291edc2d2176c46eff102..84fd76d00a0c6f6ba32df1682c5fdcc394b4ba27 100644
--- a/Sources/TermsFeature/TermsConditionsController.swift
+++ b/Sources/TermsFeature/TermsConditionsController.swift
@@ -31,17 +31,7 @@ public final class TermsConditionsController: UIViewController {
 
   public override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
-    let gradient = CAGradientLayer()
-    gradient.colors = [
-      UIColor(red: 122/255, green: 235/255, blue: 239/255, alpha: 1).cgColor,
-      UIColor(red: 56/255, green: 204/255, blue: 232/255, alpha: 1).cgColor,
-      UIColor(red: 63/255, green: 186/255, blue: 253/255, alpha: 1).cgColor,
-      UIColor(red: 98/255, green: 163/255, blue: 255/255, alpha: 1).cgColor
-    ]
-    gradient.startPoint = CGPoint(x: 0, y: 0)
-    gradient.endPoint = CGPoint(x: 1, y: 1)
-    gradient.frame = screenView.bounds
-    screenView.layer.insertSublayer(gradient, at: 0)
+    screenView.gradientLayer.frame = screenView.bounds
   }
 
   public override func viewDidLoad() {
diff --git a/Sources/TermsFeature/TermsConditionsView.swift b/Sources/TermsFeature/TermsConditionsView.swift
index e3dd19a9427f823ebd4d54700176a4deeebcf1f3..e04670c3b58ef00ff08fb11629dd9ba290eeba94 100644
--- a/Sources/TermsFeature/TermsConditionsView.swift
+++ b/Sources/TermsFeature/TermsConditionsView.swift
@@ -7,6 +7,7 @@ final class TermsConditionsView: UIView {
   let logoImageView = UIImageView()
   let showTermsButton = CapsuleButton()
   let radioComponent = RadioTextComponent()
+  let gradientLayer = CAGradientLayer.xxGradient()
 
   init() {
     super.init(frame: .zero)
@@ -25,33 +26,28 @@ final class TermsConditionsView: UIView {
     addSubview(radioComponent)
     addSubview(showTermsButton)
 
-    setupConstraints()
-  }
-
-  required init?(coder: NSCoder) { nil }
+    layer.insertSublayer(gradientLayer, at: 0)
 
-  private func setupConstraints() {
     logoImageView.snp.makeConstraints {
       $0.top.equalTo(safeAreaLayoutGuide).offset(30)
       $0.centerX.equalToSuperview()
     }
-
     radioComponent.snp.makeConstraints {
       $0.left.equalToSuperview().offset(40)
       $0.right.equalToSuperview().offset(-40)
       $0.bottom.equalTo(nextButton.snp.top).offset(-20)
     }
-
     nextButton.snp.makeConstraints {
       $0.left.equalToSuperview().offset(40)
       $0.right.equalToSuperview().offset(-40)
       $0.bottom.equalTo(showTermsButton.snp.top).offset(-10)
     }
-
     showTermsButton.snp.makeConstraints {
       $0.left.equalToSuperview().offset(40)
       $0.right.equalToSuperview().offset(-40)
       $0.bottom.equalTo(safeAreaLayoutGuide).offset(-40)
     }
   }
+
+  required init?(coder: NSCoder) { nil }
 }