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.
| Type | Class | Name | Description |
|---|---|---|---|
| Change | Terminal | --popup (tmux 3.7+) | Opens in a floating pane instead of a modal popup |
| Change | Terminal | --popup (Zellij) | Uses the native pane border by default |
| New | Event | result-final | result that is not triggered while input is loading |
| New | Action | wait | Blocks subsequent actions until search completes |
| New | Binding | alt-left / alt-right | Bound 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-modein 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_ITEMexport when the item is larger than 64 KB; a huge item can overflowARG_MAXand break preview and other child commands withE2BIG(#4806)transformandbg-transformnow allow a bareputaction 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-Cin zsh no longer resolves symbolic links when changing the directory, consistent with thecdbuiltin (#4816) (@silverneko)Fixed horizontal mouse wheel events being treated as vertical scrolling (#4848) (@jason5122)
Fixed
bwtheme not inheriting overridden colorsfish:
CTRL-Rnow works when$fish_color_normalor$fish_color_commentis 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)