Performance Optimization Guide

Performance Optimization Guide

Optimize your dApp for Macro's privacy features.

Understanding Macro's Performance

Macro adds minimal overhead:

  • Signing Sandbox: ~50-100ms analysis time per transaction

  • VPN: ~15-25ms added latency on average

  • Fingerprint randomization: Negligible

  • Privacy Profiles: No performance impact

Optimize for Signing Sandbox

Reduce transaction approval time:

Use EIP-712 Typed Data

Faster parsing than raw hex:

// Slower: personal_sign with encoded data
await ethereum.request({
  method: 'personal_sign',
  params: [encodedData, address]
});

// Faster: eth_signTypedData_v4
await ethereum.request({
  method: 'eth_signTypedData_v4',
  params: [address, typedDataObject]
});

Benefit: Macro can parse structured data faster plus better UX.

Verify Contracts on Etherscan

  • Verified contracts get faster ABI decoding

  • Signing Sandbox can show function names

  • Improves user trust and approval speed

Minimize Contract Interactions

  • Batch operations when possible

  • Use multicall patterns

  • Reduce number of approvals required

Optimize Network Requests

Work with VPN routing:

Use CDNs

  • CDN edge nodes reduce latency impact of VPN

  • Choose CDNs with global distribution

Minimize API Calls

  • Batch RPC requests

  • Cache blockchain data client-side

  • Use WebSocket for real-time data (lower overhead)

Optimize RPC Usage

Respect Privacy Profiles

Optimize for profile isolation:

Use localStorage Wisely

  • Data is scoped per profile

  • Don't assume persistence across profiles

  • Check macro_getCurrentProfile on load

Handle Profile Switches

Optimize Asset Loading

Faster page loads:

Lazy Load Images

Minimize Bundle Size

  • Code-split your application

  • Tree-shake unused dependencies

  • Use dynamic imports

Serve Compressed Assets

  • Enable gzip/brotli compression

  • Optimize images (WebP format)

  • Minify JavaScript and CSS

Optimize for Fingerprint Randomization

Work with randomized fingerprints:

Don't Rely on Fingerprinting

  • Never use fingerprinting for authentication

  • Use wallet signatures for identity

  • Don't track users via canvas/WebGL fingerprints

Test with Randomization

  • Test your dApp with canvas randomization enabled

  • Ensure captchas still work

  • Verify charts/visualizations render correctly

Caching Strategies

Reduce repeated lookups:

Cache Token Metadata

Cache User Preferences

Performance Monitoring

Measure your dApp's performance:

Web Vitals

Transaction Timing

Testing on Macro

Performance testing checklist:

  • Test with VPN enabled (adds latency)

  • Test with strict signing policies

  • Test profile switches

  • Test on different networks (mainnet/testnets)

  • Measure signing approval times

  • Check for layout shifts with fingerprint randomization


Fast privacy. Optimize for both.

Last updated