Email the Author
You can use this page to email Christian Ekrem about An Elm Primer for React Developers.
About the Book
Elm is a functional programming language that compiles to JavaScript, and it offers something React can't: zero runtime exceptions, guaranteed. No null pointer errors. No "undefined is not a function". If your Elm code compiles, it works.
This book is your practical guide from React to Elm. Written by a staff developer working in a production codebase with 125,000+ lines of Elm, it shows you side-by-side comparisons, real-world patterns, and honest trade-offs. You'll see familiar React patterns translated to Elm's approach—state management, side effects, component architecture—and understand why Elm makes certain choices.
But here's the real value: Even if you never use Elm professionally, learning it will make you a better developer in any language. Elm is the fastest way to truly learn functional programming—not watered-down FP patterns, but real, uncompromising functional thinking. It's stricter than TypeScript, simpler than Haskell, and more practical than academic theory.
What you'll learn:
- The Elm Architecture (TEA)—the pattern that inspired Redux
- How compile-time guarantees prevent entire classes of bugs
- Pure functions, immutability, and explicit effects—FP concepts that transfer everywhere
- When to choose Elm (and when not to)
- How to integrate Elm widgets into existing React applications
- Real patterns from production codebases at scale
Who this book is for:
- React developers curious about functional programming
- Teams dealing with production bugs despite TypeScript
- Developers tired of debugging state management issues
- Anyone who wants to level up their programming skills
Your React knowledge is your advantage here. If you understand reducers and immutability patterns, you're already halfway to Elm. This book meets you where you are and shows you what's possible with different trade-offs.
Whether you adopt Elm or not, you'll come away with insights that make you better at React, TypeScript, and any language where clarity matters.
About the Author
Christian Ekrem is a seasoned Staff Engineer with over 12 years of experience building production systems at scale. He currently works as a senior consultant at Ensō AS, and previously spent six years at Vipps MobilePay (Norway's leading mobile payment platform), where he became known as the team's "Chief Problem Solver."
During his time at Vipps, Christian changed roles multiple times without leaving the company—starting with backend development in Go and React, then switching to Android development in Kotlin (learning it from scratch), and eventually becoming the first engineer to work across both Android and backend simultaneously. This diversity of experience across platforms, languages, and problem domains gives him a unique perspective on what makes code maintainable, testable, and genuinely better.
Christian works daily in a production Elm codebase with over 125,000 lines of code at Lovdata, Norway's leading legal information provider. This real-world experience—not just toy projects—informs every comparison and recommendation in this book. He's seen Elm prevent entire classes of bugs at scale, experienced its refactoring confidence firsthand, and learned where it excels and where it doesn't.
His diverse background extends beyond tech: he's taught at a special-needs high school and worked as a film director and cinematographer. This varied experience taught him how to explain complex concepts clearly and meet people where they are—which is exactly what his book aims to do for React developers learning Elm.
Christian has presented talks on software architecture, testing strategies, and functional programming at Vipps and other companies. He's passionate about code quality, craftsmanship, and building systems that are easy to understand and change. His journey into functional programming started with exploring tail-call optimization in Go, which led him to Kotlin, and eventually to discovering Elm's uncompromising approach to immutability and pure functions. He writes about technology, functional programming, and software development at cekrem.github.io.
When he's not coding, Christian plays guitar and drums, enjoys running, and spends time with his wife and three kids. He's also involved in church planting and co-hosts the "Dønn Disippel" podcast in Norwegian.