Skip to main content

Browser Support

Comprehensive browser compatibility information for Focus Chat.

Supported Browsers​

Desktop Browsers​

BrowserMinimum VersionFull SupportNotes
Chrome54+✅Recommended browser
Firefox63+✅Full feature support
Safari10.1+✅macOS and iOS
Edge79+✅Chromium-based Edge
Opera41+✅Chromium-based

Mobile Browsers​

BrowserMinimum VersionFull SupportNotes
Chrome Mobile54+✅Android
Safari Mobile10.3+✅iOS
Firefox Mobile63+✅Android
Samsung Internet6.2+✅Android

Legacy Browsers (Not Supported)​

BrowserLast VersionAlternative
Internet ExplorerAll versionsUse Edge
Edge Legacy18 and belowUpgrade to Chromium Edge
Chrome53 and belowUpdate browser
Firefox62 and belowUpdate browser
Safari10.0 and belowUpdate browser

Required Web Standards​

Focus Chat requires the following modern web standards:

Core Technologies​

  • Custom Elements v1: For <focus-chat> element
  • Shadow DOM v1: For style isolation
  • ES6+ JavaScript: Arrow functions, classes, modules
  • Fetch API: For HTTP requests
  • Promise API: For asynchronous operations

Optional Technologies​

  • Server-Sent Events: For streaming responses (graceful fallback)
  • Web Storage: For conversation history (graceful fallback)
  • CSS Custom Properties: For dynamic theming (fallback to static)

Feature Detection​

Automatic Detection​

Focus Chat automatically detects browser capabilities:

// Custom Elements support
if ('customElements' in window) {
console.log('Custom Elements supported');
} else {
console.log('Custom Elements not supported');
}

// Shadow DOM support
if ('attachShadow' in Element.prototype) {
console.log('Shadow DOM supported');
}

// Fetch API support
if ('fetch' in window) {
console.log('Fetch API supported');
}

Graceful Degradation​

When optional features aren't available:

  • No Server-Sent Events: Falls back to regular HTTP requests
  • No Web Storage: History not persisted (still works per session)
  • No CSS Variables: Uses static fallback colors

Polyfills​

Web Components Polyfill​

For browsers that need Web Components support:

<!-- Load polyfills before Focus Chat -->
<script src="https://unpkg.com/@webcomponents/webcomponentsjs@2/webcomponents-loader.js"></script>
<script src="https://embed.agents.inhotel.io/focus-chat/latest/focus-chat.min.js"></script>

Fetch Polyfill (Optional)​

Focus Chat relies on the browser’s fetch API. Most modern browsers support it natively.
If you need to support very old browsers that do not have fetch, you can include a polyfill.

Note: InHotel does not host a fetch polyfill.
You may use a publicly available one (such as whatwg-fetch) or host a copy yourself.

Example using whatwg-fetch:

<script src="/path/to/whatwg-fetch.umd.js"></script>

Performance Characteristics​

Loading Performance by Browser​

BrowserScript Load TimeInitialization TimeMemory Usage
Chrome~50ms~80ms~2MB
Firefox~60ms~90ms~2.2MB
Safari~70ms~100ms~2.5MB
Edge~55ms~85ms~2.1MB

Times are approximate and vary by device

Runtime Performance​

FeatureChromeFirefoxSafariEdge
Message Rendering60fps60fps60fps60fps
Streaming Updates✅✅✅✅
Shadow DOM✅✅✅✅
CSS Variables✅✅✅✅

Mobile Considerations​

Touch Interactions​

  • All buttons sized for touch (44px minimum)
  • Proper touch event handling
  • No hover states on touch devices

Viewport Handling​

<meta name="viewport" content="width=device-width, initial-scale=1.0">

iOS Safari Specifics​

  • Input field zoom prevention (use 16px+ font size)
  • Safe area handling for newer iPhones
  • Proper keyboard handling

Android Specifics​

  • Chrome Custom Tabs compatibility
  • WebView compatibility
  • Various Android browser support

Testing Strategy​

Browser Testing Matrix​

We test on:

  • Latest versions of all supported browsers
  • Previous major version of each browser
  • Mobile versions on actual devices
  • WebView environments (mobile apps)

Automated Testing​

// Feature detection tests
describe('Browser Support', () => {
test('Custom Elements supported', () => {
expect('customElements' in window).toBe(true);
});

test('Shadow DOM supported', () => {
expect('attachShadow' in Element.prototype).toBe(true);
});

test('Fetch API supported', () => {
expect('fetch' in window).toBe(true);
});
});

Manual Testing Checklist​

  • Widget loads and displays
  • Chat opens and closes
  • Messages send and receive
  • Styling applies correctly
  • Touch interactions work (mobile)
  • No console errors

Content Security Policy​

Focus Chat is compatible with strict CSP policies:

<meta http-equiv="Content-Security-Policy" content="
default-src 'self';
script-src 'self' https://embed.agents.inhotel.io;;
connect-src 'self' https://embed.agents.inhotel.io; https://your-agent-domain.com; wss://your-agent-domain.com;
style-src 'self' 'unsafe-inline';
img-src 'self' data: https:;
">

CSP Compatibility​

  • No eval(): Focus Chat doesn't use eval
  • No inline scripts: All JavaScript is in external files
  • Inline styles: Required for Shadow DOM (use 'unsafe-inline' for style-src)

Accessibility​

Screen Reader Support​

  • Proper ARIA labels and roles
  • Keyboard navigation support
  • Focus management

Keyboard Navigation​

  • Tab order follows logical flow
  • Enter key sends messages
  • Escape key closes chat

High Contrast Mode​

  • Respects system high contrast settings
  • Maintains usability with custom colors

Known Issues and Workarounds​

Safari iOS Keyboard​

Issue: Virtual keyboard can cover chat input Workaround: Chat automatically adjusts position

Chrome Android WebView​

Issue: Some WebView versions have Custom Elements bugs Workaround: Use polyfill for WebView environments

Firefox Focus​

Issue: Limited Web Components support Status: Works with polyfills

Browser-Specific Optimizations​

Chrome​

  • Uses native Custom Elements implementation
  • Optimal Shadow DOM performance
  • Full streaming support

Firefox​

  • Custom Elements polyfill for older versions
  • Good Shadow DOM performance
  • Full feature support

Safari​

  • iOS-specific touch optimizations
  • Safe area handling
  • WebKit-specific CSS fixes

Edge​

  • Chromium-based versions fully supported
  • Legacy Edge not supported
  • Good performance characteristics

Future Compatibility​

Upcoming Features​

  • Web Components v2: Will adopt when available
  • CSS Containment: For better performance

Deprecation Timeline​

  • Legacy browser support: Reviewed annually
  • Polyfill requirements: Minimize over time
  • New web standards: Adopt as available

Next Steps​