Skip to content
Skip to content
Skip to content
Soren Hale, frontend developer, in a navy work jacket against a dark wall

Frontend developer · React, TypeScript, WebGL

Frontend developer shipping interfaces that feel instant.

Eight years building product interfaces for fintech and developer tools. React, TypeScript, and a stubborn eye on the last hundred milliseconds.

Years shipping product
Interfaces launched
Average Lighthouse
Soren Hale, frontend developer, in a navy work jacket against a dark wall

Frontend developer · React, TypeScript, WebGL

Frontend developer shipping interfaces that feel instant.

Eight years building product interfaces for fintech and developer tools. React, TypeScript, and a stubborn eye on the last hundred milliseconds.

Years shipping product
Interfaces launched
Average Lighthouse
Soren Hale, frontend developer, in a navy work jacket against a dark wall

Frontend developer · React, TypeScript, WebGL

Frontend developer shipping interfaces that feel instant.

Eight years building product interfaces for fintech and developer tools. React, TypeScript, and a stubborn eye on the last hundred milliseconds.

Years shipping product
Interfaces launched
Average Lighthouse

Shipped for

Shipped for: Northwind, Ledgerline, Kestrel Pay, Tidewater, Halden, Brattvik Bank, Loopdocs, Parcelway

  • statusOpen to work from November
  • timezoneOslo · Europe/Oslo
  • replyReplies within one working day

Shipped for

Shipped for: Northwind, Ledgerline, Kestrel Pay, Tidewater, Halden, Brattvik Bank, Loopdocs, Parcelway

  • statusOpen to work from November
  • timezoneOslo · Europe/Oslo
  • replyReplies within one working day

Shipped for

Shipped for: Northwind, Ledgerline, Kestrel Pay, Tidewater, Halden, Brattvik Bank, Loopdocs, Parcelway

  • statusOpen to work from November
  • timezoneOslo · Europe/Oslo
  • replyReplies within one working day

Selected work

Every case starts with a number that was wrong and ends with the one that shipped. Open any of them for the full write-up.

  • 01 of 05Northwind · 2025

    Northwind Checkout

    A checkout that is ready before the customer has finished reaching for their card.

    Lead frontend developer

    from 2.9 sto 0.8 sLCP on a mid-range phone

    ReactTypeScriptXStateVite

    Open case
  • 02 of 05Ledgerline · 2024

    Ledgerline Console

    Forty internal tools moved into one console, on one design system, with one way to ship.

    Frontend architect

    from 14 minto 95 sFrom merge to production

    ReactTypeScriptModule FederationTurborepo

    Open case
  • 03 of 05Kestrel Pay · 2024

    Kestrel Pay Dashboard

    Live payment data on a table of 200,000 rows that still answers a click at once.

    Senior frontend developer

    from 380 msto 48 msINP on the transactions table

    ReactTypeScriptTanStack VirtualWebSocket

    Open case
  • 04 of 05Tidewater · 2023

    Tidewater Charts

    A charting layer that pans through a million points without dropping a frame.

    Frontend and WebGL developer

    from 12 fpsto 60 fpsPan and zoom at 1M points

    TypeScriptWebGLreglWeb Workers

    Open case
  • 05 of 05Halden · 2023

    Halden Design System

    Sixty-two components, one token file and no accessibility exceptions.

    Design systems lead

    from 71to 100Lighthouse accessibility, product average

    ReactTypeScriptStorybookRadix

    Open case

Selected work

