Grover Menacho Chapter 0: A Note From the Author I learned Odoo back when it was still OpenERP, around 2013, when the documentation was a single PDF laid out like a brochure, when Odoo had barely a handful of modules and was Open Source and nothing ... Aug 25, 2026 OWL Book
Grover Menacho Chapter 1: The "Why": From Static Pages to Modern UI Why this chapter? Every consultant eventually gets asked "why can't we just use jQuery for this?" — this chapter is the answer, backed by the actual history of the web and of Odoo's own frontend. What... Aug 25, 2026 OWL Book
Grover Menacho Chapter 2: Your Essential JavaScript Toolkit Why this chapter? Most of the debugging time I've billed clients over the years wasn't spent reading code — it was spent watching the DevTools Network and Console tabs. Knowing this tooling cold is wh... Aug 25, 2026 OWL Book
Grover Menacho Chapter 3: Modern JavaScript Fundamentals, Part I Why this chapter? I still see junior developers submit code with var and manual for loops on OWL projects — it works, but it fights the language OWL was designed around, and it shows up in every code ... Aug 25, 2026 OWL Book
Grover Menacho Chapter 4: Modern JavaScript Fundamentals, Part II Why this chapter? Every OWL component you'll ever write is a class , every prop and ORM result you'll handle benefits from destructuring, and every server call is asynchronous — this is the chapter wh... Aug 25, 2026 OWL Book
Grover Menacho Chapter 5: Hello, OWL! Your First Component Why this chapter? Every OWL feature you'll learn later builds on the same three-file skeleton you set up here — get this part solid and the rest of the book is additions, not surprises. What is Odoo t... Aug 25, 2026 OWL Book
Grover Menacho Chapter 6: Rendering with QWeb Templates Why this chapter? Static HTML gets you a demo; QWeb directives get you a real application. This is the vocabulary you'll be reading and writing in every single template file from here on. What is Odoo... Aug 25, 2026 OWL Book
Grover Menacho Chapter 7: State and Reactivity: Making Components Dynamic Why this chapter? This is the mental model everything else in OWL is built on top of — props, hooks, services, even OWL 3's signals (Chapter 18) are all variations on "change the data, let the framewo... Aug 25, 2026 OWL Book
Grover Menacho Chapter 8: Props: Parent-to-Child Communication Why this chapter? Almost every bug report I get that starts with "the widget shows stale data" traces back to a component reading or mutating data it was never supposed to own. Props are the rule that... Aug 25, 2026 OWL Book
Grover Menacho Chapter 9: Handling Events: Child-to-Parent Communication Why this chapter? I've inherited more than one addon where a child widget reached straight into its parent's state to "fix" something, and every one of them turned brittle the moment someone changed t... Aug 25, 2026 OWL Book
Grover Menacho Chapter 10: The Component Lifecycle Hooks Why this chapter? More production incidents I've dealt with trace back to lifecycle mistakes than to almost anything else — a fetch that fires before the DOM exists, a listener that never gets cleaned... Aug 25, 2026 OWL Book
Grover Menacho Chapter 11: Modern Hooks - useEffect and useRef Why this chapter? Lifecycle hooks alone push you toward writing code organized by "when," not "why" — a timer's setup ends up in onMounted , its cleanup in onWillUnmount , and the two drift apart as t... Aug 25, 2026 OWL Book