I’m Building Excel in Vanilla JavaScript – From Scratch


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:
Back to the roots.
I want to revisit and strengthen my deep JS fundamentals. No sugarcoating. Just raw logic.
Maximum control.
In complex UI logic like spreadsheets (resizing cells, drag-and-drop, keyboard interactions), sometimes dynamic typing gives more flexibility.
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 💪
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.