<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>328773</bug_id>
          
          <creation_ts>2026-10-24 03:21:39 -0700</creation_ts>
          <short_desc>Support the Element Fullscreen API (requestFullscreen) for all web content on iPhone, not just &lt;video&gt;</short_desc>
          <delta_ts>2026-10-24 11:27:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 27</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>206854</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>sreeharisureshmltr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2268735</commentid>
    <comment_count>0</comment_count>
    <who name="">sreeharisureshmltr</who>
    <bug_when>2026-10-24 03:21:39 -0700</bug_when>
    <thetext>SUMMARY

On iPhone, a web page can&apos;t go full screen. Only &lt;video&gt; can, through the non-standard HTMLVideoElement.webkitEnterFullscreen(), which hands playback to the native player. The standard Fullscreen API (Element.requestFullscreen(), document.fullscreenEnabled, :fullscreen, fullscreenchange) doesn&apos;t seem to be available. This applies in Safari and, as far as I can tell, in every other iOS browser too, since they all use WebKit.

According to MDN&apos;s browser compatibility data, the same API works for any element on other platforms:
- Safari on macOS: supported since 16.4 (prefixed since 5.1)
- Safari on iPadOS: supported since 16.4 (prefixed since 12), marked as partial with the note &quot;Only available on iPad, not on iPhone.&quot;
- Chrome on Android: supported since 71
- Firefox on Android: supported since 64

Source: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#browser_compatibility

I haven&apos;t personally tested all of these devices. Going by that data, iPhone is the main platform where a website can&apos;t use the whole screen, even though WebKit already ships the feature on iPad.

Please consider enabling Element.requestFullscreen() on iPhone for any element, with the same user-gesture requirement and exit behaviour as the platforms where it&apos;s already supported.


STEPS TO REPRODUCE

1. On an iPhone, open a page with the test case below in Safari, or in Chrome for iOS.
2. Note the value shown for fullscreenEnabled.
3. Tap &quot;Go full screen&quot;.

Test case:

&lt;!doctype html&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1,viewport-fit=cover&quot;&gt;
&lt;style&gt;
  html, body { margin: 0; height: 100%; background: #111; color: #eee; font: 18px system-ui; }
  #app { height: 100%; display: grid; place-content: center; gap: 12px; text-align: center; }
  :fullscreen #status::after { content: &quot; (in full screen)&quot;; }
&lt;/style&gt;
&lt;div id=&quot;app&quot;&gt;
  &lt;p id=&quot;status&quot;&gt;fullscreenEnabled: &lt;b id=&quot;enabled&quot;&gt;&lt;/b&gt;&lt;/p&gt;
  &lt;button id=&quot;go&quot;&gt;Go full screen&lt;/button&gt;
&lt;/div&gt;
&lt;script&gt;
  enabled.textContent = String(document.fullscreenEnabled);
  go.onclick = () =&gt; {
    const el = document.getElementById(&apos;app&apos;);
    if (!el.requestFullscreen) return alert(&apos;requestFullscreen is not supported in this browser&apos;);
    el.requestFullscreen({ navigationUI: &apos;hide&apos; })
      .then(() =&gt; console.log(&apos;entered&apos;))
      .catch(e =&gt; alert(&apos;requestFullscreen failed: &apos; + e.message));
  };
&lt;/script&gt;


EXPECTED

document.fullscreenEnabled is true. The tap puts the page into full screen, the browser bars hide and the content fills the display. A system gesture exits.


ACTUAL

The page never goes full screen. Even at its most minimal, the browser keeps a small tab on screen: at the bottom of the screen in portrait, and at the top in landscape. The page can&apos;t remove it, so it never gets the whole display.

Test case result: fullscreenEnabled shows [true/false], and tapping &quot;Go full screen&quot; [shows &quot;requestFullscreen is not supported in this browser&quot; / shows an error / does nothing].

Tested on: iPhone 17, iOS 27.0.


USE CASES BLOCKED TODAY

- Dashboards and always-on displays: status boards, clocks, smart-home panels and monitoring screens on a phone in a stand. For example, I&apos;m building a dashboard for an iPhone on a desk stand. In landscape, the browser toolbar takes a large share of an already short screen.
- Games: canvas and WebGL games have to give up screen space to browser bars.
- Custom video players: webkitEnterFullscreen() swaps the site&apos;s own player for the native one. Custom controls, caption styling, overlays and interactive video are all lost.
- Presentations: web presentation tools can&apos;t present full screen from a phone.
- Reading: e-book readers, comics and documentation sites that want distraction-free reading.
- Maps, and photo and 3D viewers: they need every pixel.
- Accessibility: users with low vision benefit from the largest possible content area.


WHY THE EXISTING WORKAROUNDS FALL SHORT

- webkitEnterFullscreen() on &lt;video&gt;: video only, and the native player replaces the page, so the page can&apos;t be interacted with.
- Safari&apos;s &quot;Hide Toolbar&quot; (page menu): the user has to find it in a menu, and the page can&apos;t trigger it. It doesn&apos;t remove the bars: a strip with the domain name stays, and the toolbar comes back on a tap near the edge.
- Add to Home Screen (standalone web app): requires a manual install that most users don&apos;t know about, and pages can&apos;t prompt for it. The installed app has separate cookies and storage from the browser, so users have to sign in again. It doesn&apos;t help normal in-browser use.
- Scrolling to collapse the toolbar: the compact address bar stays. It doesn&apos;t work for pages that don&apos;t scroll, like dashboards, games and maps.


POSSIBLE SAFEGUARDS

The main concern is probably spoofing: a full-screen page drawing fake system UI or a fake address bar. MDN notes that on iPad, full screen &quot;shows an overlay button which can not be disabled&quot; and that &quot;swiping down exits fullscreen mode&quot;. Bringing the same iPad behaviour to iPhone would be a big improvement, even with those limits. I&apos;m not a browser security expert, but these seem like reasonable protections:

1. User gesture required: requestFullscreen works only within a user gesture, as the spec already requires.
2. Notice on entry: a system overlay shows the site&apos;s domain and how to exit.
3. System-controlled exit: a gesture the page can&apos;t block, such as a swipe down from the top, always exits.
4. Automatic exit: full screen ends on app switch, tab switch, navigation to another site, or an incoming call.
5. Iframes: only with allow=&quot;fullscreen&quot;, per the spec.


SPEC REFERENCE

https://fullscreen.spec.whatwg.org/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2268736</commentid>
    <comment_count>1</comment_count>
    <who name="">sreeharisureshmltr</who>
    <bug_when>2026-10-24 03:27:27 -0700</bug_when>
    <thetext>This looks like a duplicate of bug 206854.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2268816</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2026-10-24 11:27:50 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 206854 ***</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>