I’m Building Excel in Vanilla JavaScript – From Scratch

OleksiiOleksii
2 min read

About five years ago, while browsing the web, I stumbled upon an open-source project: someone had built a basic Excel-like spreadsheet using just JavaScript. At the time, I was both impressed and intimidated — it seemed incredibly complex.

Today, with over 7 years of experience behind my back, I’ve decided to take on the same challenge.

Not to copy someone else’s work.

But to create my own version of Excel — fully from scratch — as a way to push my boundaries and showcase my senior-level frontend skills.

Why JavaScript — Not TypeScript?

I use TypeScript daily and I love it. But this project will be pure JavaScript. Here’s why:

  1. Back to the roots.

    I want to revisit and strengthen my deep JS fundamentals. No sugarcoating. Just raw logic.

  2. Maximum control.

    In complex UI logic like spreadsheets (resizing cells, drag-and-drop, keyboard interactions), sometimes dynamic typing gives more flexibility.

  3. Show what JavaScript alone can do.

    I want to demonstrate the full power of JS without relying on frameworks or typesystems.

This is not a toy project. I plan to make it feel smooth, efficient, and scalable — like a real product.

What I’m Building

Here are just some of the core features I’ll implement:

  • Custom component architecture

  • Internal event system

  • Cell selection, resizing columns/rows

  • Keyboard navigation (Arrow keys, Enter, Tab, etc.)

  • Persistent styles & formulas

  • Custom state manager (like mini Redux)

  • Routing between pages (SPA style)

  • Performance optimizations (debounce, throttling, rendering diff)

  • Version control flow with Git, ESLint, Prettier, Husky

And everything will be built without any frontend framework. Just JavaScript.

Why This Project?

  • To demonstrate my senior frontend skills through a real-world, complex, interactive app.

  • To dive deep into core concepts like reactivity, DOM manipulation, architecture, and performance.

  • To push myself to think like a framework creator, not just a framework user.

  • To document and share my progress with the dev community.

What’s Next?

This is just the beginning.

In my upcoming blog posts, I’ll be sharing:

  • Code breakdowns

  • Challenges I face (and how I solve them)

  • Design decisions

  • Lessons learned

  • Screenshots and feature walkthroughs

So if you’re curious about deep JavaScript or want to follow a fun journey — stay tuned!

Feel free to connect with me or follow my progress here or on LinkedIn.

Let’s see how far JavaScript can go 💪

0
Subscribe to my newsletter

Read articles from Oleksii directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Oleksii
Oleksii

Frontend developer focused on Vue 3, Nuxt, TypeScript & Tailwind. Writing clean, scalable code and sharing what I learn along the way.