)]}'
{"id": 6330376953921536, "name": "Update Device Memory API limits", "summary": "Update to a new set of possible values for the Device Memory API:\n- Android: 1, 2, 4, 8\n- Others: 2, 4, 8, 16, 32\nReplacing the old values of 0.25, 0.5, 1, 2, 4, 8 which have grown outdated.\n\nThis will reduce the fingerprinting risks at the lower end since device capabilities have improved since these were set.\n\nIt will also allow better usage and segmenting of high-end devices as requested by developers (https://github.com/w3c/device-memory/issues/50).", "markdown_fields": [], "blink_components": ["Blink>JavaScript>API"], "star_count": 95, "search_tags": ["DeviceMemory", "memory", "Sec-CH-DeviceMemory"], "created": {"by": "barrypollard@google.com", "when": "2026-01-19 20:43:25.460501"}, "updated": {"by": "barrypollard@google.com", "when": "2026-03-30 10:11:26.755442"}, "category": "Performance", "category_int": 13, "feature_notes": null, "web_feature": "device-memory", "is_official_web_feature": true, "webdx_usecounter_enum": null, "enterprise_feature_categories": ["2"], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": false, "is_releasenotes_publish_ready": false, "stages": [{"id": 5147422063984640, "created": "2026-01-19 20:43:26.304278", "feature_id": 6330376953921536, "stage_type": 110, "display_name": null, "intent_stage": 7, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5074873053478912, "created": "2026-01-19 20:43:26.369495", "feature_id": 6330376953921536, "stage_type": 120, "display_name": null, "intent_stage": 1, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 6328802546417664, "created": "2026-01-19 20:43:26.514501", "feature_id": 6330376953921536, "stage_type": 130, "display_name": null, "intent_stage": 2, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5174697388015616, "created": "2026-01-19 20:43:26.558039", "feature_id": 6330376953921536, "stage_type": 140, "display_name": null, "intent_stage": 4, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5114163917619200, "created": "2026-01-19 20:43:26.613505", "feature_id": 6330376953921536, "stage_type": 150, "display_name": null, "intent_stage": 3, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5146653801709568, "created": "2026-01-19 20:43:26.731256", "feature_id": 6330376953921536, "stage_type": 160, "display_name": null, "intent_stage": 5, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAH6JyLQFDfe%3Dv2LS0-XWh2nDhP0_7_K6o4mAiK_FAA0ZZrZ1KA%40mail.gmail.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 147, "android_first": 147, "ios_first": null, "webview_first": 147, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-03-30 10:11:26.755442", "creator_email": "barrypollard@google.com", "updater_email": "barrypollard@google.com", "owner_emails": ["barrypollard@google.com"], "editor_emails": [], "cc_emails": [], "spec_mentor_emails": ["yoavweiss@chromium.org"], "unlisted": false, "deleted": false, "editors": [], "cc_recipients": [], "spec_mentors": ["yoavweiss@chromium.org"], "creator": "barrypollard@google.com", "feature_type": "New or changed feature", "feature_type_int": 0, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 5146653801709568, "bug_url": "https://issues.chromium.org/issues/454354290", "launch_bug_url": null, "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Blink>JavaScript>API&blocking=454354290&cc=barrypollard@google.com", "screenshot_links": [], "first_enterprise_notification_milestone": null, "enterprise_impact": 1, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": null, "finch_name": "kUpdatedDeviceMemoryLimitsFor2026", "non_finch_justification": "I am not planning on rolling this out via finch giving the low risk, but will include a feature flag (`kUpdatedDeviceMemoryLimitsFor2026`) to allow it to be turned off if the worst should happen.", "ongoing_constraints": null, "rollout_plan": 0, "rollout_plan_displayname": "Will ship enabled for all users", "motivation": "The Device Memory API defines a HTTP Client Hint header and a JavaScript API to surface device capability for memory i.e. device RAM, in order to enable web apps to customize content depending on device memory constraints.\n\nTo reduce the risk of fingerprinting the amount of RAM reported is coarsened to the nearest power-of-two value, and also capped at a lower amount and an upper amount.\n\nIn Chrome this meant the possible values were one of: 0.25, 0.5, 1, 2, 4, 8, which was based on common device capabilities at the time the API was introduced.\n\nDevice capabilities have improved and the lower limits (0.25, 0.5, and even 1) are seen far less frequently, so now have an increased fingerprinting risk.\n\nAt the same time, the upper limit of 8 is constrictive beyond mobile since it buckets a larger group of devices and new capabilities (such as LLMs) mean developers would like to segment further.", "devtrial_instructions": null, "activation_risks": "None, other than those noted in Interoperability and compatibility risks.", "measurement": "This is already track with an existing use counters:\n- JS API - https://chromestatus.com/metrics/feature/timeline/popularity/2121\n- Client Hints: https://chromestatus.com/metrics/feature/timeline/popularity/4046\n- Client Hints (deprecated name): https://chromestatus.com/metrics/feature/timeline/popularity/2017", "availability_expectation": "Feature is available only in Chromium browsers for the foreseeable future.", "adoption_expectation": "RUM Providers using this feature can validate increased usefulness of the new values.", "adoption_plan": "Present at RUM CG on the change and ask for feedback after implementation.", "initial_public_proposal_url": "https://github.com/w3c/device-memory/issues/50", "explainer_links": ["https://github.com/w3c/device-memory/issues/50"], "requires_embedder_support": false, "spec_link": "https://github.com/w3c/device-memory/pull/53", "api_spec": true, "automation_spec": true, "interop_compat_risks": "While this does not introduce a new API and the values were somewhat* non-standardised the current values have been around for some time for Chromium-based browsers (the only implementor at this time).\n\n* Note: the ambiguity has been cleared up in the spec to make it super clear the values are implementation-defined and so subject to change.\n\nAs such , I foresee two risks here:\n- Some web apps have gated some features on < 2GB RAM and these devices will now start to report as the minimum 2GB RAM and so enable features the devices may not be capable of using.\n- Some webpages may have incorrectly coded to presume no value >8 will ever be reported.\n\nThe compatibility risk here however seems small, and the privacy risk of remaining as is is not small.\n\nHowever the feature has been gated behind a feature flag so, should the worst happen, we can revert to the original values.", "all_platforms": true, "all_platforms_descr": "Note different values on Android and other platforms.", "non_oss_deps": "No", "anticipated_spec_changes": "Spec issues resolved: https://github.com/w3c/device-memory/pull/53", "security_risks": "Internal stats were reviewed to confirm the lower bounds are rarely used and so present a privacy risk. This was also confirmed with discussions with external RUM providers.\n\nAdditionally the new upper bounds were decided upon based on similar data review (internal only, since these values are not currently exposed\u2014which is what we are trying to fix).\n\nFinally, the upper bounds are not planned to be increased (yet) on Android since >8GB RAM is still rare for mobile devices.", "ergonomics_risks": "Very low-end devices may no longer be excluded from features web developers have previously restricted to >= 2GB RAM.", "wpt": true, "wpt_descr": "https://wpt.fyi/results/device-memory?label=experimental&label=master&aligned\n\nThese tests will be updated as part of this change (https://chromium-review.git.corp.google.com/c/chromium/src/+/7410045).", "webview_risks": "Kill switch (kUpdatedDeviceMemoryLimitsFor2026) included.", "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": "The feature is available from standard APIs, but it is not currently possible to emulate the values (since that will only change the reported value and not the amount of RAM used so is of limited use).", "doc_links": [], "sample_links": [], "prefixed": null, "tags": ["DeviceMemory", "memory", "Sec-CH-DeviceMemory"], "tag_review": "The spec stated these values were subject to change.", "tag_review_status": "Not applicable", "tag_review_status_int": 4, "security_review_status": "Pending", "security_review_status_int": 1, "privacy_review_status": "Pending", "privacy_review_status_int": 1, "security_continuity_id": null, "security_launch_issue_id": null, "updated_display": null, "resources": {"samples": [], "docs": []}, "comments": null, "ff_views": 5, "safari_views": 7, "web_dev_views": 2, "browsers": {"chrome": {"bug": "https://issues.chromium.org/issues/454354290", "blink_components": ["Blink>JavaScript>API"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["barrypollard@google.com"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": true, "desktop": 147, "android": 147, "webview": 147, "ios": null}, "ff": {"view": {"url": "https://groups.google.com/g/mozilla.dev.platform/c/cfydu35XdnY/m/3IqYn0oJAQAJ", "notes": "Firefox didn't go as far as giving a negative signal AFAIK but have raised concerns. They have not blocked updating these limits.", "text": "No signal", "val": 5}}, "safari": {"view": {"url": "https://github.com/w3c/device-memory/issues/24", "notes": "Webkit are negative to the original API but have not blocked updating these limits.", "text": "Negative", "val": 7}}, "webdev": {"view": {"text": "Positive", "val": 2, "url": "https://github.com/w3c/device-memory/issues/50", "notes": "Proposal"}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": "This was discussed in the WebPerf WG group on 2026-01-15 and we were in agreement to change this."}}}, "standards": {"spec": "https://github.com/w3c/device-memory/pull/53", "maturity": {"text": "Specification currently under development in a Working Group", "short_text": "Working draft", "val": 4}}, "is_released": false, "is_enterprise_feature": false, "experiment_timeline": null, "ai_test_eval_report": null, "ai_test_eval_run_status": null, "ai_test_eval_status_timestamp": null}