HTML5 APIs Common Mistakes to Avoid
Modern HTML5 APIs make web applications powerful, but incorrect usage can lead to security issues, browser incompatibility, poor performance, privacy concerns, and a bad user experience. The following are some of the most common mistakes developers should avoid.
1. Not Checking Browser Support
Never assume every browser supports every HTML5 API. APIs like File System Access, WebGPU, Web Bluetooth, and Battery Status have limited support.
// Good
if ("clipboard" in navigator) {
navigator.clipboard.writeText("Hello");
} 2. Ignoring Feature Detection
Detect API availability instead of checking browser names. Feature detection creates more reliable and future-proof applications.
3. Forgetting HTTPS Requirements
Many APIs only work in secure contexts, including:
- Clipboard API
- Geolocation API
- Notifications API
- MediaDevices API
- Service Workers
- Web Bluetooth
Always deploy production applications over HTTPS.
4. Requesting Permissions Too Early
Avoid requesting camera, microphone, notifications, or location permissions immediately after page load. Wait until users initiate an action.
5. Ignoring User Privacy
Only collect location, media, clipboard, or device information when necessary. Explain why permission is needed before requesting it.
6. Not Handling Permission Denials
Users may deny permission requests. Your application should continue to function gracefully instead of crashing.
try {
const stream =
await navigator.mediaDevices.getUserMedia({
video: true
});
} catch (error) {
console.log("Permission denied.");
} 7. Blocking the Main Thread
Heavy image processing, parsing, or calculations should run inside Web Workers instead of freezing the user interface.
8. Using Local Storage for Sensitive Data
Never store passwords, authentication tokens, credit card information, or other sensitive data in Local Storage because JavaScript can access it.
9. Forgetting Error Handling
APIs such as Fetch, Clipboard, Geolocation, IndexedDB, and File APIs can
fail. Always use try...catch or Promise error handling.
try {
const response =
await fetch("/api/users");
} catch (error) {
console.error(error);
} 10. Ignoring Accessibility
Canvas, custom media players, drag-and-drop interfaces, and custom controls should include keyboard support, ARIA attributes, and screen reader alternatives.
11. Forgetting Cleanup
Remove event listeners, close Broadcast Channels, terminate Web Workers, and stop Media Streams when they are no longer needed to prevent memory leaks.
12. Not Optimizing Performance
Loading large files, images, videos, or datasets without optimization can reduce application performance.
- Lazy load media
- Compress images
- Use caching
- Virtualize large lists
- Use requestAnimationFrame() for animations
13. Relying on Deprecated APIs
Avoid deprecated browser APIs such as:
| Deprecated API | Modern Alternative |
|---|---|
document.execCommand() | Clipboard API |
| Application Cache | Service Workers + Cache API |
| Sync XHR | Fetch API |
14. Skipping Progressive Enhancement
Core functionality should work even when advanced APIs are unavailable. Enhance the experience only when browser support exists.
15. Not Testing Across Browsers
Always verify HTML5 APIs in Chrome, Edge, Firefox, Safari, Android, and iOS browsers because implementation details can vary.
Quick Checklist
- ✔ Check browser support.
- ✔ Use feature detection.
- ✔ Require HTTPS.
- ✔ Handle permissions gracefully.
- ✔ Protect user privacy.
- ✔ Handle API errors.
- ✔ Optimize performance.
- ✔ Avoid deprecated APIs.
- ✔ Support accessibility.
- ✔ Test across multiple browsers and devices.