---
title: "Web3 Wallet Development"
canonical: https://wavect.io/services/web3-wallet-development/
language: en
description: "Web3 wallet development: smart accounts, embedded and invisible wallets, MPC key management, and MetaMask Snaps. Non-custodial by default."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

Wallets

# Web3 Wallet Development

From MetaMask-native smart wallets to onboarding where the user never learns the word wallet. We have shipped both.

- MetaMask Native smart-wallet integration built against the Snap sandbox [See the case study](/case-studies/metamask-snap/)
- Invisible Social login and wallet creation on a live marketplace, no crypto jargon shown [See the case study](/case-studies/afoma/)

// 01

## What We Do

The wallet decision determines your conversion rate, your support load, and who is liable when keys are lost. It is worth getting right before you build.

Embedded and Invisible Wallets

Wallet creation behind a social login, for users who are not here for crypto.

- Social login to wallet in one step
- No seed phrase shown to the user
- On-chain primitives behind familiar UX
- Progressive disclosure for users who want the keys

MetaMask Snaps

Extend the wallet your users already have instead of shipping a new one.

- Snap development against the sandbox
- Custom chains and signing flows
- Smart-account features inside MetaMask
- Permissions and review-process handling

Key Management

MPC, smart accounts, or plain EOA, chosen against your actual liability.

- MPC and threshold-signature architectures
- Hardware and platform keychain signers
- Custodial versus non-custodial consequences
- Key rotation and recovery design

Multi-Chain Wallet Applications

Full wallet products across mobile and web.

- Multi-chain account and balance handling
- Transaction simulation before signing
- Token and NFT display that stays fast
- Mobile and browser-extension delivery

Wallet Model Selection

We will map the options against your users before writing code.

- EOA, smart account, MPC, embedded, custodial
- Regulatory consequences of holding keys
- Support-load and recovery cost per model
- Migration path if you pick wrong

// 02

## How we approach wallets

Most wallet projects fail on onboarding, not on cryptography. On [Afoma](/case-studies/afoma/) we layered on-chain primitives behind social login so the user never saw crypto jargon, and the client’s public review notes the speed of delivery. On the [MetaMask Snap](/case-studies/metamask-snap/), with Boba Network’s team, we went the other way and extended the wallet users already trust. Which of those is right depends entirely on who your users are. See also [account abstraction development](/services/account-abstraction-development/) and the [Web3 hub](/services/blockchain/).

// 03

## When you should not build a wallet

Building your own wallet is rarely the right answer. If your users are crypto-native, connect to the wallets they already have and spend the budget on your product instead. If they are not, an embedded wallet from an established provider will usually beat a custom build on both time and risk. Custom wallet work earns its cost when you have an unusual signing model, a chain nobody supports properly, or a UX requirement that off-the-shelf providers cannot meet. Also be honest about custody: the moment you can move user funds, you have taken on a regulatory posture that is expensive to unwind.

// proof

## Proof, not promises

### [MetaMask Snap](/case-studies/metamask-snap/)
- **Status:** Live
- **Outcome:** MetaMask - Native Integration
- **Summary:** Smart wallets with Hybrid Compute, inside the wallet users already trust, built with Boba's team against MetaMask's Snap sandbox.
- **Stack:** Typescript, MetaMask Snaps, Solidity

### [Afoma](/case-studies/afoma/)
- **Status:** Live
- **Outcome:** Web3 Social Login - Live in Production
- **Summary:** Live marketplace, on-chain primitives, no crypto jargon, social login + invisible wallet creation.
- **Stack:** Typescript, Solidity, Ethers.js

### [Scramble Wallet](/case-studies/scramble-wallet/)
- **Status:** Live
- **Outcome:** 50+ - Target User Age
- **Summary:** Multi-browser extension, Tron added, iOS + Android via multiple routes, built on a forked Enkrypt, debt paid down release by …
- **Stack:** VueJS, Typescript, NestJS

These are selected projects, not our full portfolio. We have shipped 75+ products since 2018.

### What clients say

Google

**THE agency to go for blockchain development.** Super experienced and highly professional team. Love to work with them.

Read more →

Richard Leitgeb

Original

For technical questions on blockchain and NFT, I always come back to Kevin. He has familiarized himself very well in this area, and the expertise he brings is certainly essential for projects like these. I can only recommend everyone get in touch with Kevin on these topics." data-quote-original=" **Bei Fragen zu Blockchain und NFT greife ich bei technischen Fragestellungen gerne immer wieder auf Kevin zurück.** Er hat sich hier sehr gut eingearbeitet und die Expertise, die er mitbringt, ist für derartige Projekte mit Sicherheit unerlässlich. Kann deshalb nur jedem empfehlen, sich zu diesen Themen mit Kevin in Verbindung zu setzen." data-original-lang=de>

LinkedIn

**For technical questions on blockchain and NFT, I always come back to Kevin.** He has familiarized himself very well in this area, and the expertise he brings is certainly essential for projects like these. I can only recommend everyone get in touch with Kevin on these topics.

Read more →

Fritz Fahringer Klarheit vor KI

Translated · tap for original

