fzf: 0.74.0

0.74.0 #

(Jul 2026)

Quick summary #

The headline change is --popup on tmux 3.7+, which now opens fzf in a floating pane instead of a modal popup. A new result-final event and a new wait action let bound actions operate on the final result set instead of intermediate snapshots while the input is still loading.

TypeClassNameDescription
ChangeTerminal--popup (tmux 3.7+)Opens in a floating pane instead of a modal popup
ChangeTerminal--popup (Zellij)Uses the native pane border by default
NewEventresult-finalresult that is not triggered while input is loading
NewActionwaitBlocks subsequent actions until search completes
NewBindingalt-left / alt-rightBound to backward-word / forward-word by default

--popup on tmux 3.7+: floating pane #

On tmux 3.7 or above, fzf --popup starts fzf in a floating pane instead of a popup (#4850).

Unlike a popup, a floating pane is not modal. While fzf is running, you can:

  • Switch to other panes and windows
  • Move and resize the pane with the mouse
  • Zoom it to fullscreen
  • Use copy-mode in it

A floating pane always has a native border (that’s what makes it movable and resizable), so border-native is implied. --border-label is used as the pane title, shown on the border when pane-border-status is enabled:

fzf --popup --border-label ' fzf '

Falling back to a popup #

When you specify a border style with --border, fzf falls back to a modal popup so that its own border is the only one shown (none and line count as no border):

fzf --popup --border

--popup on Zellij: native border by default #

For consistency with the tmux behavior above, fzf --popup on Zellij now uses the native pane border by default, so that the pane can be moved and resized with the mouse. Specifying --border makes fzf draw its own border instead.

--border-label is set as the pane name and shown on the native border.

result-final event #

result-final is a variant of result that does not fire while the input stream is still open (#4835).

Use it for one-shot, per-query actions that would otherwise re-fire on every intermediate snapshot during loading:

# 'result' fires per intermediate snapshot (header keeps updating during load);
# 'result-final' fires once after the stream closes (footer shows the final count)
(seq 100; sleep 1; seq 100) | fzf --query 1 \
  --bind 'result:transform-header(echo result: $FZF_MATCH_COUNT),result-final:transform-footer(echo final: $FZF_MATCH_COUNT)'

wait action #

The new wait action blocks subsequent actions in a chain until the current search completes (#4825).

Useful when you want a motion or selection action to see the final result set rather than a partial snapshot:

# Wait for search to complete before moving to the best match
fzf --bind 'start:change-query(foo)+wait+best'

The initial loading of the input is also treated as a search in progress, so start:wait waits until the input is fully loaded:

# Move to the last item after the input is fully loaded
(seq 1000; sleep 1; seq 1001 2000) | fzf --bind 'start:wait+last'

Default word-navigation bindings #

alt-left is now bound to backward-word and alt-right to forward-word by default (#4833), matching common terminal conventions.

Bug fixes and improvements #

  • Skip $FZF_CURRENT_ITEM export when the item is larger than 64 KB; a huge item can overflow ARG_MAX and break preview and other child commands with E2BIG (#4806)

  • transform and bg-transform now allow a bare put action in the output to insert the key that triggered the action

    # Insert the typed key ('a') into the query
    fzf --bind 'a:transform:echo put'
    
  • ALT-C in zsh no longer resolves symbolic links when changing the directory, consistent with the cd builtin (#4816) (@silverneko)

  • Fixed horizontal mouse wheel events being treated as vertical scrolling (#4848) (@jason5122)

  • Fixed bw theme not inheriting overridden colors

  • fish: CTRL-R now works when $fish_color_normal or $fish_color_comment is empty or invalid (#4831) (@bitraid)

  • Fixed empty-shell detection in the install script (#4813)

  • Fixed the install script writing nushell source lines into the config files of other shells (#4812)

Last modified: Jul 6, 2026
Copyright © 2025 Junegunn Choi