Chrome Flags That Never Expire: A Comprehensive Guide
Ever tinkered with Chrome flags? They're like hidden settings for Google Chrome, letting you experiment with upcoming features or tweak existing ones. Some flags are designed to be temporary, while others seemingly stick around forever. This article dives into the world of Chrome flags that never expire, offering a glimpse into Chromium's development and customization options.
What are Chrome Flags Anyway?
Chrome flags are experimental features within the Chrome browser that users can enable or disable. They're not part of the standard Chrome experience but offer a sneak peek into future functionalities or allow for customization beyond the default settings.
Understanding the "Never-Expire" List
The Chromium project maintains a list of flags that are permitted to have their expiration milestone set to -1, meaning they effectively don't expire. This doesn't mean they must be permanent, but rather that they can be. This list ensures certain essential debugging, development, or testing features remain accessible. They are validated by a unit test ( AboutFlagsTest.OnlyPermittedFlagsNeverExpire).
Why Have Flags That Don't Expire?
There are a few key reasons for having these persistent flags:
- Debugging and Development: Some flags are crucial for developers testing new features or debugging existing ones.
- Accessibility: Certain flags might offer accessibility improvements that some users rely on.
- Legacy Support: Occasionally, a flag might need to remain available to support older systems or configurations.
Key Chrome Flags and Their Potential Use Cases:
Here's a breakdown of some interesting flags from the list, showcasing their potential use and the reasons why they might be kept around:
disable-accelerated-2d-canvas
: Disables hardware acceleration for 2D canvas elements. This is useful for debugging rendering issues or testing software-based rendering.enable-gpu-rasterization
: Forces rasterization to occur on the GPU, potentially improving performance.force-color-profile
: Allows you to override the default color profile, useful for testing color accuracy on different displays.ignore-gpu-blocklist
: Ignores the GPU blocklist, potentially enabling hardware acceleration on unsupported GPUs (use with caution!).
Accessing and Modifying Chrome Flags
To access Chrome flags, type chrome://flags
into your address bar and press Enter. Be aware that modifying flags can sometimes lead to instability or unexpected behavior and experiment with caution.
The Complete List of Potential Non-Expiring Chrome Flags:
Here’s the comprehensive list of Chrome flags that can be set to never expire, as of the latest Chromium source (note: their status may change):
account-reauthentication-recent-time-window
allow-all-sites-to-initiate-mirroring
allow-cross-device-feature-suite
allow-previews
always-enable-hdcp
arc-native-bridge-toggle
ash-debug-shortcuts
ash-enable-unified-desktop
block-root-window-accessible-name-change-event
borealis-enable-unsupported-hardware
cellular-bypass-esim-installation-connectivity-check
cellular-use-second-euicc
chrome-labs
cws-info-fast-check
dcheck-is-fatal
disable-accelerated-2d-canvas
disable-accelerated-mjpeg-decode
disable-accelerated-video-decode
disable-accelerated-video-encode
disable-bruschetta-install-checks
disable-buffer-bw-compression
disable-explicit-dma-fences
disable-facilitated-payments-merchant-allowlist
disable-javascript-harmony-shipping
disallow-doc-written-script-loads
enable-autofill-credit-card-upload
enable-benchmarking
enable-command-line-on-non-rooted-devices
enable-component-updater-test-request
enable-data-reduction-proxy-server-experiment
enable-debug-for-store-billing
enable-experimental-web-platform-features
enable-experimental-webassembly-features
enable-fake-keyboard-heuristic
enable-fake-mouse-heuristic
enable-force-dark
enable-future-v8-vm-features
enable-gpu-rasterization
enable-gpu-service-logging
enable-hardware-secure-decryption
enable-input-event-logging
enable-javascript-harmony
enable-libinput-to-handle-touchpad
enable-lite-video
enable-logging-js-console-messages
enable-network-logging-to-file
enable-noscript-previews
enable-offline-previews
enable-palm-suppression
enable-parallel-downloading
enable-perfetto-system-tracing
enable-quic
enable-reader-mode-in-cct
enable-resource-loading-hints
enable-rfc-8925
enable-show-autofill-signatures
enable-site-per-process
enable-touchscreen-calibration
enable-ui-devtools
enable-virtual-keyboard
enable-web-authentication-testing-api
enable-web-payments-experimental-features
enable-webassembly-baseline
enable-webassembly-lazy-compilation
enable-webassembly-tiering
enable-webgl-developer-extensions
enable-webgl-draft-extensions
enable-webgpu-developer-features
enable-windows-gaming-input-data-fetcher
enable-zero-copy
extensions-on-chrome-urls
external-navigation-debug-logs
force-color-profile
force-effective-connection-type
force-show-update-menu-badge
force-startup-signin-promo
force-text-direction
force-ui-direction
force-update-menu-type
fullscreen-promos-manager-skip-internal-limits
fullscreen-viewport-adjustment-experiment
gesture-properties-dbus-service
ignore-gpu-blocklist
ignore-previews-blocklist
in-product-help-demo-mode-choice
in-product-help-use-client-config
instant-tethering
ios-breadcrumbs
list-all-display-modes
lite-video-force-override-decision
media-router-cast-allow-all-ips
memlog
memlog-sampling-rate
memlog-stack-mode
minutes-delay-to-restore-gaia-cookies-if-deleted
omaha-min-sdk-version-android
on-device-app-controls
optimization-guide-debug-logs
optimization-guide-enable-dogfood-logging
overlay-scrollbars
overlay-strategies
prerender2
printing-ppd-channel
protected-audience-debug-token
reader-mode-heuristics
record-web-app-debug-info
related-website-sets-permission-grants
release-notes-notification-all-channels
release-notes-notification-always-eligible
restore-session-from-cache
scheduler-configuration
set-market-url-for-testing
show-autofill-type-predictions
show-bluetooth-debug-log-toggle
show-overdraw-feedback
show-performance-metrics-hud
show-taps
show-touch-hud
smooth-scrolling
strict-origin-isolation
synthesized-restore-session
system-keyboard-lock
terminal-dev
tethering-experimental-functionality
tint-composited-content
top-chrome-touch-ui
translate-force-trigger-on-english
ui-debug-tools
ui-disable-partial-swap
ui-slow-animations
unsafely-treat-insecure-origin-as-secure
update-menu-item-custom-summary
use-android-staging-smds
use-angle
use-custom-messages-domain
use-fake-device-for-media-stream
use_messages_staging_url
use-stork-smds-server-address
use-sync-sandbox
use-wallpaper-staging-url
wait-threshold-seconds-for-capabilities-api
wallet-service-use-sandbox
wallpaper-fast-refresh
web-authentication-permit-enterprise-attestation
webrtc-hw-decoding
webrtc-hw-encoding
webtransport-developer-mode
webxr-runtime
webxr-shared-buffers
windows-system-tracing
Risks and Considerations
While experimenting with Chrome flags can be exciting, remember:
- Instability: Flags are experimental and may cause Chrome to crash or behave unexpectedly.
- Data Loss: In rare cases, modifying flags could potentially lead to data loss.
- Security: Some flags might weaken Chrome's security protections.
Proceed with caution and only enable flags from trusted sources. If you encounter issues, reset all flags to their default values by clicking the "Reset all" button at the top of the chrome://flags
page.
The Future of Chrome Flag Customization
The list of potentially non-expiring Chrome flags provides valuable insights into Chromium's development process. It highlights the features that Google deems essential for debugging, testing, or supporting specific user needs. As Chrome evolves, expect the flag landscape to change, with some features graduating to stable releases and new experimental options emerging. But remember to proceed with caution, as instability can happen.