Every case starts with a number that was wrong and ends with the one that shipped. Open any of them for the full write-up.

  • 01 of 05Northwind · 2025

    Northwind Checkout

    A checkout that is ready before the customer has finished reaching for their card.

    Lead frontend developer

    from 2.9 sto 0.8 sLCP on a mid-range phone

    ReactTypeScriptXStateVite

    Open case
  • 02 of 05Ledgerline · 2024

    Ledgerline Console

    Forty internal tools moved into one console, on one design system, with one way to ship.

    Frontend architect

    from 14 minto 95 sFrom merge to production

    ReactTypeScriptModule FederationTurborepo

    Open case
  • 03 of 05Kestrel Pay · 2024

    Kestrel Pay Dashboard

    Live payment data on a table of 200,000 rows that still answers a click at once.

    Senior frontend developer

    from 380 msto 48 msINP on the transactions table

    ReactTypeScriptTanStack VirtualWebSocket

    Open case
  • 04 of 05Tidewater · 2023

    Tidewater Charts

    A charting layer that pans through a million points without dropping a frame.

    Frontend and WebGL developer

    from 12 fpsto 60 fpsPan and zoom at 1M points

    TypeScriptWebGLreglWeb Workers

    Open case
  • 05 of 05Halden · 2023

    Halden Design System

    Sixty-two components, one token file and no accessibility exceptions.

    Design systems lead

    from 71to 100Lighthouse accessibility, product average

    ReactTypeScriptStorybookRadix

    Open case

Selected work

Every case starts with a number that was wrong and ends with the one that shipped. Open any of them for the full write-up.

  • 01 of 05Northwind · 2025

    Northwind Checkout

    A checkout that is ready before the customer has finished reaching for their card.

    Lead frontend developer

    from 2.9 sto 0.8 sLCP on a mid-range phone

    ReactTypeScriptXStateVite

    Open case
  • 02 of 05Ledgerline · 2024

    Ledgerline Console

    Forty internal tools moved into one console, on one design system, with one way to ship.

    Frontend architect

    from 14 minto 95 sFrom merge to production

    ReactTypeScriptModule FederationTurborepo

    Open case
  • 03 of 05Kestrel Pay · 2024

    Kestrel Pay Dashboard

    Live payment data on a table of 200,000 rows that still answers a click at once.

    Senior frontend developer

    from 380 msto 48 msINP on the transactions table

    ReactTypeScriptTanStack VirtualWebSocket

    Open case
  • 04 of 05Tidewater · 2023

    Tidewater Charts

    A charting layer that pans through a million points without dropping a frame.

    Frontend and WebGL developer

    from 12 fpsto 60 fpsPan and zoom at 1M points

    TypeScriptWebGLreglWeb Workers

    Open case
  • 05 of 05Halden · 2023

    Halden Design System

    Sixty-two components, one token file and no accessibility exceptions.

    Design systems lead

    from 71to 100Lighthouse accessibility, product average

    ReactTypeScriptStorybookRadix

    Open case

About

I build product interfaces that feel instant and stay that way. Eight years in fintech and developer tools taught me that speed is a feature, accessibility is not optional, and the best code is the code the next person can read.

A dark desk at night with a closed laptop, a notebook and a lamp-lit plant
Soren Hale · Oslo

NowUpdated October 2026

Building
Kestrel Pay, transactions v3
Maintaining
tinyvirtual, 2.1k stars
Reading
The CSS anchor positioning spec
Based in
Oslo, working CET hours

About

I build product interfaces that feel instant and stay that way. Eight years in fintech and developer tools taught me that speed is a feature, accessibility is not optional, and the best code is the code the next person can read.

A dark desk at night with a closed laptop, a notebook and a lamp-lit plant
Soren Hale · Oslo

NowUpdated October 2026

Building
Kestrel Pay, transactions v3
Maintaining
tinyvirtual, 2.1k stars
Reading
The CSS anchor positioning spec
Based in
Oslo, working CET hours

About

I build product interfaces that feel instant and stay that way. Eight years in fintech and developer tools taught me that speed is a feature, accessibility is not optional, and the best code is the code the next person can read.

A dark desk at night with a closed laptop, a notebook and a lamp-lit plant
Soren Hale · Oslo

NowUpdated October 2026

Building
Kestrel Pay, transactions v3
Maintaining
tinyvirtual, 2.1k stars
Reading
The CSS anchor positioning spec
Based in
Oslo, working CET hours

