diff --git a/CHANGELOG.md b/CHANGELOG.md
index 17dff7c68373ae37ab17357c9d54d5b648c70f7f..1246145c5dc91b737f09f3f53777ca8f0b240320 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,6 +25,7 @@ current (development)
   Fixed by @chrysante in chrysante in PR #776.
 - Bugfix: Propertly restore cursor shape on exit. See #792.
 - Bugfix: Fix cursor position in when in the last column. See #831.
+- Bugfix: Fix `ResizeableSplit` keyboard navigation. Fixed by #842.
 
 ### Dom
 - Feature: Add `hscroll_indicator`. It display an horizontal indicator
diff --git a/src/ftxui/component/resizable_split.cpp b/src/ftxui/component/resizable_split.cpp
index 9e0d62e35d1f797341c65dc7d925dcb76f032d50..86a282069911ed9e1cbac105051585fb40c6e7c9 100644
--- a/src/ftxui/component/resizable_split.cpp
+++ b/src/ftxui/component/resizable_split.cpp
@@ -23,10 +23,32 @@ class ResizableSplitBase : public ComponentBase {
  public:
   explicit ResizableSplitBase(ResizableSplitOption options)
       : options_(std::move(options)) {
-    Add(Container::Horizontal({
-        options_->main,
-        options_->back,
-    }));
+    switch (options_->direction()) {
+      case Direction::Left:
+        Add(Container::Horizontal({
+            options_->main,
+            options_->back,
+        }));
+        break;
+      case Direction::Right:
+        Add(Container::Horizontal({
+            options_->back,
+            options_->main,
+        }));
+        break;
+      case Direction::Up:
+        Add(Container::Vertical({
+            options_->main,
+            options_->back,
+        }));
+        break;
+      case Direction::Down:
+        Add(Container::Vertical({
+            options_->back,
+            options_->main,
+        }));
+        break;
+    }
   }
 
   bool OnEvent(Event event) final {
diff --git a/src/ftxui/component/resizable_split_test.cpp b/src/ftxui/component/resizable_split_test.cpp
index 352b33eeff41655e4cc10b8ea0fc10ac422ef508..69636311eead827b426ceb88b14affedd2a5fb1c 100644
--- a/src/ftxui/component/resizable_split_test.cpp
+++ b/src/ftxui/component/resizable_split_test.cpp
@@ -19,7 +19,7 @@ namespace ftxui {
 
 namespace {
 Component BasicComponent() {
-  return Renderer([] { return text(""); });
+  return Renderer([](bool focused) { return text(""); });
 }
 
 Event MousePressed(int x, int y) {
@@ -207,5 +207,32 @@ TEST(ResizableSplit, BasicBottomWithCustomSeparator) {
   EXPECT_EQ(position, 2);
 }
 
+TEST(ResizableSplit, NavigationVertical) {
+  int position = 0;
+  auto component_top = BasicComponent();
+  auto component_bottom = BasicComponent();
+  auto component =
+      ResizableSplitTop(component_top, component_bottom, &position);
+
+  EXPECT_TRUE(component_top->Active());
+  EXPECT_FALSE(component_bottom->Active());
+
+  EXPECT_FALSE(component->OnEvent(Event::ArrowRight));
+  EXPECT_TRUE(component_top->Active());
+  EXPECT_FALSE(component_bottom->Active());
+
+  EXPECT_TRUE(component->OnEvent(Event::ArrowDown));
+  EXPECT_FALSE(component_top->Active());
+  EXPECT_TRUE(component_bottom->Active());
+
+  EXPECT_FALSE(component->OnEvent(Event::ArrowDown));
+  EXPECT_FALSE(component_top->Active());
+  EXPECT_TRUE(component_bottom->Active());
+
+  EXPECT_TRUE(component->OnEvent(Event::ArrowUp));
+  EXPECT_TRUE(component_top->Active());
+  EXPECT_FALSE(component_bottom->Active());
+}
+
 }  // namespace ftxui
 // NOLINTEND