Back to search
Senior Frontend Developer
Kensingtontours
Hudson Signals
Prepare with AI feedback
Real-time coaching per answer
Apply to KensingtontoursOpens the original listing
7 hits1 practices1 interviews
Toronto, ON, CanadaDevelopment - TripArcAI/MLEdTechCloud InfrastructureDevOpsCAD 90k – 110k
<div class="content-intro"><p>Kensington delivers the world’s most personal travel experiences. We bring to life each client’s desire to travel in a way that’s tailored specifically for them, in the company of local private guides who ensure that they enjoy the authentic best of their destination. The result is a unique journey rich in memories that last a lifetime!</p>
<p>We achieve this because of our extraordinary people, passionate experts with deep knowledge of their destinations. They are what enables us to deliver remarkable experiences in over 120 countries worldwide, and across each of our businesses – Private Touring, Cruises, Villas, Yachts, Expeditions, Ultraluxe Land, Private Jets, and Air. </p>
<p>To learn more about Kensington, visit <a id="menurrs8" class="fui-Link ___1q1shib f2hkw1w f3rmtva f1ewtqcl fyind8e f1k6fduh f1w7gpdv fk6fouc fjoy568 figsok6 f1s184ao f1mk8lai fnbmjn9 f1o700av f13mvf36 f1cmlufx f9n3di6 f1ids18y f1tx3yz7 f1deo86v f1eh06m1 f1iescvh fhgqx19 f1olyrje f1p93eir f1nev41a f1h8hb77 f1lqvz6u f10aw75t fsle3fq f17ae5zn" href="http://kensingtontours.com/" target="_blank">kensingtontours.com</a>. </p></div><p><strong><em><span class="TextRun SCXW257034451 BCX0" lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW257034451 BCX0">We are hiring at two levels. </span></span><span class="TextRun SCXW257034451 BCX0" lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW257034451 BCX0">We welcome applications from both Frontend Developers and Senior Frontend Developers. The level offered will be based on the depth of the candidate’s experience, technical </span><span class="NormalTextRun SCXW257034451 BCX0">expertise</span><span class="NormalTextRun SCXW257034451 BCX0">, scope of ownership, and ability to lead work independently.</span></span><span class="EOP Selected SCXW257034451 BCX0" data-ccp-props="{"201341983":0,"335559739":0,"335559740":259}"> </span></em></strong></p>
<p><strong><em><span class="EOP Selected SCXW257034451 BCX0" data-ccp-props="{"201341983":0,"335559739":0,"335559740":259}"><span class="TextRun SCXW249569091 BCX0" lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW249569091 BCX0">This is a hybrid position, currently requiring a minimum of two days per week onsite at our office </span><span class="NormalTextRun SCXW249569091 BCX0">located</span><span class="NormalTextRun SCXW249569091 BCX0"> at 2 Queen St. E in Toronto, ON.</span></span></span><span class="EOP Selected SCXW249569091 BCX0" data-ccp-props="{"201341983":0,"335559739":120,"335559740":259}"> </span></em></strong></p>
<p><strong>OUR ORGANIZATION</strong></p>
<p><span data-contrast="auto">Kensington and TripArc, as part of the Range Group, deliver the world’s most personal travel experiences. </span><span data-contrast="auto">We bring to life each client’s desire to travel in a way that is tailored specifically for them, in the company of local private guides who ensure they experience the authentic best of each destination. The result is a unique journey rich in memories that last a lifetime.</span><span data-ccp-props="{"201341983":0,"335559739":120,"335559740":259}"> </span></p>
<p><span data-contrast="auto">We achieve this through extraordinary people with deep destination expertise across more than 120 countries and across our Tours, Cruises, Villas, Yachts, Jets, and Air brands.</span><span data-ccp-props="{"201341983":0,"335559739":120,"335559740":259}"> </span></p>
<p><span data-contrast="auto">To learn more about Kensington, visit kensingtontours.com.</span><span data-ccp-props="{"201341983":0,"335559739":120,"335559740":259}"> </span></p>
<p><span data-ccp-props="{"201341983":0,"335559739":120,"335559740":259}">To learn more about TripArc, visit triparc.com.</span></p>
<p><strong><span data-ccp-props="{"201341983":0,"335559739":120,"335559740":259}">THE ROLE</span></strong></p>
<p>Kensington and TripArc are expanding their development team to support projects and initiatives across kensingtontours.com, campaign landing pages, microsites, booking and enquiry flows, and related digital properties. You will work in a modern frontend stack that includes Next.js, React, Contentful, and Amplitude while helping complete a migration from a legacy Angular application and supporting a full brand redesign. </p>
<p>At either level, you will create performant, accessible, responsive experiences for high-traffic, revenue-generating pages and use measurement to understand whether what you ship is working. The scope of ownership will be aligned to your experience: </p>
<ul>
<li><strong>Frontend Developer:</strong> You will build and maintain features within established patterns, implement experiments and analytics tracking, contribute to Contentful integrations and the design system, and grow your capability in conversion, performance, and technical discoverability through coaching and code review.</li>
<li><strong>Senior Frontend Developer:</strong> You will own frontend conversion, experimentation, performance, and technical discoverability as a practice. You will set standards, make architectural decisions, partner directly with senior marketing and digital stakeholders, mentor developers, and translate commercial goals into measurable, maintainable technical solutions. </li>
</ul>
<p><strong><span class="TextRun SCXW172679766 BCX0" lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW172679766 BCX0" data-ccp-parastyle="heading 1">CORE RESPONSIBILITIES</span></span></strong></p>
<p><strong><span data-contrast="none"><span data-ccp-parastyle="heading 2">Build high-quality frontend experiences</span></span></strong><span data-ccp-props="{"134245418":true,"134245529":true,"201341983":0,"335559738":200,"335559739":100,"335559740":259}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Design, build, and </span><span data-ccp-parastyle="List Bullet">maintain</span><span data-ccp-parastyle="List Bullet"> features in our modern frontend application using Next.js and React, including </span><span data-ccp-parastyle="List Bullet">Contentful</span><span data-ccp-parastyle="List Bullet"> integrations.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Translate high-fidelity Figma designs into performant, accessible, responsive, mobile-first experiences and raise questions where requirements are unclear.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="5" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Build reusable components against our design system and contribute to the </span><span data-ccp-parastyle="List Bullet">component</span><span data-ccp-parastyle="List Bullet"> library as we move into a full rebrand.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="6" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Configure or architect content models and CMS structures so marketing partners can build and update pages without developer support.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="7" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Maintain our legacy Angular application during migration and help retire it cleanly.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="8" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Write maintainable code, </span><span data-ccp-parastyle="List Bullet">participate</span><span data-ccp-parastyle="List Bullet"> in code review, estimate work honestly, </span><span data-ccp-parastyle="List Bullet">identify</span><span data-ccp-parastyle="List Bullet"> risks early, and document solutions for technical and non-technical partners.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<p><strong><span data-contrast="none"><span data-ccp-parastyle="heading 2">Improve conversion and measurement</span></span></strong><span data-ccp-props="{"134245418":true,"134245529":true,"201341983":0,"335559738":200,"335559739":100,"335559740":259}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="9" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Implement and instrument experiment variants on high-value pages, including event tracking, funnel visibility, and analytics needed to assess results.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="10" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Partner with marketing and digital stakeholders to translate commercial hypotheses into testable changes with clear success criteria.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="11" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Use experiment results and analytics to report whether changes worked and identify where users drop out of key journeys.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="12" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">For Senior candidates: own the experimentation practice, design tests, </span><span data-ccp-parastyle="List Bullet">establish</span><span data-ccp-parastyle="List Bullet"> staged rollout and rollback guardrails, and ensure results are measured honestly.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<p><strong><span data-contrast="none"><span data-ccp-parastyle="heading 2">Protect performance and discoverability</span></span></strong><span data-ccp-props="{"134245418":true,"134245529":true,"201341983":0,"335559738":200,"335559739":100,"335559740":259}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="13" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Build experiences that meet expectations for Core Web Vitals, accessibility, application security, crawlability, and search discoverability.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="14" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Use </span><span data-ccp-parastyle="List Bullet">appropriate rendering</span><span data-ccp-parastyle="List Bullet"> strategies and frontend patterns based on content volatility, speed, performance, and crawlability.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="15" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Support technical SEO through semantic structure, structured data, internal linking, redirects, URL changes, and migration safety.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="16" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">For Senior candidates: set and defend performance budgets, own production performance improvements, and build the technical foundations for SEO, AEO, and GEO.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<p><strong><span data-contrast="none"><span data-ccp-parastyle="heading 2">Collaborate and lead at the </span><span data-ccp-parastyle="heading 2">appropriate level</span></span></strong><span data-ccp-props="{"134245418":true,"134245529":true,"201341983":0,"335559738":200,"335559739":100,"335559740":259}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="17" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Communicate clearly with engineering, design, content, SEO, marketing, and digital partners.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="18" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Bring forward options, trade-offs, risks, and evidence rather than presenting only one answer.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="19" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">For Intermediate candidates: learn actively from code review and technical direction, ask questions early, and take increasing ownership of defined areas.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="20" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">For Senior candidates: define frontend standards and architectural patterns, review code, mentor developers, and act as a senior technical voice with business stakeholders.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<p><span class="TextRun SCXW172679766 BCX0" lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW172679766 BCX0" data-ccp-parastyle="heading 1"><strong>MUST-HAVE </strong></span></span></p>
<p><span class="TextRun SCXW172679766 BCX0" lang="EN-US" data-contrast="none"><span class="NormalTextRun SCXW172679766 BCX0" data-ccp-parastyle="heading 1"><strong>For both levels</strong></span></span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="21" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Professional experience building and supporting web applications in production environments with real user traffic.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="22" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Strong component-based development experience with</span></span><strong><span data-contrast="auto"><span data-ccp-parastyle="List Bullet"> React and hands-on experience with Next.js.</span></span></strong><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="23" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Solid frontend fundamentals, including </span><span data-ccp-parastyle="List Bullet">component</span><span data-ccp-parastyle="List Bullet"> architecture, state management, routing, rendering lifecycle, and frontend performance.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="24" data-aria-level="1"><strong><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Strong modern CSS skills</span></span></strong><span data-contrast="auto"><span data-ccp-parastyle="List Bullet"> and experience building responsive, mobile-first user interfaces.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="25" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Experience with Git/GitHub and </span><span data-ccp-parastyle="List Bullet">working</span><span data-ccp-parastyle="List Bullet"> within a modern CI/CD pipeline.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="26" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Ability to translate designs into accessible, responsive, production-ready experiences and </span></span><strong><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">familiarity with Figma-based design</span></span></strong><span data-contrast="auto"> <span data-ccp-parastyle="List Bullet">handoffs</span><span data-ccp-parastyle="List Bullet">.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="27" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Working knowledge of the web-platform fundamentals that affect commercial outcomes, including accessibility, SEO, Core Web Vitals, analytics, and application </span><span data-ccp-parastyle="List Bullet">security.</span></span></li>
</ul>
<p><strong><span data-contrast="auto">For Frontend Developer</span></strong></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{"335552541":1,"335559683":0,"335559684":-2,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">3-5 years of professional web development experience building and supporting production web applications.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335559685":317,"335559737":0,"335559738":0,"335559739":80,"335559740":259,"335559991":202}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{"335552541":1,"335559683":0,"335559684":-2,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Solid React development experience with hands-on experience using Next.js.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335559685":317,"335559737":0,"335559738":0,"335559739":80,"335559740":259,"335559991":202}"> </span></li>
</ul>
<p><strong><span data-contrast="auto">For Senior Frontend Developer</span></strong></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{"335552541":1,"335559683":0,"335559684":-2,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">6+ years of professional frontend development experience, including significant work on high-traffic, revenue-generating websites or applications.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335559685":317,"335559737":0,"335559738":0,"335559739":80,"335559740":259,"335559991":202}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{"335552541":1,"335559683":0,"335559684":-2,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="2" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Deep </span><span data-ccp-parastyle="List Bullet">expertise</span><span data-ccp-parastyle="List Bullet"> in React and Next.js, including </span><span data-ccp-parastyle="List Bullet">component</span><span data-ccp-parastyle="List Bullet"> architecture, state management, routing, and performance optimization at scale.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335559685":317,"335559737":0,"335559738":0,"335559739":80,"335559740":259,"335559991":202}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{"335552541":1,"335559683":0,"335559684":-2,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="3" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Production experience with rendering strategies such as SSR, SSG, and ISR, and the ability to select the </span><span data-ccp-parastyle="List Bullet">appropriate approach</span><span data-ccp-parastyle="List Bullet"> based on business and technical requirements.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335559685":317,"335559737":0,"335559738":0,"335559739":80,"335559740":259,"335559991":202}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="11" data-list-defn-props="{"335552541":1,"335559683":0,"335559684":-2,"335559685":720,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"hybridMultilevel"}" data-aria-posinset="4" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Experience integrating headless CMS platforms, preferably </span><span data-ccp-parastyle="List Bullet">Contentful</span><span data-ccp-parastyle="List Bullet">, including designing scalable content models and schemas.</span></span><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335559685":317,"335559737":0,"335559738":0,"335559739":80,"335559740":259,"335559991":202}"> </span></li>
</ul>
<p><strong><span data-ccp-props="{"134233117":false,"134233118":false,"201341983":0,"335551550":1,"335551620":1,"335559685":317,"335559737":0,"335559738":0,"335559739":80,"335559740":259,"335559991":202}">NICE TO HAVE</span></strong></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="28" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">A/B or multivariate testing tools such as Amplitude, Optimizely, VWO, or </span><span data-ccp-parastyle="List Bullet">LaunchDarkly</span><span data-ccp-parastyle="List Bullet">.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="29" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Analytics and tag implementation using Amplitude, GA4, Google Tag Manager, or equivalent tools.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="30" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Performance tooling such as Lighthouse, </span><span data-ccp-parastyle="List Bullet">PageSpeed</span><span data-ccp-parastyle="List Bullet"> Insights, </span><span data-ccp-parastyle="List Bullet">WebPageTest</span><span data-ccp-parastyle="List Bullet">, and Chrome </span><span data-ccp-parastyle="List Bullet">DevTools</span><span data-ccp-parastyle="List Bullet">.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="31" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Technical SEO tooling such as Google Search Console, Screaming Frog, </span><span data-ccp-parastyle="List Bullet">Ahrefs</span><span data-ccp-parastyle="List Bullet">, </span><span data-ccp-parastyle="List Bullet">Semrush</span><span data-ccp-parastyle="List Bullet">, or </span><span data-ccp-parastyle="List Bullet">Botify</span><span data-ccp-parastyle="List Bullet">.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="32" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Image and media optimization at scale, including modern formats, responsive delivery, CDN </span><span data-ccp-parastyle="List Bullet">behaviour</span><span data-ccp-parastyle="List Bullet">, and </span><span data-ccp-parastyle="List Bullet">Cloudinary</span><span data-ccp-parastyle="List Bullet">.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="33" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Personalization or content-variant delivery and an understanding of caching and indexing considerations.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="34" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Internationalization and </span><span data-ccp-parastyle="List Bullet">H</span><span data-ccp-parastyle="List Bullet">reflang</span><span data-ccp-parastyle="List Bullet"> for multi-region sites.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="35" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Angular 9+, Tailwind CSS, </span><span data-ccp-parastyle="List Bullet">GraphQL</span><span data-ccp-parastyle="List Bullet">, or Azure DevOps.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="36" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Experience in travel, hospitality, luxury, or high-content-volume ecommerce.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<p><strong><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}">OUR TECH STACK</span></strong></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="37" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">React, </span><span data-ccp-parastyle="List Bullet">GraphQL</span><span data-ccp-parastyle="List Bullet">, and Next.js for the modern application.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="38" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Angular, .NET Core, and C# for the legacy application.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="39" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Contentful</span><span data-ccp-parastyle="List Bullet"> and </span><span data-ccp-parastyle="List Bullet">Cloudinary</span><span data-ccp-parastyle="List Bullet">.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="40" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Amplitude for analytics and experimentation.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{"335552541":1,"335559685":360,"335559991":360,"469769226":"Symbol","469769242":[8226],"469777803":"left","469777804":"","469777815":"singleLevel"}" data-aria-posinset="41" data-aria-level="1"><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Azure DevOps.</span></span><span data-ccp-props="{"201341983":0,"335559739":80,"335559740":259}"> </span></li>
</ul>
<p><strong><span data-ccp-props="{"201341983":0,"335559739":120,"335559740":259}">COMPENSATION</span></strong></p>
<p>We provide a competitive compensation package with a strong pay-for-performance rewards approach. Employees have the opportunity to participate in incentive programs and compensation tied to business and individual performance. The expected compensation range for this position is:</p>
<ul>
**<li>Frontend Developer:** $90,000 to $110,000 CAD.</li>
**<li>Senior Frontend Developer:** $110,000 to $125,000 CAD.</li>
</ul>
<p>The actual compensation may vary depending on local market conditions, geography, and relevant job-related factors such as knowledge, skills, qualifications, experience, and education/training. <span style="color: rgb(255, 255, 255);">#LI-Hybrid </span></p>
<p><em>We are committed to providing employment accommodation in accordance with the Ontario Human Rights Code and the Accessibility for Ontarians with Disabilities Act. If you require accommodation due to a disability at any stage of our hiring process, please advise us when completing your application.</em></p><div class="content-conclusion"><p><span data-teams="true">The Range Group may use artificial intelligence throughout the recruitment process to screen, assess or select applicants for this position. These tools assist our hiring team but do not replace human judgment. Final hiring decisions are ultimately made by the hiring team.</span><strong><em><br><br>We thank all candidates for their interest, however, only those selected for an interview will be contacted.</em></strong></p></div>
AI enhanced job description
Source: greenhouseRecruiter: Rekroot
Posted: 9/14/2026327d7706-d848-4ca8-9154-ac0db62f7112