The numbers

Every launch is measured on a mid-range phone and a throttled connection before it goes out. These are the medians, not the best run of the day.

median of the last 12 launches

01See the launches behind them
  • 01Performance

    of 100

  • 02Accessibility

    of 100

  • 03Best practices

    of 100

  • 04SEO

    of 100

Core Web Vitalsfield data, 75th percentile

  • LCPLargest Contentful Paint

    0.8 s

    0within budgetbudget 2.5 s

  • INPInteraction to Next Paint

    48 ms

    0within budgetbudget 200 ms

  • CLSCumulative Layout Shift

    0.01

    0within budgetbudget 0.1

The numbers

Every launch is measured on a mid-range phone and a throttled connection before it goes out. These are the medians, not the best run of the day.

median of the last 12 launches

01See the launches behind them
  • 01Performance

    of 100

  • 02Accessibility

    of 100

  • 03Best practices

    of 100

  • 04SEO

    of 100

Core Web Vitalsfield data, 75th percentile

  • LCPLargest Contentful Paint

    0.8 s

    0within budgetbudget 2.5 s

  • INPInteraction to Next Paint

    48 ms

    0within budgetbudget 200 ms

  • CLSCumulative Layout Shift

    0.01

    0within budgetbudget 0.1

The numbers

Every launch is measured on a mid-range phone and a throttled connection before it goes out. These are the medians, not the best run of the day.

median of the last 12 launches

01See the launches behind them
  • 01Performance

    of 100

  • 02Accessibility

    of 100

  • 03Best practices

    of 100

  • 04SEO

    of 100

Core Web Vitalsfield data, 75th percentile

  • LCPLargest Contentful Paint

    0.8 s

    0within budgetbudget 2.5 s

  • INPInteraction to Next Paint

    48 ms

    0within budgetbudget 200 ms

  • CLSCumulative Layout Shift

    0.01

    0within budgetbudget 0.1

The stack

The tools I would pick again tomorrow. Point at a key, or tab across the board, to see how long it has been there and what it is for.

16 tools · 4 groups

02The full stack

Languages04

Frameworks04

Tooling04

Testing04

key 01 of 16Languages

TypeScript

8years on the board

UsedDaily

Strict mode, no any. Types are the first draft of the docs.

The stack

The tools I would pick again tomorrow. Point at a key, or tab across the board, to see how long it has been there and what it is for.

16 tools · 4 groups

02The full stack

Languages04

Frameworks04

Tooling04

Testing04

key 01 of 16Languages

TypeScript

8years on the board

UsedDaily

Strict mode, no any. Types are the first draft of the docs.

The stack

The tools I would pick again tomorrow. Point at a key, or tab across the board, to see how long it has been there and what it is for.

16 tools · 4 groups

02The full stack

Languages04

Frameworks04

Tooling04

Testing04

key 01 of 16Languages

TypeScript

8years on the board

UsedDaily

Strict mode, no any. Types are the first draft of the docs.

Services

Fixed scope, a written plan before any code, and a price you know up front. Open a row to see what is in it.

  • I join your team or work from a design file and take the frontend the whole way: architecture, components, state, tests and the release pipeline. You get working software every week, not a big reveal at the end.

    See the service

    Includes

    • Architecture note before any code
    • Typed component library
    • Tests on every critical flow
    • A handover call and written docs
    Price
    From €9,500
    Timeline
    4 to 8 weeks
  • I profile your product on real devices and on your real traffic, then hand you a ranked list: the change, the expected gain and the effort. The first three fixes come as pull requests.

    See the service

    Includes

    • Field and lab measurements
    • Ranked findings with numbers
    • Three fixes as pull requests
    • A budget your CI can enforce
    Price
    From €3,200
    Timeline
    1 week
  • I build the system with your designers and the teams who will use it: tokens, accessible components, documentation and the process for changing it. Adoption is part of the job, not an afterthought.

    See the service

    Includes

    • Token pipeline for code and Figma
    • Accessible components with usage notes
    • Visual and interaction tests
    • Migration plan for existing screens
    Price
    From €12,000
    Timeline
    6 to 10 weeks
  • For teams with a deadline, a rewrite or a gap to cover. I take on the hard parts, review code, and leave your developers faster than I found them.

    See the service

    Includes

    • Three fixed days a week
    • Code review and pairing
    • Weekly written update
    • No lock-in after month three
    Price
    From €6,400 a month
    Timeline
    3 months minimum

