Looks like they did not include the creation of the counter in the program but instead are handling it on the Client side using System Program. Take a look at [the tests](https://github.com/solana-developers/program-examples/blob/d6cd69d8df3eb95966b3d2361ede84529413567a/basics/counter/native/tests/counter.test.ts#L37C8-L43): 

```javascript
const allocIx: TransactionInstruction = SystemProgram.createAccount({
            fromPubkey: payer,
            newAccountPubkey: counter,
            lamports: await connection.getMinimumBalanceForRentExemption(COUNTER_ACCOUNT_SIZE),
            space: COUNTER_ACCOUNT_SIZE,
            programId: PROGRAM_ID
        })
```

This is a little different than how they've implemented [in the anchor example](https://github.com/solana-developers/program-examples/blob/d6cd69d8df3eb95966b3d2361ede84529413567a/basics/counter/anchor/programs/counter_anchor/src/lib.rs#L11-L13), where they've explicitly created an initialize function in the program:

```rust
pub fn initialize_counter(_ctx: Context<InitializeCounter>) -> Result<()> {
    Ok(())
}
```