Browser Support
Browser compatibility and support information.
Supported Browsers
Desktop Browsers
| Browser | Minimum Version | Status | |---------|----------------|--------| | Chrome | 90+ | ✅ Fully Supported | | Firefox | 88+ | ✅ Fully Supported | | Safari | 14+ | ✅ Fully Supported | | Edge | 90+ | ✅ Fully Supported | | Opera | 76+ | ✅ Fully Supported |
Mobile Browsers
| Browser | Minimum Version | Status | |---------|----------------|--------| | Chrome (Android) | 90+ | ✅ Fully Supported | | Safari (iOS) | 14+ | ✅ Fully Supported | | Firefox (Android) | 88+ | ✅ Fully Supported | | Samsung Internet | 14+ | ✅ Fully Supported |
Feature Support
Core Features
All core features work in supported browsers:
- ✅ Server-side rendering
- ✅ Client-side routing
- ✅ Form handling
- ✅ Image optimization
- ✅ PWA features
Progressive Enhancement
Features gracefully degrade in older browsers:
- Service Worker: Falls back to standard web app
- WebP/AVIF images: Falls back to JPEG/PNG
- CSS Grid: Falls back to Flexbox
- Modern JavaScript: Transpiled to ES5
Polyfills
Automatic Polyfills
Next.js automatically includes polyfills for:
- Fetch API
- Promise
- Object.assign
- Array methods
Manual Polyfills
For additional browser support, add polyfills:
// polyfills.ts
import 'core-js/stable';
import 'regenerator-runtime/runtime';
Testing
Browser Testing
Test in the following browsers:
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile browsers
Testing Tools
- BrowserStack: Cross-browser testing
- Sauce Labs: Automated testing
- Local Testing: Manual testing in each browser
Known Issues
Safari
- Issue: Service Worker may not work in private browsing
- Workaround: Show message to user
- Status: Browser limitation
Internet Explorer
- Status: Not supported
- Reason: IE is deprecated
- Recommendation: Use modern browser
Feature Detection
Modern Features
// Check for Service Worker support
if ('serviceWorker' in navigator) {
// Register service worker
}
// Check for WebP support
function supportsWebP() {
const canvas = document.createElement('canvas');
return canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0;
}
// Check for Intersection Observer
if ('IntersectionObserver' in window) {
// Use Intersection Observer
}
Graceful Degradation
// Example: Fallback for missing features
if (typeof window.IntersectionObserver !== 'undefined') {
// Use Intersection Observer
} else {
// Fallback to scroll events
}
Performance
Browser Performance
Performance targets by browser:
- Chrome: 90+ Lighthouse score
- Firefox: 90+ Lighthouse score
- Safari: 85+ Lighthouse score
- Edge: 90+ Lighthouse score
Optimization
Optimizations applied:
- Code splitting
- Tree shaking
- Minification
- Compression
- Image optimization
Accessibility
Screen Readers
Tested with:
- ✅ NVDA (Windows)
- ✅ JAWS (Windows)
- ✅ VoiceOver (macOS/iOS)
- ✅ TalkBack (Android)
Keyboard Navigation
- ✅ Tab navigation
- ✅ Arrow keys
- ✅ Enter/Space
- ✅ Escape key
Mobile Support
Responsive Design
- ✅ Mobile-first approach
- ✅ Touch-friendly targets (44x44px minimum)
- ✅ Viewport meta tag
- ✅ Flexible layouts
Mobile Features
- ✅ PWA install
- ✅ Offline support
- ✅ Touch gestures
- ✅ Mobile-optimized images
Browser-Specific Notes
Chrome
- Best performance
- Full feature support
- Recommended for development
Firefox
- Good performance
- Full feature support
- Good developer tools
Safari
- Good performance
- Some limitations with Service Worker
- WebKit-specific features
Edge
- Chromium-based
- Similar to Chrome
- Good performance
Getting Help
If you encounter browser-specific issues:
- Check browser console for errors
- Test in multiple browsers
- Check Troubleshooting Guide
- Open an issue with browser details
Resources
- Can I Use - Browser compatibility
- MDN Browser Compatibility
- Next.js Browser Support