Services

Fixed scope, a written plan before any code, and a price you know up front. Open a row to see what is in it.

  • I join your team or work from a design file and take the frontend the whole way: architecture, components, state, tests and the release pipeline. You get working software every week, not a big reveal at the end.

    See the service

    Includes

    • Architecture note before any code
    • Typed component library
    • Tests on every critical flow
    • A handover call and written docs
    Price
    From €9,500
    Timeline
    4 to 8 weeks
  • I profile your product on real devices and on your real traffic, then hand you a ranked list: the change, the expected gain and the effort. The first three fixes come as pull requests.

    See the service

    Includes

    • Field and lab measurements
    • Ranked findings with numbers
    • Three fixes as pull requests
    • A budget your CI can enforce
    Price
    From €3,200
    Timeline
    1 week
  • I build the system with your designers and the teams who will use it: tokens, accessible components, documentation and the process for changing it. Adoption is part of the job, not an afterthought.

    See the service

    Includes

    • Token pipeline for code and Figma
    • Accessible components with usage notes
    • Visual and interaction tests
    • Migration plan for existing screens
    Price
    From €12,000
    Timeline
    6 to 10 weeks
  • For teams with a deadline, a rewrite or a gap to cover. I take on the hard parts, review code, and leave your developers faster than I found them.

    See the service

    Includes

    • Three fixed days a week
    • Code review and pairing
    • Weekly written update
    • No lock-in after month three
    Price
    From €6,400 a month
    Timeline
    3 months minimum

Services

Fixed scope, a written plan before any code, and a price you know up front. Open a row to see what is in it.

  • I join your team or work from a design file and take the frontend the whole way: architecture, components, state, tests and the release pipeline. You get working software every week, not a big reveal at the end.

    See the service

    Includes

    • Architecture note before any code
    • Typed component library
    • Tests on every critical flow
    • A handover call and written docs
    Price
    From €9,500
    Timeline
    4 to 8 weeks
  • I profile your product on real devices and on your real traffic, then hand you a ranked list: the change, the expected gain and the effort. The first three fixes come as pull requests.

    See the service

    Includes

    • Field and lab measurements
    • Ranked findings with numbers
    • Three fixes as pull requests
    • A budget your CI can enforce
    Price
    From €3,200
    Timeline
    1 week
  • I build the system with your designers and the teams who will use it: tokens, accessible components, documentation and the process for changing it. Adoption is part of the job, not an afterthought.

    See the service

    Includes

    • Token pipeline for code and Figma
    • Accessible components with usage notes
    • Visual and interaction tests
    • Migration plan for existing screens
    Price
    From €12,000
    Timeline
    6 to 10 weeks
  • For teams with a deadline, a rewrite or a gap to cover. I take on the hard parts, review code, and leave your developers faster than I found them.

    See the service

    Includes

    • Three fixed days a week
    • Code review and pairing
    • Weekly written update
    • No lock-in after month three
    Price
    From €6,400 a month
    Timeline
    3 months minimum

git log --career

