diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0072f54..51ce9e8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,6 @@
 
 * Support triple-shift `>>>` and `>>>=` operators (#992).
 * Support non-function type aliases (#993).
-* Less indentation on nested `?:` (#713, #722).
 * Correct constructor initializer indentation after `required` (#1010).
 
 # 2.0.0
diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart
index b075062..7ad10c9 100644
--- a/lib/src/source_visitor.dart
+++ b/lib/src/source_visitor.dart
@@ -821,10 +821,14 @@
 
   @override
   void visitConditionalExpression(ConditionalExpression node) {
+    // TODO(rnystrom): Consider revisiting whether users prefer this after 2.13.
+    /*
     // Flatten else-if style chained conditionals.
     var shouldNest = node.parent is! ConditionalExpression ||
         (node.parent as ConditionalExpression).elseExpression != node;
     if (shouldNest) builder.nestExpression();
+    */
+    builder.nestExpression();
 
     // Start lazily so we don't force the operator to split if a line comment
     // appears before the first operand. If we split after one clause in a
@@ -859,7 +863,12 @@
     builder.endRule();
     builder.endSpan();
     builder.endBlockArgumentNesting();
+
+    // TODO(rnystrom): Consider revisiting whether users prefer this after 2.13.
+    /*
     if (shouldNest) builder.unnest();
+    */
+    builder.unnest();
   }
 
   @override
diff --git a/test/regression/0400/0407.unit b/test/regression/0400/0407.unit
index f783054..ffeb0d6 100644
--- a/test/regression/0400/0407.unit
+++ b/test/regression/0400/0407.unit
@@ -27,8 +27,9 @@
         ..formattedTotal = _total == 0
             ? ""
             : _chartType == "PieChart"
-            ? _formatter.formatAsPercent(item.value / _total, fractionDigits: 1)
-            : _formatter.formatValue(item.value, item.valueType);
+                ? _formatter.formatAsPercent(item.value / _total,
+                    fractionDigits: 1)
+                : _formatter.formatValue(item.value, item.valueType);
     }
 >>> (indent 6)
 main() {
@@ -36,8 +37,8 @@
       ..formattedTotal = _total == 0
           ? ""
           : _chartType == "PieChart"
-          ? _formatter.formatAsPercent(item.value / _total, fractionDigits: 1)
-          : _formatter.formatValue(item.value, item.valueType);
+              ? _formatter.formatAsPercent(item.value / _total, fractionDigits: 1)
+              : _formatter.formatValue(item.value, item.valueType);
 }
 <<<
       main() {
@@ -45,7 +46,7 @@
           ..formattedTotal = _total == 0
               ? ""
               : _chartType == "PieChart"
-              ? _formatter.formatAsPercent(item.value / _total,
-                  fractionDigits: 1)
-              : _formatter.formatValue(item.value, item.valueType);
+                  ? _formatter.formatAsPercent(item.value / _total,
+                      fractionDigits: 1)
+                  : _formatter.formatValue(item.value, item.valueType);
       }
\ No newline at end of file
diff --git a/test/regression/0700/0713.stmt b/test/regression/0700/0713.stmt
index 4a47471..36b3d4f 100644
--- a/test/regression/0700/0713.stmt
+++ b/test/regression/0700/0713.stmt
@@ -6,7 +6,7 @@
 String type = status == 'OK'
     ? 'notices'
     : status == 'NO'
-    ? 'warnings'
-    : status == 'BAD'
-    ? 'errors'
-    : '';
\ No newline at end of file
+        ? 'warnings'
+        : status == 'BAD'
+            ? 'errors'
+            : '';
\ No newline at end of file
diff --git a/test/regression/0700/0722.stmt b/test/regression/0700/0722.stmt
index 2e3e477..012b678 100644
--- a/test/regression/0700/0722.stmt
+++ b/test/regression/0700/0722.stmt
@@ -20,15 +20,15 @@
   child: project.locked
       ? Icon(Icons.lock)
       : project.fav
-      ? Icon(Icons.star)
-      : project.taps == null
-      ? Icon(Icons.notifications)
-      : Text(
-          suffixNumber(project.taps),
-          textAlign: TextAlign.center,
-          style: TextStyle(
-            fontSize: 18.0,
-            fontWeight: FontWeight.w600,
-          ),
-        ),
+          ? Icon(Icons.star)
+          : project.taps == null
+              ? Icon(Icons.notifications)
+              : Text(
+                  suffixNumber(project.taps),
+                  textAlign: TextAlign.center,
+                  style: TextStyle(
+                    fontSize: 18.0,
+                    fontWeight: FontWeight.w600,
+                  ),
+                ),
 );
\ No newline at end of file
diff --git a/test/regression/0900/0927.unit b/test/regression/0900/0927.unit
index 939d134..517df4f 100644
--- a/test/regression/0900/0927.unit
+++ b/test/regression/0900/0927.unit
@@ -7,6 +7,6 @@
   int get currentAngleDigits => _currentSunAngleDeg < 0
       ? 1
       : _currentSunAngleDeg < 10
-      ? 2
-      : 3;
+          ? 2
+          : 3;
 }
\ No newline at end of file
diff --git a/test/splitting/expressions.stmt b/test/splitting/expressions.stmt
index 5bcd0d2..f6a666c 100644
--- a/test/splitting/expressions.stmt
+++ b/test/splitting/expressions.stmt
@@ -84,8 +84,8 @@
 var kind = a
     ? b
     : c
-    ? d
-    : e;
+        ? d
+        : e;
 >>> don't split conditionals when indirectly nested
 var kind = a ? b : (c ? d : e);
 <<<
@@ -132,8 +132,8 @@
         ? someParticularlyLongOperand
         : someParticularlyLongOperand
     : identifier
-    ? someParticularlyLongOperand
-    : someParticularlyLongOperand;
+        ? someParticularlyLongOperand
+        : someParticularlyLongOperand;
 >>> index expressions can split after "["
 verylongIdentifier[someParticularlyLongArgument];
 <<<
