diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index d485b46c77..a77177240b 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -102,6 +102,13 @@ bool process_record_quantum(keyrecord_t *record) {
 
 void process_record(keyrecord_t *record) 
 {
+#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
+    if (has_oneshot_layer_timed_out()) {
+        dprintf("Oneshot layer: timeout\n");
+        clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
+    }
+#endif
+
     if (IS_NOEVENT(record->event)) { return; }
 
     if(!process_record_quantum(record))
@@ -126,13 +133,6 @@ void process_action(keyrecord_t *record, action_t action)
     uint8_t tap_count = record->tap.count;
 #endif
 
-#if (defined(ONESHOT_TIMEOUT) && (ONESHOT_TIMEOUT > 0))
-    if (has_oneshot_layer_timed_out()) {
-        dprintf("Oneshot layer: timeout\n");
-        clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
-    }
-#endif
-
     if (event.pressed) {
         // clear the potential weak mods left by previously pressed keys
         clear_weak_mods();