Six teams, one direction: closer to the people who use the thing. The short version is below, the long one is a page away.

  1. 2023 to Nowc618ff5

    HEAD → mainSoren Hale · Oslo

    Independent frontend developer

    Product builds, performance work and design systems for fintech and developer tool teams across Europe.

    • React
    • TypeScript
    • WebGL
  2. 2021 to 20237e0230a

    Kestrel Pay · Oslo

    Staff frontend engineer

    Led the merchant dashboard: live data, a new table engine and the performance budget every team now ships against.

    • React
    • TypeScript
    • WebSocket
  3. 2020 to 20210cec1ce

    Ledgerline · Stockholm

    Senior frontend engineer

    Designed the shell and the shared library that replaced forty internal tools with one console.

    • React
    • Module Federation
    • Turborepo
  4. 2019 to 2020d11045c

    Tidewater · Copenhagen

    Frontend engineer

    Built the GPU charting layer for sensor data and the accessible table view behind every chart.

    • TypeScript
    • WebGL
    • Web Workers
  5. 2018 to 20198af695a

    Pilcrow Studio · Oslo

    Frontend developer

    Shipped marketing sites and two web apps for clients in publishing and travel. Learned to estimate.

    • JavaScript
    • Vue
    • Sass
  6. 201839a7e40

    initial commitBrygge Digital · Bergen

    Junior web developer

    First job: email templates, landing pages and the build script nobody else wanted to touch.

    • HTML
    • CSS
    • JavaScript

git log --career

Six teams, one direction: closer to the people who use the thing. The short version is below, the long one is a page away.

  1. 2023 to Nowc618ff5

    HEAD → mainSoren Hale · Oslo

    Independent frontend developer

    Product builds, performance work and design systems for fintech and developer tool teams across Europe.

    • React
    • TypeScript
    • WebGL
  2. 2021 to 20237e0230a

    Kestrel Pay · Oslo

    Staff frontend engineer

    Led the merchant dashboard: live data, a new table engine and the performance budget every team now ships against.

    • React
    • TypeScript
    • WebSocket
  3. 2020 to 20210cec1ce

    Ledgerline · Stockholm

    Senior frontend engineer

    Designed the shell and the shared library that replaced forty internal tools with one console.

    • React
    • Module Federation
    • Turborepo
  4. 2019 to 2020d11045c

    Tidewater · Copenhagen

    Frontend engineer

    Built the GPU charting layer for sensor data and the accessible table view behind every chart.

    • TypeScript
    • WebGL
    • Web Workers
  5. 2018 to 20198af695a

    Pilcrow Studio · Oslo

    Frontend developer

    Shipped marketing sites and two web apps for clients in publishing and travel. Learned to estimate.

    • JavaScript
    • Vue
    • Sass
  6. 201839a7e40

    initial commitBrygge Digital · Bergen

    Junior web developer

    First job: email templates, landing pages and the build script nobody else wanted to touch.

    • HTML
    • CSS
    • JavaScript

git log --career

Six teams, one direction: closer to the people who use the thing. The short version is below, the long one is a page away.

  1. 2023 to Nowc618ff5

    HEAD → mainSoren Hale · Oslo

    Independent frontend developer

    Product builds, performance work and design systems for fintech and developer tool teams across Europe.

    • React
    • TypeScript
    • WebGL
  2. 2021 to 20237e0230a

    Kestrel Pay · Oslo

    Staff frontend engineer

    Led the merchant dashboard: live data, a new table engine and the performance budget every team now ships against.

    • React
    • TypeScript
    • WebSocket
  3. 2020 to 20210cec1ce

    Ledgerline · Stockholm

    Senior frontend engineer

    Designed the shell and the shared library that replaced forty internal tools with one console.

    • React
    • Module Federation
    • Turborepo
  4. 2019 to 2020d11045c

    Tidewater · Copenhagen

    Frontend engineer

    Built the GPU charting layer for sensor data and the accessible table view behind every chart.

    • TypeScript
    • WebGL
    • Web Workers
  5. 2018 to 20198af695a

    Pilcrow Studio · Oslo

    Frontend developer

    Shipped marketing sites and two web apps for clients in publishing and travel. Learned to estimate.

    • JavaScript
    • Vue
    • Sass
  6. 201839a7e40

    initial commitBrygge Digital · Bergen

    Junior web developer

    First job: email templates, landing pages and the build script nobody else wanted to touch.

    • HTML
    • CSS
    • JavaScript

