<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Degraded-Mode on Tarragon</title><link>https://tarrragon.github.io/blog/tags/degraded-mode/</link><description>Recent content in Degraded-Mode on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 19 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/degraded-mode/index.xml" rel="self" type="application/rss+xml"/><item><title>Degraded mode 設計</title><link>https://tarrragon.github.io/blog/ux-design/04-error-recovery/degraded-mode-design/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/ux-design/04-error-recovery/degraded-mode-design/</guid><description>&lt;p>Degraded mode 是指系統的部分功能因為外部依賴不可用（網路斷線、服務故障、權限缺失）而暫時無法運作，但其他功能仍可正常使用。設計重點是讓使用者清楚知道哪些功能可用、哪些暫時不可用，而非讓整個 app 因為一個功能的失敗而停擺。&lt;/p>
&lt;h2 id="三種處理方式">三種處理方式&lt;/h2>
&lt;h3 id="靜默隱藏">靜默隱藏&lt;/h3>
&lt;p>把不可用的功能從 UI 上移除 — 按鈕消失、選單項目隱藏。使用者看不到這些功能，自然不會嘗試使用。&lt;/p>
&lt;p>靜默隱藏的風險是使用者困惑。經常使用的功能突然消失，使用者會以為是 bug 或 app 更新移除了功能。如果功能在恢復後重新出現，使用者的困惑加劇。&lt;/p>
&lt;p>靜默隱藏只適合使用者從未使用過的功能（新使用者尚未配對時隱藏連線按鈕）。已經使用過的功能突然隱藏會破壞使用者的心理模型。&lt;/p>
&lt;h3 id="明確標示">明確標示&lt;/h3>
&lt;p>功能的 UI 元素保留在畫面上，但加上不可用的視覺標示 — 灰色按鈕、「離線不可用」標籤、禁用狀態。使用者能看到功能存在，也知道目前暫時無法使用。&lt;/p>
&lt;p>明確標示的設計要點：&lt;/p>
&lt;p>&lt;strong>說明原因&lt;/strong>。「搜尋功能需要網路連線」比單純的灰色按鈕提供更多資訊。使用者知道原因後能自行判斷要等還是離開。&lt;/p>
&lt;p>&lt;strong>說明恢復條件&lt;/strong>。「連上網路後自動恢復」讓使用者知道什麼時候功能會回來。「重新啟動 app 後可用」讓使用者知道需要採取行動。&lt;/p>
&lt;p>&lt;strong>避免只靠顏色傳達狀態&lt;/strong>。灰色按鈕對色盲使用者可能不明顯。搭配文字標籤或圖示。&lt;/p>
&lt;h3 id="替代方案">替代方案&lt;/h3>
&lt;p>提供不需要失敗依賴的替代功能。線上搜尋不可用時提供離線搜尋（本地快取的資料）。即時同步不可用時提供本地儲存（恢復連線後自動同步）。&lt;/p>
&lt;p>替代方案的 UX 需要讓使用者知道目前使用的是替代版本。「離線模式 — 搜尋結果可能不是最新的」讓使用者對結果的準確度有正確預期。&lt;/p>
&lt;h2 id="全域-vs-功能級降級">全域 vs 功能級降級&lt;/h2>
&lt;h3 id="全域降級">全域降級&lt;/h3>
&lt;p>整個 app 進入降級模式 — 頂部顯示「離線模式」橫幅，所有需要網路的功能統一標示為不可用。適合網路連線是 app 核心依賴的場景。&lt;/p>
&lt;p>全域降級的 UI 實作簡單（一個全域狀態控制所有功能的可用性），但可能過度限制 — 部分功能不依賴網路也能運作。&lt;/p>
&lt;h3 id="功能級降級">功能級降級&lt;/h3>
&lt;p>每個功能獨立判斷自己的可用狀態。搜尋需要網路但筆記不需要 — 網路斷線時搜尋不可用，筆記正常。&lt;/p>
&lt;p>功能級降級更精確但實作更複雜 — 每個功能需要宣告自己的依賴，並在依賴不可用時提供對應的 UI 狀態。&lt;/p>
&lt;h2 id="降級狀態的進入和退出">降級狀態的進入和退出&lt;/h2>
&lt;h3 id="進入">進入&lt;/h3>
&lt;p>依賴不可用時自動進入降級狀態。進入時通知使用者（Snackbar、橫幅、狀態變更）。&lt;/p>
&lt;p>避免頻繁切換 — 網路訊號不穩定時，每秒在正常和降級之間切換會讓 UI 閃爍。加入穩定性判斷（連續 N 秒不可用才進入降級，連續 N 秒可用才退出降級）。&lt;/p>
&lt;h3 id="退出">退出&lt;/h3>
&lt;p>依賴恢復後自動退出降級狀態。退出時通知使用者（「已恢復連線」），並自動執行待完成的操作（同步、補發事件）。&lt;/p>
&lt;h2 id="下一步路由">下一步路由&lt;/h2>
&lt;ul>
&lt;li>錯誤訊息的撰寫 → &lt;a href="https://tarrragon.github.io/blog/ux-design/04-error-recovery/error-message-principles/" data-link-title="錯誤訊息撰寫原則" data-link-desc="錯誤訊息的兩個職責：使用者能讀懂發生什麼、使用者能決定下一步做什麼">錯誤訊息撰寫原則&lt;/a>&lt;/li>
&lt;li>重試循環的逃生口 → &lt;a href="https://tarrragon.github.io/blog/ux-design/04-error-recovery/error-loop-escape/" data-link-title="error → retry → error 循環的逃生口設計" data-link-desc="當重試持續失敗時，使用者需要第二條路 — 逃生口設計讓使用者能離開失敗循環而非被困住">error → retry → error 循環的逃生口&lt;/a>&lt;/li>
&lt;li>網路 gate 的 UX 處理 → &lt;a href="https://tarrragon.github.io/blog/ux-design/02-gate-fallback/network-offline-ux/" data-link-title="網路斷線 UX 模式" data-link-desc="Offline-first / retry / degraded mode 三種網路 gate 的處理策略 — 取決於功能是否依賴即時連線">ux-design 模組二 網路斷線 UX 模式&lt;/a>&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>Degraded mode 是指系統的部分功能因為外部依賴不可用（網路斷線、服務故障、權限缺失）而暫時無法運作，但其他功能仍可正常使用。設計重點是讓使用者清楚知道哪些功能可用、哪些暫時不可用，而非讓整個 app 因為一個功能的失敗而停擺。</p>
<h2 id="三種處理方式">三種處理方式</h2>
<h3 id="靜默隱藏">靜默隱藏</h3>
<p>把不可用的功能從 UI 上移除 — 按鈕消失、選單項目隱藏。使用者看不到這些功能，自然不會嘗試使用。</p>
<p>靜默隱藏的風險是使用者困惑。經常使用的功能突然消失，使用者會以為是 bug 或 app 更新移除了功能。如果功能在恢復後重新出現，使用者的困惑加劇。</p>
<p>靜默隱藏只適合使用者從未使用過的功能（新使用者尚未配對時隱藏連線按鈕）。已經使用過的功能突然隱藏會破壞使用者的心理模型。</p>
<h3 id="明確標示">明確標示</h3>
<p>功能的 UI 元素保留在畫面上，但加上不可用的視覺標示 — 灰色按鈕、「離線不可用」標籤、禁用狀態。使用者能看到功能存在，也知道目前暫時無法使用。</p>
<p>明確標示的設計要點：</p>
<p><strong>說明原因</strong>。「搜尋功能需要網路連線」比單純的灰色按鈕提供更多資訊。使用者知道原因後能自行判斷要等還是離開。</p>
<p><strong>說明恢復條件</strong>。「連上網路後自動恢復」讓使用者知道什麼時候功能會回來。「重新啟動 app 後可用」讓使用者知道需要採取行動。</p>
<p><strong>避免只靠顏色傳達狀態</strong>。灰色按鈕對色盲使用者可能不明顯。搭配文字標籤或圖示。</p>
<h3 id="替代方案">替代方案</h3>
<p>提供不需要失敗依賴的替代功能。線上搜尋不可用時提供離線搜尋（本地快取的資料）。即時同步不可用時提供本地儲存（恢復連線後自動同步）。</p>
<p>替代方案的 UX 需要讓使用者知道目前使用的是替代版本。「離線模式 — 搜尋結果可能不是最新的」讓使用者對結果的準確度有正確預期。</p>
<h2 id="全域-vs-功能級降級">全域 vs 功能級降級</h2>
<h3 id="全域降級">全域降級</h3>
<p>整個 app 進入降級模式 — 頂部顯示「離線模式」橫幅，所有需要網路的功能統一標示為不可用。適合網路連線是 app 核心依賴的場景。</p>
<p>全域降級的 UI 實作簡單（一個全域狀態控制所有功能的可用性），但可能過度限制 — 部分功能不依賴網路也能運作。</p>
<h3 id="功能級降級">功能級降級</h3>
<p>每個功能獨立判斷自己的可用狀態。搜尋需要網路但筆記不需要 — 網路斷線時搜尋不可用，筆記正常。</p>
<p>功能級降級更精確但實作更複雜 — 每個功能需要宣告自己的依賴，並在依賴不可用時提供對應的 UI 狀態。</p>
<h2 id="降級狀態的進入和退出">降級狀態的進入和退出</h2>
<h3 id="進入">進入</h3>
<p>依賴不可用時自動進入降級狀態。進入時通知使用者（Snackbar、橫幅、狀態變更）。</p>
<p>避免頻繁切換 — 網路訊號不穩定時，每秒在正常和降級之間切換會讓 UI 閃爍。加入穩定性判斷（連續 N 秒不可用才進入降級，連續 N 秒可用才退出降級）。</p>
<h3 id="退出">退出</h3>
<p>依賴恢復後自動退出降級狀態。退出時通知使用者（「已恢復連線」），並自動執行待完成的操作（同步、補發事件）。</p>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>錯誤訊息的撰寫 → <a href="/blog/ux-design/04-error-recovery/error-message-principles/" data-link-title="錯誤訊息撰寫原則" data-link-desc="錯誤訊息的兩個職責：使用者能讀懂發生什麼、使用者能決定下一步做什麼">錯誤訊息撰寫原則</a></li>
<li>重試循環的逃生口 → <a href="/blog/ux-design/04-error-recovery/error-loop-escape/" data-link-title="error → retry → error 循環的逃生口設計" data-link-desc="當重試持續失敗時，使用者需要第二條路 — 逃生口設計讓使用者能離開失敗循環而非被困住">error → retry → error 循環的逃生口</a></li>
<li>網路 gate 的 UX 處理 → <a href="/blog/ux-design/02-gate-fallback/network-offline-ux/" data-link-title="網路斷線 UX 模式" data-link-desc="Offline-first / retry / degraded mode 三種網路 gate 的處理策略 — 取決於功能是否依賴即時連線">ux-design 模組二 網路斷線 UX 模式</a></li>
</ul>
]]></content:encoded></item></channel></rss>