Skip to content

Instantly share code, notes, and snippets.

View carlcraig's full-sized avatar

Carl Craig carlcraig

View GitHub Profile
@Rich-Harris
Rich-Harris / service-workers.md
Last active October 28, 2025 04:26
Stuff I wish I'd known sooner about service workers

Stuff I wish I'd known sooner about service workers

I recently had several days of extremely frustrating experiences with service workers. Here are a few things I've since learned which would have made my life much easier but which isn't particularly obvious from most of the blog posts and videos I've seen.

I'll add to this list over time – suggested additions welcome in the comments or via twitter.com/rich_harris.

Use Canary for development instead of Chrome stable

Chrome 51 has some pretty wild behaviour related to console.log in service workers. Canary doesn't, and it has a load of really good service worker related stuff in devtools.

@robertgonzales
robertgonzales / App.jsx
Last active March 26, 2020 15:57
How to make a custom Prompt (using getUserConfirmation) for React Router v4
// use Prompt like normal... magic happens in getUserConfirmation
class App extends Component {
render () {
return (
<Router getUserConfirmation={getUserConfirmation}>
{...}
<Prompt
when={formIsHalfFilledOut}
message="Are you sure you want to leave?"
/>
@unicornware
unicornware / algolia.ts
Last active May 19, 2023 10:57
Jest Mocks - Algolia
import { createWaitablePromise as waitable } from '@algolia/client-common'
import type {
ChunkedBatchResponse,
DeleteResponse,
SearchResponse,
SetSettingsResponse,
Settings
} from '@algolia/client-search'
import type { SearchIndex } from 'algoliasearch'
import type { PlainObject } from 'simplytyped'
@Wallacy
Wallacy / apollo.ts
Last active January 29, 2023 16:33
Apollo Server + Cloudflare Workers
import { ApolloServerBase, Config, gql } from 'apollo-server-core'
export class ApolloServer extends ApolloServerBase {
protected override serverlessFramework(): boolean {
return true
}
public async createHandler() {
await this.ensureStarted()
return async (request: Request) => {