Open source and experiments

Small libraries, command line tools and sketches. Most started as a fix for one project and stayed useful.

Open source and experiments

Small libraries, command line tools and sketches. Most started as a fix for one project and stayed useful.

Open source and experiments

Small libraries, command line tools and sketches. Most started as a fix for one project and stayed useful.

Code review

The people who merged the work, in their own words.

reviews/clients.md5 of 5 approved
  1. Ingrid SolvangVP Engineering · Northwind
    We had been tuning the backend for a year. Soren found two seconds in the browser in his first week, and checkout conversion has not been below the old record since.
    Approved
  2. Marcus OyelaranEngineering manager · Kestrel Pay
    He writes the kind of pull request you learn from. Our juniors started copying his commit messages, then his tests, then his habit of measuring before arguing.
    Approved
  3. Hana TakedaHead of design · Halden
    The design system shipped on time, and more to the point, people use it. Soren spent as much effort on the teams as on the components.
    Approved
  4. Jonas LindqvistFounder · Loopdocs
    I gave him a vague brief and a hard date. I got a plan in two days, a working build every Friday and no surprises at the end.
    Approved
  5. Amara NwosuProduct lead · Tidewater
    Our analysts stopped exporting data to look at it. A million points, sixty frames a second, and it still works with a keyboard.
    Approved

Code review

The people who merged the work, in their own words.

reviews/clients.md5 of 5 approved
  1. Ingrid SolvangVP Engineering · Northwind
    We had been tuning the backend for a year. Soren found two seconds in the browser in his first week, and checkout conversion has not been below the old record since.
    Approved
  2. Marcus OyelaranEngineering manager · Kestrel Pay
    He writes the kind of pull request you learn from. Our juniors started copying his commit messages, then his tests, then his habit of measuring before arguing.
    Approved
  3. Hana TakedaHead of design · Halden
    The design system shipped on time, and more to the point, people use it. Soren spent as much effort on the teams as on the components.
    Approved
  4. Jonas LindqvistFounder · Loopdocs
    I gave him a vague brief and a hard date. I got a plan in two days, a working build every Friday and no surprises at the end.
    Approved
  5. Amara NwosuProduct lead · Tidewater
    Our analysts stopped exporting data to look at it. A million points, sixty frames a second, and it still works with a keyboard.
    Approved

Code review

The people who merged the work, in their own words.

reviews/clients.md5 of 5 approved
  1. Ingrid SolvangVP Engineering · Northwind
    We had been tuning the backend for a year. Soren found two seconds in the browser in his first week, and checkout conversion has not been below the old record since.
    Approved
  2. Marcus OyelaranEngineering manager · Kestrel Pay
    He writes the kind of pull request you learn from. Our juniors started copying his commit messages, then his tests, then his habit of measuring before arguing.
    Approved
  3. Hana TakedaHead of design · Halden
    The design system shipped on time, and more to the point, people use it. Soren spent as much effort on the teams as on the components.
    Approved
  4. Jonas LindqvistFounder · Loopdocs
    I gave him a vague brief and a hard date. I got a plan in two days, a working build every Friday and no surprises at the end.
    Approved
  5. Amara NwosuProduct lead · Tidewater
    Our analysts stopped exporting data to look at it. A million points, sixty frames a second, and it still works with a keyboard.
    Approved

Questions

The things most teams want to know before we talk. If yours is not here, ask it directly.

Something else?

Replies within one working day

