Yaroslav Shmarov's wroclove.rb 2022 talk on 18 months of using Hotwire and ViewComponent to build a modern Rails monolith at the French startup Bearer. Part 1 discusses ViewComponent: why helpers (global) and decorators (object-specific) don't solve front-end component structuring, how Bearer's badges were designed in Figma and implemented with a .rb file defining variants/validations, a separate CSS file, and a tiny shared HTML template; key learnings include appending custom CSS classes and data attributes instead of proliferating variants, mixing object-specific components (passing a record) with generic ones (passing color/size), nesting components inside components, choosing per-component CSS files on a case-by-case basis, and that replacing templates/partials with ViewComponents is possible but not mandatory. The hardest problems are custom form inputs (e.g. multi-select with search) implemented by hidden forms driven by Stimulus. Part 2 covers Hotwire: Turbo Frames + Turbo Streams + Stimulus, noting Hotwire is not Rails-specific (e.g. Turbo Laravel) and distinguishing HTTP Turbo Streams (response-driven, like rebranded js.erb) from Action Cable WebSocket broadcasts. Live demo shows asynchronously-loaded index records, live search with URL updates via turbo-action=advance, modals auto-opening via Stimulus clicking a hidden link, multi-step typeform-style flows, conditionally-visible submit buttons that re-render only on actual attribute change, API-token one-time reveal, folder-navigation UIs, infinite pagination (Turbo Frame rendered inside a Turbo Stream), and dynamic country/state/city forms where selecting country triggers a hidden button that re-renders the form fragment. Emphasizes Frames, Streams and Stimulus can be used separately and that 'a couple of lines of JS' via Stimulus massively extends their capabilities. Challenges: designers with React mindset expecting animated transitions; learning the limits; structuring DOM so a search field can target a form it isn't nested inside. Closes on also-rans: StimulusReflex and AnyCable to go further, htmx and Phoenix LiveView as non-Rails server-side-rendering alternatives, and Phlex as a potential ViewComponent substitute. Q&A: testing ViewComponents via RSpec assertions, snapshot testing, and system tests for Turbo Stream/Frame flows — easier than React for a Ruby-comfortable developer.