
Make API request to OpenAI with fetch and Qwik forms, protect API keys with Qwik actions, and hide secrets with environment variables.

In this post, we use JavaScript to create the file upload request. You'll learn how to access files, create the HTTP request, and make it reusable.

This post shows you how to upload files using only HTML. Access user files, create the HTTP request, and set the correct content-type headers.

Avoid duplicate-request & race-condition when creating JavaScript enhanced forms. Cancel previous fetch requests with AbortController.

Learn how to build backend APIs that support progressive enhancement by detecting if a request was submitted with HTML forms or JavaScript.

Learn how the CSS :has() pseudo-class can improve HTML forms through validation hints, conditional content, fancier designs, and more.

Learn how to make HTML images better for users with responsive sizes and modern formats without making your life as a developer much harder.

You may be familiar with using devtools to modify a website's HTML. In this blog post, I'll show you two more ways: contenteditable and designMode.

The HTML capture attribute is interesting because it allows you to activate a user's camera with just HTML. This article covers it in more depth.

Ignoring progressive enhancement could be seriously hurting your conversions. This article will show you how to build resilience into your apps.