Ask by email
  • I take on one main project at a time and usually book four to six weeks ahead. The status line at the top of the site is kept up to date.

  • Both. I am often the only frontend developer on a small product, and just as often I join an existing team for a few months. For design and backend I work with people I have shipped with before.

  • A fixed range for a defined scope, or a monthly rate for an embed. Every quote lists what is included and the two or three things that could change it.

  • React and TypeScript are where I am fastest. I have shipped with Svelte, Vue and plain web components, and I will tell you early if your stack is one I should not be learning on your budget.

  • Yes. I can build from wireframes and a brand guide, and I make the detailed decisions in the browser where they can be tested. For a full visual identity I bring in a designer.

  • That is most of my work. I start with a short audit so we both know what is there, then follow your conventions unless there is a measured reason to change one.

  • You get the code, the tests, written documentation and a recorded walkthrough. I stay available for questions for thirty days at no charge.

  • Central European time, with a fixed overlap until 18:00 for teams in the Americas. I reply to messages within one working day.

Questions

The things most teams want to know before we talk. If yours is not here, ask it directly.

  • I take on one main project at a time and usually book four to six weeks ahead. The status line at the top of the site is kept up to date.

  • Both. I am often the only frontend developer on a small product, and just as often I join an existing team for a few months. For design and backend I work with people I have shipped with before.

  • A fixed range for a defined scope, or a monthly rate for an embed. Every quote lists what is included and the two or three things that could change it.

  • React and TypeScript are where I am fastest. I have shipped with Svelte, Vue and plain web components, and I will tell you early if your stack is one I should not be learning on your budget.

  • Yes. I can build from wireframes and a brand guide, and I make the detailed decisions in the browser where they can be tested. For a full visual identity I bring in a designer.

  • That is most of my work. I start with a short audit so we both know what is there, then follow your conventions unless there is a measured reason to change one.

  • You get the code, the tests, written documentation and a recorded walkthrough. I stay available for questions for thirty days at no charge.

  • Central European time, with a fixed overlap until 18:00 for teams in the Americas. I reply to messages within one working day.

Something else?

Replies within one working day

Ask by email

Questions

The things most teams want to know before we talk. If yours is not here, ask it directly.

  • I take on one main project at a time and usually book four to six weeks ahead. The status line at the top of the site is kept up to date.

  • Both. I am often the only frontend developer on a small product, and just as often I join an existing team for a few months. For design and backend I work with people I have shipped with before.

  • A fixed range for a defined scope, or a monthly rate for an embed. Every quote lists what is included and the two or three things that could change it.

  • React and TypeScript are where I am fastest. I have shipped with Svelte, Vue and plain web components, and I will tell you early if your stack is one I should not be learning on your budget.

  • Yes. I can build from wireframes and a brand guide, and I make the detailed decisions in the browser where they can be tested. For a full visual identity I bring in a designer.

  • That is most of my work. I start with a short audit so we both know what is there, then follow your conventions unless there is a measured reason to change one.

  • You get the code, the tests, written documentation and a recorded walkthrough. I stay available for questions for thirty days at no charge.

  • Central European time, with a fixed overlap until 18:00 for teams in the Americas. I reply to messages within one working day.

Something else?

Replies within one working day

Ask by email

Start a project

Three quick picks so the first reply is useful. You finish the message on the contact page.

What do you need?

Rough budget

brief.tsdraft, not sent

Brief so far: nothing picked yet

or write to hello@sorenhale.dev

Nothing is sent from this page. Your picks are kept in this browser tab and wait for you on the contact form.

Start a project

Three quick picks so the first reply is useful. You finish the message on the contact page.

What do you need?

Rough budget

brief.tsdraft, not sent

Brief so far: nothing picked yet

or write to hello@sorenhale.dev

Nothing is sent from this page. Your picks are kept in this browser tab and wait for you on the contact form.

Start a project

Three quick picks so the first reply is useful. You finish the message on the contact page.

What do you need?

Rough budget

brief.tsdraft, not sent

Brief so far: nothing picked yet

or write to hello@sorenhale.dev

Nothing is sent from this page. Your picks are kept in this browser tab and wait for you on the contact form.

Footer

Local time, Oslo

Footer

Local time, Oslo

Footer

Local time, Oslo

Create a free website with Framer, the website builder loved by startups, designers and agencies.