Trustpilot

**Experts in smart contract development.**

Read more →

CJ

Original

Independently rated 4.5/5 on Trustpilot [Read the reviews](https://www.trustpilot.com/review/wavect.io)

[![Clutch Top Web3 Development in Austria 2026 award for Wavect](/img/awards/clutch-top-web3-development-austria-2026_hu_92ea6d2c36d12863.webp) Verified on Clutch · 2026 Top Web3 Development in Austria View our Clutch profile](https://clutch.co/profile/wavect-gmbh) [![Clutch Top Blockchain Company in Austria 2026 award for Wavect](/img/awards/clutch-top-blockchain-company-austria-2026_hu_f3bd0de76b443d6d.webp) Verified on Clutch · 2026 Top Blockchain Company in Austria View our Clutch profile](https://clutch.co/profile/wavect-gmbh)

## FAQs

Honest answers about wallet delivery

### How does the weekly cancellation actually work?

End any week, with one message. No notice period, no exit interview, no fine print. We invoice weekly, so the most you’re ever committed to is the current week.

### What if I'm not blown away by the work?

It’s in your contract: tell us, and we refund that week. No questions, no invoices to dispute, no calls to escalate. The only rule: refunds apply to the most recent week.

### Why don't you track hours?

Because hours are the wrong metric. If we optimize for hours billed, we do not optimize for your outcome. The deal is simpler: every week has a defined result, and we earn the next week by delivering it. You pay for progress against that result, not for a timesheet.

### What does 'expectations detached from reality' mean?

We work with operators, not lottery winners. If a request would require breaking physics, the law, or a third party’s systems, we say so, and if we can’t align, we walk. The guarantee is mutual: you can fire us any week; we can also fire ourselves.

### MPC wallet, smart account, or embedded wallet: which do we need?

Smart accounts give you programmable rules such as sponsorship, session keys and recovery, at the cost of a deployment per user and chain-by-chain support. MPC splits a key across parties and looks like a normal address to every chain, which is why custodial and enterprise products favour it, but recovery depends on the provider. Embedded wallets are the fastest route for non-crypto users and hand most of the responsibility to a vendor. Most consumer products want embedded plus a smart account underneath; most institutional products want MPC.

### Can users sign up without ever seeing a seed phrase?

Yes, and for consumer products they usually should. On [Afoma](/case-studies/afoma/) wallet creation happens behind a social login and the user never sees crypto jargon. The trade-off is where recovery authority sits, so that decision has to be explicit and disclosed rather than hidden.

### Is it cheaper to build a MetaMask Snap than a standalone wallet?

Substantially, and it usually converts better too, because there is no install step and no new trust relationship. A Snap extends MetaMask with custom chains, signing flows or smart-account features. The limits are MetaMask’s sandbox and review process, so it fits when your users already have MetaMask and does not fit when you need full control of the interface.

### Non-custodial or custodial?

Non-custodial unless you have a specific reason and a licence. If you can move user funds you are custodial in substance regardless of how the marketing reads, and that carries regulatory obligations. We default to non-custodial architectures and will tell you plainly when a design has quietly crossed the line.

### What does wallet work cost?

Integrating an existing embedded-wallet provider into a product is typically a few weeks. A MetaMask Snap or a smart-wallet layer on an existing application is larger but bounded. A full multi-chain wallet product with custom key management is infrastructure work, starting around €100k and 3-6 months. We would rather scope you into the smallest of those that actually solves your problem.

// More in

## More in Web3 & Blockchain

### [Web3 & Blockchain](/services/blockchain/)

The hub: dApps, payments, scaling and the chains we ship on. Routes to the capability you actually need.

### [Smart Contract Development](/services/smart-contract-development/)

Solidity and Rust from architecture through mainnet, with third-party audit coordination and monitoring.

### [Account Abstraction](/services/account-abstraction-development/)

ERC-4337 smart accounts, paymasters, session keys and recovery. Three production SDKs behind us.

### [Cross-Chain Bridges](/services/cross-chain-bridge-development/)

We built a six-chain production bridge, which is mostly why we will tell you when not to build one.

### [Zero-Knowledge](/services/zero-knowledge/)

Privacy by cryptographic proof, not policy: ZK identity, private transactions, and ZK rollups.

// Get to know us

## Get to know us

Long-term relationships over quick wins.

[![Blogs](/img/services/gtku_blogs_hu_d7e3f659443e93f9.webp) Read our Blog](/blog/overview/) [![No BS Around Tech Podcast](/img/services/gtku_podcast_hu_aac94ba51d8a6f9f.webp) No BS Around Tech Podcast](/#trust-podcast) [![Image Gallery](/img/services/gtknu_gallery_hu_451025d2d15b7558.webp) Get some Impressions](/#image-gallery)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/verified-claims.json#metamask-snap-native-smart-wallets",
      "@type": "Claim",
      "appearance": {
        "@id": "https://wavect.io/services/web3-wallet-development/#webpage",
        "@type": "WebPage",
        "inLanguage": "en",
        "url": "https://wavect.io/services/web3-wallet-development/"
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "dateModified": "2026-08-04",
      "identifier": "metamask-snap-native-smart-wallets",
      "inLanguage": "en",
      "text": "Wavect engineered a MetaMask Snap inside Boba Network's build, together with their team, bringing Boba Network's account abstraction and Hybrid Compute smart wallets natively into MetaMask."
    },
    {
      "@id": "https://wavect.io/verified-claims.json#afoma-invisible-wallet",
      "@type": "Claim",
      "appearance": {
        "@id": "https://wavect.io/services/web3-wallet-development/#webpage",
        "@type": "WebPage",
        "inLanguage": "en",
        "url": "https://wavect.io/services/web3-wallet-development/"
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "citation": {
        "@type": "WebPage",
        "url": "https://clutch.co/go-to-review/f2290100-9e13-4140-a1b0-0ee301a5fd39/477125"
      },
      "dateModified": "2026-08-04",
      "identifier": "afoma-invisible-wallet",
      "inLanguage": "en",
      "text": "On Afoma, a live marketplace, Wavect layered on-chain primitives behind social login and invisible wallet creation, so the user never sees crypto jargon."
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/services/web3-wallet-development/#service",
      "@type": "Service",
      "areaServed": [
        {
          "@type": "Country",
          "name": "Austria"
        },
        {
          "@type": "Place",
          "name": "Worldwide"
        }
      ],
      "category": "Web3 & Blockchain",
      "description": "Web3 wallet development: smart accounts, embedded and invisible wallets, MPC key management, and MetaMask Snaps. Non-custodial by default.",
      "name": "Web3 Wallet Development",
      "provider": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "serviceType": "Web3 Wallet Development",
      "url": "https://wavect.io/services/web3-wallet-development/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/services/overview/",
          "name": "Services",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/services/blockchain/",
          "name": "Web3 & Blockchain",
          "position": 3
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/services/web3-wallet-development/",
          "name": "Web3 Wallet Development",
          "position": 4
        }
      ]
    },
    {
      "@id": "https://wavect.io/services/web3-wallet-development/#webpage",
      "@type": "WebPage",
      "description": "Web3 wallet development: smart accounts, embedded and invisible wallets, MPC key management, and MetaMask Snaps. Non-custodial by default.",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "mainEntity": {
        "@id": "https://wavect.io/services/web3-wallet-development/#service"
      },
      "name": "Web3 Wallet Development",
      "url": "https://wavect.io/services/web3-wallet-development/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "End any week, with one message. No notice period, no exit interview, no fine print. We invoice weekly, so the most you're ever committed to is the current week."
      },
      "name": "How does the weekly cancellation actually work?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "It's in your contract: tell us, and we refund that week. No questions, no invoices to dispute, no calls to escalate. The only rule: refunds apply to the most recent week."
      },
      "name": "What if I'm not blown away by the work?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Because hours are the wrong metric. If we optimize for hours billed, we do not optimize for your outcome. The deal is simpler: every week has a defined result, and we earn the next week by delivering it. You pay for progress against that result, not for a timesheet."
      },
      "name": "Why don't you track hours?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "We work with operators, not lottery winners. If a request would require breaking physics, the law, or a third party's systems, we say so, and if we can't align, we walk. The guarantee is mutual: you can fire us any week; we can also fire ourselves."
      },
      "name": "What does 'expectations detached from reality' mean?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Smart accounts give you programmable rules such as sponsorship, session keys and recovery, at the cost of a deployment per user and chain-by-chain support. MPC splits a key across parties and looks like a normal address to every chain, which is why custodial and enterprise products favour it, but recovery depends on the provider. Embedded wallets are the fastest route for non-crypto users and hand most of the responsibility to a vendor. Most consumer products want embedded plus a smart account underneath; most institutional products want MPC."
      },
      "name": "MPC wallet, smart account, or embedded wallet: which do we need?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, and for consumer products they usually should. On Afoma wallet creation happens behind a social login and the user never sees crypto jargon. The trade-off is where recovery authority sits, so that decision has to be explicit and disclosed rather than hidden."
      },
      "name": "Can users sign up without ever seeing a seed phrase?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Substantially, and it usually converts better too, because there is no install step and no new trust relationship. A Snap extends MetaMask with custom chains, signing flows or smart-account features. The limits are MetaMask's sandbox and review process, so it fits when your users already have MetaMask and does not fit when you need full control of the interface."
      },
      "name": "Is it cheaper to build a MetaMask Snap than a standalone wallet?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Non-custodial unless you have a specific reason and a licence. If you can move user funds you are custodial in substance regardless of how the marketing reads, and that carries regulatory obligations. We default to non-custodial architectures and will tell you plainly when a design has quietly crossed the line."
      },
      "name": "Non-custodial or custodial?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Integrating an existing embedded-wallet provider into a product is typically a few weeks. A MetaMask Snap or a smart-wallet layer on an existing application is larger but bounded. A full multi-chain wallet product with custom key management is infrastructure work, starting around €100k and 3-6 months. We would rather scope you into the smallest of those that actually solves your problem."
      },
      "name": "What does wallet work cost?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
