-
Notifications
You must be signed in to change notification settings - Fork 134
Description
Description
When embedding a Typeform using inline/snippet mode inside an <iframe>, dropdown/select questions render incorrectly on mobile devices or small screen sizes.
On small screens, the dropdown menu flips upward and renders outside the iframe boundary, causing the options to be visually clipped and
inaccessible.
This behavior occurs consistently on mobile or when the browser viewport width is reduced (responsive mode).
The same form behaves correctly when opened directly onform.typeform.com (standalone/full-page mode).
The issue appears specific to inline embed usage inside an iframe on mobile/small viewports.
Steps to Reproduce
- Create a Typeform containing a Dropdown question.
- Embed it using
@typeform/embedwith:
createWidget("FORM_ID", {
container: element,
medium: "snippet",
autoResize: true,
inlineOnMobile: true
});(or use standard data-tf-widget inline embed)
- Place this embed inside a parent HTML
<iframe>. - Test on:
- A real mobile device, or
- Chrome DevTools responsive mode (e.g., iPhone width).
- Scroll normally.
- Tap the dropdown field.
Expected Behavior
- The dropdown should render in a direction that keeps all options visible within the available viewport.
- The dropdown options should remain fully visible and selectable.
- Behavior should match standalone/mobile Typeform behavior.
Actual Behavior
- The dropdown flips upward.
- The dropdown menu renders beyond the iframe's top boundary.
- The options are visually clipped and inaccessible.
- This occurs consistently on mobile/small screens in the embedded context.
Important Observation
Opening the same form directly at:
https://form.typeform.com/to/FORM_ID
on the same mobile device results in correct dropdown behavior.
The issue only occurs when using inline embed inside an iframe on mobile/small screens.
Environment
@typeform/embedversion: 5.10.0- Devices tested: Chrome, iPhone, Android
- Embed Mode:
medium: "snippet"(inline) - Context: Embedded inside parent
<iframe>