Back to Blog

How to Use Background Jobs for Faster Form Submission in Web Apps

Royan Gagas
July 24, 2025
Share
development
journey
nodejs
product
How to Use Background Jobs for Faster Form Submission in Web Apps

When building the "Create Post Recommendation" feature for my side project rekkoku.my.id, I stumbled into something that felt annoying.

Users were supposed to submit Google Maps links for their recommendations without uploading any photos or typing in place names. The app would fetch all of that automatically, just like a link preview.

Simple in theory, but not in pratice.



The Problem

Fetching metadata (name, image, description) from each Google Maps link took time. Like, noticeaby long, especially on mobile or with bad networks.

If I handled that during the form submission users would sit there staring at a loading spinner... thinking:

"Is this broken?" "Should I refresh?"

Not good.

I realized that while the idea was to make things easier for the user, the UX was doing the opposite. Just because I wanted it to look nice (auto-preview!), doesn't mean it has to be synchronous.



The Solution: Background Jobs

Instead of fetching everything up front, I flipped the approach:

Form submission should be instant.

Preview metadata? That can wait.

So I built a simple queue + background process flow:

1.User submits: Only the post title, and city are saved.
2.Post gets an ID for reference.
3.Each link is added to a background job queue.
4.A worker fetches metadata for each link: place name, image, description.
5.Once ready, the post gets updated silently in the background.




Why This Matters

People often say, "Build side projects to learn."

Well, I say: “Build them like they matter.”

Implementing background jobs might feel overkill for a non-commercial app.

But honestly? It helped me think better.

I respected user time.
I learned how to break down features into async workflows.
I made something that felt fast, even if it was faking speed behind the scenes.

And yeah, it's still just a side project.

But now it behaves like a real app.



Conclusion

Next time you’re tempted to cram everything into the form submission process, ask yourself:

“Can this happen later?” “Does the user need to wait for this part?”

If the answer is no, you probably need a background job.